mikrocontroller.net

Forum: Compiler & IDEs RS-485 Empfang - seltsame Probleme


Autor: Christian S. (doubleq)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen RS-485-Empfänger aufgebaut (SN75176 an ATmega16).
Die Schaltung läuft einwandfrei - bis ich an den Bus ein Datensignal 
anlege. Dann geht plötzlich überhaupt nix mehr.
Initialisiert wird die Schnittstelle mit

void init_USART(void){
  UBRRL  = USART_BAUD(F_CPU);
  UBRRH  = 0;
  UCSRC  = (3<<UCSZ0);
  UDR    = 0;
  UCSRA  = 0;
  UCSRB  = (1<<RXCIE)|(1<<RXEN);
}

Mache ich diese Initialisierung nicht läuft alles auch nach anstöpseln 
eines Signals - es scheint also ein programmiertechnisches Problem zu 
sein.

Meine Interrupt-Routine [SIGNAL (SIG_USART0_RX)] scheint desweiteren 
auch bei initialisierter Schnittstelle nicht ausgeführt zu 
werden...sieht da jemand anhand dieser Daten schon einen elementaren 
Fehler?
Viele Grüße

Christian

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind die Interrupt-Vektoren vorhanden?

Hast Du den richtigen ATmega im Make eingestellt?
Die IR-Vektoren sind unterschiedlich bei den diversen ATmegas.

Gruß, Stefan

Autor: Christian S. (doubleq)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupt-Vektoren - gute Frage. Was hilft mir da weiter um das 
festzustellen? Das Datenblatt vom ATmega16? Oder hat das eher was mit 
dem AVR-GCC zu tun?

Richtiger ATmega im Make ist eingestellt. Das war mir noch vor meinem 
Posting eingefallen das mal zu prüfen.

Gruß Christian

Autor: Christian S. (doubleq)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

Danke! Es waren die Vektoren die schlicht falsch waren. Der Richtige ist 
"SIG_UART_RECV". Und dann tuts auch :)

Viele Grüße Christian

...der jetzt doch noch beruhigt schlafen gehen kann

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> UDR    = 0;
Was soll das denn bewirken?

Vor allem in der Initialisierung.
Lass es einfach weg. UDR (einfach mal so) zu beschreiben, kann 
gefährlich sein.

>Oder hat das eher was mit dem AVR-GCC zu tun?

Die werden in der libc beschrieben (sollte auf deinem Rechner als pdf 
oder so vorhanden sein).
Übrigens ist "SIGNAL" abgekündigt und durch "ISR" ersetzt.

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.