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
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.
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
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?
> 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.