AVR Butterfly USART Kommunikation

Gast #1485633
Lesenswert?

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
#1485704
Lesenswert?

>     // 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 #1494002
Lesenswert?

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 #1494071
Lesenswert?

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

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