UART mit zwei Mega16

Gast #452131
Hallo!

Ich habe wieder mal ein Problem ;)

Ich will zwei Mega 16 über USART verbinden, dabei soll einer nur senden 
und der andere nur empfangen, also nichts aufregendes.
Da das Neuland für mich ist, habe ich ein codebeispiel aus dem tut, das 
ehemals fürn mega8 geschrieben war für meine zwecke angepasst.

Leider funktioniert die kommunikation bzw. die ausgabe noch nicht.
Das angehängte file ist der code für den empfänger, vielleicht kann ja 
jemand mal kurz drüberschaun, und sagen ob es von empfängerseite her 
klappen müsste oder nicht. Dann kann ich eines ausschließen und auf 
fehlersuche gehen.


Manuel
Angehängte Dateien:
Gast #452359
hm, habe irgendwie auch keine Lust mehr heute abend.
PortA benutzt -> AVcc und Agnd angeschlossen?

Ansonsten ist meist nicht so schlau, gleich 2 neue Systeme einzusetzen. 
Nehmen sie sich einen MAX232, beschalten ihn mit 4 Kondensatoren, 
schliessen sie einen TTL-Eingang eines Transmitters an die 
Übertragungsleitung, schliessen sie den entsprechenden RS232-Ausgang an 
den RxD-Eingang ihrer seriellen PC-Schnittstelle, starten sie 
Hyperterminal (oder was besseres), schauen sie auf den Bildschirm, 
überweisen sie mir DM 4000.
Gast #452369
DM gibts zum glück nichtmehr ;)

Aber danke für die Hilfe, werde erstmal AVcc und Agnd anschliesen, und 
wenns dann nicht geht, werde ichs erstmal mit dem pc versuchen.

Manuel
Gast #452902
Ok, von der Seite des Senders klappt alles wunderbar. Kriege die Zeichen 
genauso aufm Terminal wie ich sie sende.

Am Empfänger sind AVcc und Agnd angeschlossen.
Zuerst dachte ich, das beim empfänger irgendwas mit dem RXC interupt 
nicht hinhaut, also habe ich den code vom int. mal mit ner schleife in 
die main. ging allerdings auch nicht. Ich betreibe beide Controller mit 
nem ext. 16 Mhz quarz und die Spannung ist bei beiden die gleiche.
Kann es sein, das es irgendwie Hardwarebedingt ist?
#452909
>    sbi UCSRA, RXC

Lass mal das RXC Bit in Ruhe. Das bedient der µC
und nicht dein Programm. Dein Pgm sollte das Ding
maximal abfragen. Löschen könnte auch noch akzeptabel
sein. Aber setzen, da krieg ich Bauchweh.

Wird der Interrupt aufgerufen?
Hast du mal probiert, aus der Interrupt
Funktion das Zeichen einfach mal zum Sender
zurückzuschicken?
Gast #452931
Nein, der interrupt wird nicht aufgerufen, ich habe zwar nicht versucht 
es zurückzuschicken, aber ich habe in die interrupt routine mal 0xFF auf 
port A ausgegeben, und die waren auf low.

Mist, ich glaube ich habe den fehler:
.equ CLOCK = 1000000

Der Mega läuft jedoch mit nem 16 Mhz quarz.
Das kommt von copy and paste...

Trozdem danke für die hilfe, und wie das mit dem RXC bit läuft ist mir 
nun auch klar...

MfG
Manuel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.