Servus, habe folgendes Problem. Mein USART läuft RX/TX Interrupts, beim
Senden von mehreren Symbolen, klappt leider immer nur eines. Ich kann ja
nicht die Abfrage
1 | while(!(IFG2 & UTXIFG1));
|
machen wann ich was ins TX Sende Register schreiben kann, denn das
funktioniert bei INterrupts ja nicht.
Daher sende ich über meine funktion SendUSART:
1 | void SendUSART1(char* str) // einen string über die serielle schnittstelle (USART1) senden
|
2 | {
|
3 | for(int zaehl = 0; zaehl < sizeof str; zaehl++)
|
4 | {
|
5 | send_tx[zaehl] = str[zaehl];
|
6 | }
|
7 | TXBUF1 = send_tx[0];
|
8 | }
|
Und zähle dann in meiner interrupt senderoutine das array durch, und
lasse den ersten wert weg. leider funktioniert das nicht ?!?
1 | #pragma vector=UART1TX_VECTOR //Transmitting - Interrupt-Routine
|
2 | __interrupt void usart1_tx (void)
|
3 | {
|
4 | for(int zaehl = 1; zaehl < sizeof send_tx; zaehl++)
|
5 | {
|
6 | TXBUF1 = send_tx[zaehl];
|
7 | }
|
8 | }
|