AVR Butterfly USART Kommunikation

Gast #1485633
Hallo!

Ich möchte gerne eine USART - Kommunikation zwischen meinem PC und 
meinem AVR Butterfly aufbauen. Leider funktioniert absolut nichts.

Die Initialisierung habe ich in Anlehnung an das AVR Demoprogramm 
erstellt.
1
void USART_Init(unsigned int baudrate)
2
{
3
    // Set baud rate
4
    UBRR0H = (unsigned char)(baudrate>>8);
5
    UBRR0L = (unsigned char)baudrate;
6

7
    // Enable 2x speed
8
    UCSR0A = (1<<U2X0);
9

10
    // Enable receiver and transmitter
11
    UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(0<<RXCIE0)|(0<<UDRIE0);
12

13
    // Async. mode, 8N1
14
    UCSR0C = (0<<UMSEL0)|(0<<UPM00)|(0<<USBS0)|(3<<UCSZ00)|(0<<UCPOL0);
15
}

und das Hauptprogramm:
1
int main()
2
{
3

4
 Init();
5
 USART_Init(12);
6

7
  while(1)
8
  {
9
    Usart_Tx('a');
10
    PORTD=~PORTD;
11
    _delay_ms(50);
12
  }
13

14
 return 0;
15
}

Im Prinzip soll das Programm in gewissen Zeitabständen ein "a" über die 
USART an den PC senden und dann PORT D toggeln (um mir optisch zu 
zeigen, dass der Buchstabe versandt wurde).

Das komische ist, dass ich am Terminal GAR nichts empfange, auch keine 
fehlerhaften Zeichen (was ja bei fehlerhafter Initialisierung bei USART 
öfter mal vorkommen kann), aber es kommt einfach NICHTS an.
Ich komm einfach nicht dahinter.

Ich habe wenig erfahrung mit dem Butterfly, muss ich noch irgendwas 
beachten bei der USART Kommunikation?

Programmiert wird das Butterfly übrigens mit dem STK 500 über ISP.

Danke,
Philipp
>     // Enable receiver and transmitter
>     UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(0<<RXCIE0)|(0<<UDRIE0);

Du schaltest Interrupt für Sender und Empfänger ein.  Gibt es dafür auch 
die passenden Service-Routinen?  Gezeigt hast Du keine.  Dann wäre das 
ein zuverlässiger Aufhänger.
Gast
hmm...
ich habe das mal versucht, aber ich komme einfach auf keinen grünen 
Zweig.

Ich habe mir heute das TX Signal auf einem Oszilloskop angesehen und ich 
denke, dass ich ein Pegelproblem habe.

Auf dem TX Pin habe ich gegen Ground gemessen einen Highpegel von 5V, 
einen Low Pegel von ca. 2,3V. Ich denke, dass der DC Anteil beim LOW 
Pegel das Problem verursacht?

Diese Verschiebung kann meiner Meinung nach eigentlich nur von der 
Versorgungsspannung kommen. Normalerweise wird das Butterfly ja mit 
einer Batterie versorgt, im Moment versorge ich allerdings mit 5V über 
den ISP6PIN Stecker des STK500.

Wie kann ich dieses Problem lösen? ich komm nicht dahinter.

Danke,
Philipp
Gast
ja, ich habe RX und TX des Butterfly auf den RS232 Spare des STK 
geschalten.

Ich habe gelesen, dass es kein Problem sei, das Butterfly über ISP mit 
5V zu versorgen, oder befinde ich mich auf dem Holzweg?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.