Hallo,
ich benutze das myAVR MK2 Board über USB. Über die UART-Schnittstelle
des µC habe ich ein GSM-Modul angeschlossen. Der Code sieht so aus,
dass der µC einfach nur zu Testzwecken erstmal den String "Angekommen"
sendet. Über ein Pegelwandler habe ich mich einfach an die
Tramitter-Leitung des µC gehangen, um sehen ob was passiert.
Komischerweise bekomme ich "Angekommen" duzende mal, also
"AngekommenAngekommenAngekommenAngekommen...". Jetzt ist die Frage,
warum kommt die so oft ??? Ich denke, dass es nicht an der Software
liegt. Wenn ich den Pegelwandler anstelle des µC an der
Transmitter-Leitung des GSM-Modul hänge, bekomme ich seine gesendetetn
Strings auch mehrfach, obwohl das Geräte nur einmal sendet.
Woran kann das liegen ?
1 | #define F_CPU 3686400 //Taktfrquenz
|
2 | #define BAUD 19200 //einstellte Baudrate
|
3 | //------------------------
|
4 | #include <avr\io.h> //zur Deklaration der Ports
|
5 | #include <ctype.h> //zur Verwendung von toupper
|
6 | #include "D:\Programmieren\Mikrocontroller\AVR\Header\uart.h"
|
7 | #include "D:\Programmieren\Mikrocontroller\AVR\Header\interrupt.h"
|
8 | //----------------------------------------------------------------------
|
9 | void initPorts();
|
10 | //----------------------------------------------------------------------
|
11 | void initPorts()
|
12 | {
|
13 | //Ausgänge PORT B deklarien
|
14 | DDRB = (1<< PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
|
15 | }
|
16 |
|
17 | ISR(USART_RXC_vect) //UART-Receive Interrupt-Routine
|
18 | {
|
19 | PORTB |= (1 << PB0); //zu Testzwecken
|
20 | char data = 0;
|
21 | data = getChar(); //Zeichen holen
|
22 | data = toupper(data); //in große Zeichen umwandeln
|
23 | //putChar(data); //zu Testzwecken
|
24 | putString("Angekommen"); //zu Testzwecken
|
25 | }
|
26 | //----------------------------------------------------------------------
|
27 | main() //Hauptschleife
|
28 | {
|
29 | initPorts();
|
30 | initUART();
|
31 | initInterrupt();
|
32 |
|
33 | do
|
34 | {
|
35 | //putString("Hallo AVR ");
|
36 | }
|
37 | while (true);
|
38 | }
|