Pic Eusart behaviour

Feb 28, 2008 0 Replies

I'm working with a PIC2455, trying to get it to send a byte on the EUSART every few milliseconds.



What is happening is I get a constant pulse train out, rather than



9bits-pause-9bits. I know the timer is working by scoping the A1 pin. I thought it was because I was sending 0x55 at first, but I still get a pulse train even when loading 0x00 into TXREG.

It's reassurring that I'm getting something other than a flatline, but still...



What am I overlooking?



#include



config LVP = OFF config XINST = OFF config CPUDIV = OSC1_PLL2 config PLLDIV = 12 ;12 config WDT = OFF config MCLRE = OFF config DEBUG = OFF config PBADEN = ON config LPT1OSC = OFF config FOSC = INTOSCIO_EC



cblock 0x20 TimerVal RESULTHI RESULTLO endc



org 0 goto Start



Start



movlw 0x09 ;'00001001' movwf TRISA ; BSF TRISA,0 ;Set RA0 to ADC input ; BCF TRISA,1 ;Set RA1 to output ; bsf TRISA,3 ;set A3 for input - pushbutton



movlw 0xFF ; make PORTB all input movwf TRISB



;setup PORTC for EUSART out CLRF TRISC BSF TRISC, 6



;setup ADC clrf ADCON0 movlw 0x0E movwf ADCON1 movlw 0xAF movwf ADCON2



;set timer1 for 2ms operation clrf T1CON clrf TMR1H



;set EUSART for Transmit movlw b'11110111' ;SENDB=0 movwf TXSTA



clrf SPBRGH movlw 0x01 ;set baud control register for 117.6k movwf SPBRG ; pg. 244, 4MHz



clrf BAUDCON bsf BAUDCON, BRG16 ;baud rate bit=high



movlw 0x90 movwf RCSTA



; more timer stuff movlw 0x00 ;set timer interval movwf TimerVal



; activate timer movwf TMR1L movlw b'10000001' movwf T1CON



TransmitLoop BTFSS PIR1, TMR1IF ; wait for timer to go off goto $-2 setf TMR1H decf TMR1H movf TimerVal, w movwf TMR1L ;reset timer for next countdown bcf PIR1, TMR1IF



; pulse to trigger scope BSF PORTA, 1 ; BCF PORTA, 1



movlw 0x00;55 btfsc RESULTHI, 3 movlw 0x00



BSF TXSTA, TX9D ;set/clear 9th bit before updating TXREG! movwf TXREG goto TransmitLoop end


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required