Hallo, Ich hab hier einen AT90S8515 in einem STK500, den ich mit dem AVR Studio 4 programmiere. Jetzt wollte ich mit dem UART spielen (siehe angehaengter Code, falls das eine Rolle spielt). Kurze Zusammenfassung, was das Programm tun sollte: Interrupt-Handler fuer UART Receive, dieser schreibt das Byte auf PORTB (8 LEDs) und sendet es auch zurueck an den UART. Eigentlich hab ich erwartet, dass (1) die LEDs ein wenig flackern wuerden und (2) ich im entsprechenden Programm am angeschlossenen Computer (sowohl HyperTerminal als auch MTTY probiert) die eingegebenen Zeichen wieder zu sehen bekomme. Das STK500 ist bei der Programmausfuehrung mit dem mitgelieferten seriellen Kabel am Computer angeschlossen, selbstverstaendlich der RS232 Spare Port. Habe den am Board auf mit PD0 und PD1 verbunden. Da mir sonst nichts einfallt, vermute ich also, dass ich mich bei den computerseitigen Einstellungen vertan habe. Was sollte ich da bei Parity, Stop Bits und Flow Control eingeben? Ich freue mich auf Eure Hinweise und Ratschlaege :) Danke schon einmal und schoene Gruesse, johannes
Verbinde Pin 7 und 8 des COM Ports (am PC), außerdem Pin 2 und 3 Jetzt müsste der gesendete Wert wieder empfangen werden. Standarteinstellungen: Kein Parity, 1 StopBit, kein Flow Control
Hallo Benedikt, Dank Dir fuer Deine Antwort. Allerdings bin ich mir nicht ganz im Klaren darueber, was Du meinst. Ich habe ja ein fertig konfektioniertes Kabel zwischen PC und STK500, das (lt. Beitraegen in diesem Forum, die ich mit einer Suche fand) fuer diese Kommunikation geeignet sein sollte. Habe es jetzt nocheinmal mit den von Dir genannten Einstellungen probiert, allerdings leider auch ohne Erfolg. Gruesse, johannes PS: Natuerlich freue ich mich auch ueber Kommentare zu dem kurzen Programm, die sich nicht direkt auf mein konkretes Problem beziehen (Stilfehler u.dgl.) :-)
Die LEDs sollten eigentlich funktionieren, zurück gesendet wird mit dem Programm natürlich nichts, da "transmit" niemals aufgerufen wird.
Oh, tatsaechlich. Danke fuer den Hinweis, Forumsdrachen. Da hab ich wohl uebersehen, ein rcall einzufuegen. So, habe es jetzt mit dem rcall TRANSMIT probiert, aber es tut sich immer noch nichts. Kann es sein, dass die LEDs zwar blinken, aber eben so schnell/kurz, dass ich es nicht sehen kann? (habe zwar auch probiert, eine groessere Datei an die serielle zu senden, aber trotzdem nichts gesehen) Gruesse, johannes
So, habe jetzt einen weiteren Fehler in meinem Code gefunden: Die Interrupt-Tabelle hab ich naemlich einfach von einem Tutorial uebernommen, in dem ein AT90S4433 verwendet wird, ich verwende aber o.g. AT90S8515. Habe die Interrupte-Tabelle jetzt mit den Angaben aus dem Datenblatt korrigiert. Leider tut sich aber immer noch nichts. Weitere, hier eher nebensaechliche Aenderung: Hab die drei SBIs durch zwei Befehle ersetzt. Naja. ;) Gruesse und danke schon fuer weitere Ideen! johannes
So, jetzt hab ich das Problem doch noch selbst geloest. Es lag natuerlich doch am AVR-Programm ;) Ploetzlich stellte ich fest, dass die Leuchtdioden nach einem Reset eh das erste Zeichen, das ich vom PC aus schicke, ausgeben. Wieso ich das vorher nicht bemerkt habe bzw. wieso es vorher nicht so war, kann ich jetzt nicht nachvollziehen. Der Fehler im Code: Ich schrieb sbis UCR, UDRE statt sbis USR, UDRE , habe also ins Controll- statt ins Status-Register geschaut. Tjaja, wenn man Code von irgendwo uebernimmt und veraendert, obwohl man nicht weiss, was man tut ;-) Danke trotzdem fuer Eure Bemuehungen! Gruesse und schoenen Abend, johannes
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.