Many thanks, I will run through these and see. These seem tricky beasts to set up and I am sure I have probably not set something I need to. Will report back! Cheers Pete
Many thanks, I will run through these and see. These seem tricky beasts to set up and I am sure I have probably not set something I need to. Will report back! Cheers Pete
I now have the code below. The serial data appears to come out at intervals of one second but is complete garbage still. Replacing the PIC with an appropriately configured 12F683 all functions fine. I am wondering if anyone else can replicate a serout2 on the 12F1840 and see if its the same. If the code looks good I am wondering if its a problem with PBP?. Cheers Pete
Code:: #CONFIG ;----- CONFIG1 Options -------------------------------------------------- __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON ;----- CONFIG2 Options -------------------------------------------------- __config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF #ENDCONFIG ' ************************************************** ****************** ' SYSTEM INITIALIZATION ' ************************************************** ****************** clear 'PORTA = %00000000 TRISA = %00001101 ' Make A0,A2,A3 inputs,A1,A4,A5 outputs OSCCON = %11110000 'PLL ENABLED,8Mhz,FSOSC<2:0> OSCTUNE = %00000000 ' Internal osc Adjustment WHILE !OSCSTAT.3 ' Wait for stable OSC ... WEND INTCON = %00000000 'CLEAR GIE,PEIE,TMR0IE,INTE,RBIE,TMR0IF,INTF,RBIF PIE1 = %00000000 'CLEAR ALL INTERRUPT ENABLE BITS PIR1 = %00000000 'CLEAR ALL INTERRUPT FLAGS PIE2 = %00000000 'CLEAR ALL INTERRUPT ENABLE BITS PIR2 = %00000000 'CLEAR ALL INTERRUPT FLAGS APFCON = %00000000 'ALL DEFAULTS ANSELA = %00000000 'Select all digital CPSCON0 = %11001100 'ENABLE CAP SENSE,DAC/FVR,HIGH RANGE WPUA = %00000000 'weak pull ups disabled ADCON0 = %00000000 'CHS2:0,GO/DONE,ADOFF ADCON1 = %11100000 'RIGHT JUSTIFIED,FOSC/64,VSS,VDD SRCON0 = %00000000 SRCON1 = %00000000 CM1CON0 = %00000000 'CLEAR/DISABLE COMPARATOR CM1CON1 = %00000000 'CLEAR/DISABLE COMPARATOR CMOUT = %00000000 'DISABLE OUTPUT REGISTER DACCON0 = %11001000 'ENABLE DAC,ENABLE POS REFERENCE,SOURCE IS FVR DACCON1 = %00001000 'SET FOR 1/4 SCALE (8) ~ 1.024 FVRCON = %10001100 'ENABLE VOLTAGE REFERENCE,4,096 OPTION_REG = %00000000 'INTEDG,T0CS,T0SE,PSA,PS T1CON = %11000001 'CAPOSC INPUT,PRESCALER 1/1,START TIMER 1 T1GCON = %00000000 'NO GATE CONTROL T2CON = %00000000 'POSTSCALER 1/1,STOP,PRESCALER 1 TMR2 = 0 'CLEAR TMR2 MODULE REGISTER PR2 = 255 'SET PERIOD ((((1 / 32,000,000)*4) * 1 PRESCALE) * (1+255 PR2)) = 31.25 KHZ. CCP1CON = %00000000 'PLACE CCP1 INTO DISABLE MODE CCPR1L = $00 'CLEAR CCP1 LOWER 8 BITS CCPR1H = $00 'CLEAR CCP1 UPPER 2 BITS PSTR1CON = %00000001'DEFAULT FVRCON = 0 'Fixed voltage reference disabled DEFINE OSC 32 initialise: serout2 PORTA.5,16468,["Waiting for X200",13,10] pause 1000 goto initialise
Last edited by Archangel; - 14th February 2015 at 10:13.
I guess SEROUT2 has changed for PBP3, because in PBP 2.6, the number 16468 is definitely wrong.
Anyway, are you seeing any characters correctly? If so, you may need to put a pause between characters. I needed to do this with the 1840 talking to some devices.
The clock may also be slightly off, causing some characters to get messed up.
According to the manual 16468 would be 9600, driven, inverted, no parity. Bit 15 is set which means driven, bit 14 says inverted, bit 13 says no parity. The rest of the bits says 84 which according to the formuala (1000000 / baud - 20) should result in 9600 baud.
/Henrik.
Yes 9600 inverted and the same line works correctly on other PIC types I have tried, its only with the 12F1840 it doesnt
if you cant check clock with frequency meter.......... add in loop once per second (on serout) increment or decrement osctune to see if characters come in view then try to figure about how far off and in what direction (raise/lower freq)
amgen
Try Turning off the fail safe clock monitor, if I understand correctly it monitors an EXTERNAL clock. . .
I would TRY altering bit 1 in OSCON just to see if it has any effect . . .
I would add to config1
_IESO_OFF ; Internal/External Switchover mode is disabled
and I would disable WDT while troubleshooting at least once to judge if it has any effect.
Oh yes, I would make a blinky program to test my configs without any serouts . . . a stopwatch using a blinky will give you a rough idea as to whether or not you are running at expected OSC speed.
Last edited by Archangel; - 12th February 2015 at 21:15.
If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
.
Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
.
There simply is no "Happy Spam" If you do it you will disappear from this forum.
Bookmarks