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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.