Hello all,
I have been searching for a solution to this problem and found some answers that sounded promising but ended up not doing the trick.
As some others have posted - I too am having trouble with the serout timing of the 12f683. I'm sending to a MAX232 and receiving with a PC running serial terminal. If I use a 16F877A it works fine, so I think the MAX is OK. Some Hex characters (below $08 and above $FC) work fine, but the ones in between are not the correct code. For instance I send $13 and the receiver gets $35. The data seems very consistent, just mostly wrong. I would prefer to not use the external resonator (behavior is the same using the internal 8MHZ clock (with OSCCON %01110000), but I wanted to try an external resonator to just to see if it would help - it did not.), but this code shows it with a external resonator.
Code:
Include "modedefs.bas" ' Mode definitions for Serout
' Define ADCIN parameters
Define ADC_BITS 8 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 200 ' Set sampling time in uS
'config_hs_osc 'do I need this?
define osc 8
ANSEL =%00110100 ' Set Internal clock, Set AN2 analog, rest digital
CMCON0 =%00000111 'analog comparator off
ADCON0 =%10001001 'right justify, channel 2 analog, a/d converter on
OSCCON =%01111001 '8 mhz external resonator
OSCTUNE=%00000000 'varied between %00000011 and %00011100 no help
adval var byte ' Create adval to store result
loop:
ADCIN 2, adval ' Read channel 2 to adval
pause 500
serout2 GPIO.0, 396, [$13] 'receiver is seeing $35
serout GPIO.0, T2400, [$13] 'same thing
Goto loop ' Do it forever
End
I have seen in some of the other posts about tuning the ocillator, that doesn't seem to help. I tried varying the baud around 396 (I'm doing 2400 baud - driven true), no help.
I think it's a timing issue, but I don't know what else to change, any ideas?
Thanks!
Bookmarks