Hi,
ich versuche eine Verbindung zum PC über RS232 herzustellen, aber die
Daten, die ankommen stimmen nicht. Es muss irgendwas an der Baudrate
nicht stimmen, aber ich komme nicht drauf, was es ist. Hier meine
Konfiguration:
µC: PIC18F4680 mit 10Mhz Quarz, Fuses: OSC=HS, WDT=OFF, LVP=OFF
1 | void usart_init(unsigned long baud) {
|
2 | char buffer;
|
3 | SPBRG = CLOCK/(16ul * baud) - 1;
|
4 | TXSTA = 0b00100100; //TX ein, hohe Baudrate
|
5 | TRISCbits.TRISC7 = 1;
|
6 | TRISCbits.TRISC6 = 1;
|
7 | RCSTA = 0b10010000; //USART an, continuous receive an
|
8 | buffer = RCREG; //Empfangsbuffer leeren
|
9 | }
|
Meine Sende-Routine:
1 | extern void usart_putc(unsigned char c) {
|
2 | while(!PIR1bits.TXIF);
|
3 | TXREG = c;
|
4 | }
|
und
1 | #define CLOCK 10000000ul
|
2 | void main() {
|
3 | usart_init(9600);
|
4 | while(1) {
|
5 | usart_putc("c");
|
6 | }
|
7 | }
|
Habt ihr eine Ahnung, wo der Fehler liegen kann? Die Daten werden per
usb-seriell dongle mit FTDI chip übertragen. Als Terminal nehme ich
HTerm.
Danke und vG
STeff