Hallo... ich versuche seit längeren mit meinem STK500 Board über Uart mit dem PC zu kommunizieren. Leider hatte ich bislang keinen Erfolg. Ich habe die Baudrate unter Linux mit stty /dev/ttyS0 speed 9600 gesetzt und auf dem STK500 den RS232 Spare mit PortD PD0 und PD1 verbunden. Jedoch empfange ich auf meinem rechner keine signale. Ich weiss nun nicht, ob es an meinem Programm (ich bin neu im Gebiet µC ) oder an meinem PC liegt. Ich freue mich über jegliche Art von hilfe. Ach ja im Artikel zu UART ist ein fehler. Es heißt nicht #define F_CPU 4000000; denn 1. muss das ; weg und es müsste meiner Meinung nach F_CPU 4000000UL heißen. Mein Programm befindet sich im anhang
Also so ganz fit bin ich da auch nicht, mit dem UART... Ich denke mir aber, das da genau ein einzelnes x gesendet wird und dann ist Dein Programm durchgelaufen. Mach doch einfach vor das while (!(USR ... noch ein while (1) { der Rest Deines Prgramms } Dann sollte so viel x gesendet werden, bis Du was siehst. Deine Formel für die Baudratenermittlung sieht auch etwas komisch aus. Wenn ich (4*10^6 / 9600) *15 rechne, dann komme ich auf 6250. (Nicht zu fest hauen, wenn meine Berechnung da oben falsch ist, ich habe die Hauptschule nach der 9. Klasse verlassen.) Trage doch bei UBBR einfach mal 25 ein. (Steht für 4 MHz so im Datenblatt.) Sollte es dann noch nicht klappen, dann starte mal minicom und experimentiere ein wenig mit den Einstellungen herum. Michael
Ist es so schwer, eine Formel aus dem Datasheet richtig abzuschreiben? Richtig ist: UBRR = F_CPU/(UART_BAUD_RATE * 16) - 1;
ok trotz der änderung kommt nix am ttyS0 an. Evtl mach ich auch etwas falsch. Um zu sehen ob etwas ankommt mache ich cat /dev/ttyS0 ich bekomm beim compilieren auch eine warnung: serial1.c: In function `main': serial1.c:9: warning: integer overflow in expression neue datei im anhang
ok durch das 16L kommt die Warnung nicht mehr. Aber trotzdem kommt nix am ttyS0 an :(
Dann verbinde mal die beiden Pins der Spare RS232 ohne sie mit PD0/1 zu verbinden. Dann müsste alles was der PC sendet auch wieder bei ihm ankommen. Wenn nicht => PC ist schuld. Der Satz über die Formel bezog sich übrigens auf das Manual vom Mega8515, da hatte Atmel ein Einsehen und hat die Formel auch mal richtig herum gebracht. Die notwendige Umformung der Formel im AT90S8515 Manual mag wohl wirklich manchen aus der Kurve tragen.
Ähm... jetzt bitte nicht hauen... aber hast Du deine RS232-Strippe zum Rechner auch auf die richtige Buchse am STK500 gesteckt? Gruß, Magnetus P.S.: falls es doch am Code liegen sollte... ich hab da noch keinen Blick rein geworfen
Ähm... jetzt bitte nicht hauen... aber hast Du deine RS232-Strippe zum Rechner auch auf die richtige Buchse am STK500 gesteckt? Jo hab ich ^^ An RS232 Spare
@GonZo: --> Jo hab ich ^^ Heisst das "Jo, hab ich JETZT richtig gesteckt (und es funktioniert endlich)" oder heisst das "Jo, hab ich SCHON VORHER richtig gesteckt gehabt (und es funktioniert immer noch nicht)"?
es heißt jo hab ich schon die ganze zeit an Spare gehabt und es funktioniert immer noch nicbt :( Wie gesagt, wenn ich die beiden pins verbinde, anstatt sie an PD0/1 zu hängen kommt das, was ich vom rechner aus sende auch wieder an.
Bleibt eigentlich bloss noch sowas wie Pins vertauscht/verwechselt. Ansonsten wäre da noch das Low-Level Debugging: Prozessor auf niedrigen Takt und UART auf niedrige Baudrate einstellen, und mal gucken was eine LED am Tx Pin so vermeldet. Müsste sich mit dem STK500 eigentlich langsam genug einstellen lassen, dass man die Bit gemächlich wackeln sieht.
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.