Hallo zusammen, Ich habe ein Programm für ein AirHockey geschrieben. Das Programm funktioniert soweit. Jetzt wollte ich über die UART-Schnittstelle ein MP3 programmieren. Sobald ich die UART-Schnittstelle initialisiere, macht das Programm, was es will. Als Mikrokontroller benutze ich den AT89C51CC03 und ich habe es in Keil programmiert. In der Datei befindet sich mein Programm. Weiss jemand, was ich falsch gemacht habe? PS. Die UART-Schnittstelle habe ich so schon mal programmiert und da hat es funktioniert.
Obelix schrieb: > Uart.PNG > Uart_init.PNG Was soll das? Normaler Quelltext als Anhang, KURZE Ausschnitte als Text.
1 | // das ist ein kurzer Ausschnitt aus dem Quältext
|
Ich sehe weder eine ISR noch einen Zugriff auf das UART Daten-Register. Auch die Konfiguration des UART schaltet keine Interrupts frei. Es scheint also wirklich so, dass alleine das Einschalten des UART die Fehlfunktion auslöst. Kann es sein, dass du den RxD Ausgang kurzgeschlossen hast und dadurch die Stromversorgung instabil wird?
du verwendest printf. Das geht ohne Umleitung mit der Original putchar() Funktion aus der lib auf die 1. serielle Schnittstelle. Ich sehe nicht, dass du irgendwo TI = 1 machst. Damit ist die serielle ausgabe blockiert! putchar liegt im libordner als Quelltext vor.
Stefan ⛄ F. schrieb: > Kann es sein, dass du den RxD Ausgang kurzgeschlossen hast und dadurch > die Stromversorgung instabil wird? Ich meinte natürlich den TxD Ausgang.
In der Initroutine den Timer2 zu starten, dann die Reloadwerte zu setzen und das bereits gesetzte Bit nochmal zu setzen deutet zumindest nicht auf überlegtes Handeln hin. Gruß Klaus (der soundsovielte)
Obelix schrieb: > Sobald ich die UART-Schnittstelle initialisiere, > macht das Programm, was es will. Was will es denn? Offenbar etwas anderes als du, aber welches Problem daraus resultiert, hast du überhaupt nicht geschildert. Sollen wir das raten?
naja der Fehler wird, wie meistens, in den nicht gezeigten Teilen liegen. Folgendes ist mir aufgefallen: - ich sehe kein #include <stdio.h> //printf() !? - extern char putchar(char c); //umgeleitet aufs LCD ? wo das Ding hängen bleibt sollte der Simulator zeigen können.
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.