www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Butterfly USART Kommunikation


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
void USART_Init(unsigned int baudrate)
{
    // Set baud rate
    UBRR0H = (unsigned char)(baudrate>>8);
    UBRR0L = (unsigned char)baudrate;

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

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

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

und das Hauptprogramm:
int main()
{

 Init();
 USART_Init(12);

  while(1)
  {
    Usart_Tx('a');
    PORTD=~PORTD;
    _delay_ms(50);
  }

 return 0;
}

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

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Butterfly laeuft am internen RC Oszillator. Wenn man den nicht mit 
dem 32k Quarz abgleicht ist wahrscheinlich nichts.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm...
Sonstige Funktionen (wie z.b. Zugriff auf externes RAM) funktionieren 
einwandfrei, nur die USART eben nicht.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hazeh Zimmerer schrieb:
>>     // Enable receiver and transmitter
>>     UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(0<<RXCIE0)|(0<<UDRIE0);
>
> Du schaltest Interrupt für Sender und Empfänger ein.

Nö, macht er nicht.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt.  Da war ich zu schnell.

Autor: Daniel B. (dbuergin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir hat damals zuerst die Verkabelung nicht gepasst, habe die
USART PINs auf dem Butterfly verwechselt.
Dannach habe ich es mit dem folgenden Paket:

http://www.siwawi.arubi.uni-kl.de/avr_projects/bf_...

ohne Probleme zum laufen gebracht.

Daniel

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der RS-Treiber des Butterfly funktioniert nur, wenn der Sender der 
Gegenseite ebenfalls angeschlossen ist, denn von dort bezieht er seine 
negative Spannung.  Hast Du den angeschlossen?

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt denn am Empfänger des Butterfly auf RS232-Seite eine negative 
Spannung an?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.