Hallo,
ich habe Probleme beim Senden vom PIC18F4520 an den PC über die serielle
Schnittstelle.
Beim Debuggen habe ich festgestellt, dass das Bit TRMT nicht wieder auf
1 gesetzt wird, das Senderegister also immer voll ist. Folglich sende
ich wohl nicht...
hier mein code:
1 | #include "p18cxxx.h"
|
2 |
|
3 | /** Configuration
|
4 | ********************************************************/
|
5 | #pragma config OSC = HS // 4MHz
|
6 | #pragma config PWRT = OFF
|
7 | #pragma config WDT = OFF // Watchdog Timer
|
8 | #pragma config LVP = OFF // Low Voltage ICSP
|
9 |
|
10 |
|
11 | void wait(void);
|
12 |
|
13 | int main(void)
|
14 | {
|
15 | /** USART Config
|
16 | /********************************************************************/
|
17 | /* RCSTA */
|
18 | RCSTAbits.SPEN = 1; // enables single receive
|
19 | // RCSTAbits.CREN = 1;
|
20 |
|
21 | /* TXTSA */
|
22 | TXSTAbits.TX9 = 0; // 8 bit
|
23 | TXSTAbits.TXEN = 1; // transmit enable
|
24 | TXSTAbits.SYNC = 0; // async
|
25 | TXSTAbits.BRGH = 1; // high speed
|
26 |
|
27 |
|
28 | /* BAUDCON */
|
29 | BAUDCONbits.BRG16 = 1; // 16-bit BRG
|
30 |
|
31 | /* SPBRG */
|
32 | SPBRG = 8; // baud rate is 111.111
|
33 | SPBRGH = 0; // not necessary
|
34 |
|
35 |
|
36 | /** PORTS Config
|
37 | /********************************************************************/
|
38 | // TRISC = 0xFF; // RC6-Tx, RC7-Rx
|
39 | TRISCbits.TRISC6 = 1;
|
40 | TRISCbits.TRISC7 = 1;
|
41 |
|
42 |
|
43 | /** MAIN
|
44 | /********************************************************************/
|
45 |
|
46 | while(1)
|
47 | {
|
48 | TXREG = 0x55;
|
49 | while(!TXSTAbits.TRMT );
|
50 | }
|
51 | }
|
Im Hyperterminal habe ich 115200 als Baud-Rate; keine FS.
Seht ihr den Fehler?
Grüße, Mirco