Forum: Mikrocontroller und Digitale Elektronik UART mit zwei Mega16


von Manuel (Gast)


Angehängte Dateien:

Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von Manuel (Gast)


Lesenswert?

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

von Manuel (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

>    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?

von Manuel (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.