Strange Behavior 12F1822


Closed Thread
Results 1 to 11 of 11

Hybrid View

  1. #1
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    nobner, that is in this line of code?
    OSCCON = 110000

    Apparently when copying text It did not allow the correct sequence to be copied. Look at the embeded code sequence at the line where you are setting OSCCON.
    Last edited by Dave; - 31st January 2012 at 11:43. Reason: copy and paste not working...
    Dave Purola,
    N8NTA
    EN82fn

  2. #2
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Quote Originally Posted by Dave View Post
    nobner, that is in this line of code?
    OSCCON = 110000

    Apparently when copying text It did not allow the correct sequence to be copied. Look at the embeded code sequence at the line where you are setting OSCCON.
    It is something with the system here. Sometimes percent sign, %, disappears in code block.

    Norbert has it correct in code block.

    I guess it will be fixed soon.
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,621


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Hi,

    This sounds like the classic RMW issue.
    Instead of aliasing your LEDn variables to the PORTA register, try alias them to the LATA register and see what happens.
    Do a search for read modify write if you don't know what RMW means.

    /Henrik.

  4. #4
    Join Date
    Jan 2009
    Posts
    17


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Hello,
    did a wrong measurement yesterday.
    Only Ports RA0 and RA2 have the spikes.
    All other ports are working correct at 16MHz and 32MHz.
    I added DEFINE OSC 32 - nothing changed.
    I replaced the aliases for the LED with direct ports in the programm (PORTA.0=1) - nothing changed.
    Now i'll search for RMW as recommended.

  5. #5
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,621


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Hi,
    Replacing the alias with direct port adress doesn't make any difference. What I suggested was to write to the LAT register instead of the PORT register, ie:
    LATA.0=1 instead of PORTA.0=1
    or created the alias pointing on the LAT register instead of the PORT regsiter:
    LED1 VAR LATA.0 instead of LED1 VAR PORTA.0

  6. #6
    Join Date
    Jan 2009
    Posts
    17


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Hi Henrik,
    thank you for your great help, writing the LAT register did the job. Signals are perfect now.
    I also found now a second solution for the problem - using the "high porta.0" and "low porta.0" works also.
    Thank you very much,
    best regards
    Norbert

  7. #7
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,621


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Hi,
    HIGH PORTB.0 works because it takes longer to execute than PORTB.0=1. This is because it also sets the TRIS register each time they executes.
    In this case the extra delay introduced by the inherit write to TRIS was enough to allow the voltage on the pin to rise above the threshold within time to avoid the RMW issue. But there's no guarantee it'll work the next time as it depends on the oscillator speed (as you've noticed), load on the pin, PCB trace capacitance and so on. For devices which have both a PORT and a LAT register you really should write to LAT to avoid these kind of RMW issues.

    Good luck!
    /Henrik

  8. #8
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default Re: Strange Behavior 12F1822

    Quote Originally Posted by nobner View Post
    Hi Henrik,
    thank you for your great help, writing the LAT register did the job. Signals are perfect now.
    I also found now a second solution for the problem - using the "high porta.0" and "low porta.0" works also.
    Thank you very much,
    best regards
    Norbert

    Norbert,

    So, your code is working as expected without having DEFINE OSC X in your code block?


    If you are using 32MHz or 16 MHz or 8Mhz you need to tell the compiler at what speed it is running.
    Otherwise, it will compile for 4Mhz.

    For High and Low commands, it may not reflect the difference;
    But, if you are using PWM commands especially something like MIBAM, there will be serious difference.

    For example, if you set your OSCCON register to 8Mhz and enable PLL (that gives 32Mhz), as you did, but do not have DEFINE OSC 32 , the chip will run at 32Mhz, but the compiler will compile your code for 4Mhz as default.

    If I am wrong with anything with my sayings here, someone please correct me.
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts