Mehrfachantwort über UART

OP #2398818
Lesenswert?

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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren