Bist du sicher, daß der PC werte die 0, 1 u. 2 schickt und nicht
Ascii '0', '1' od. '2' ?
da haut der Vergleich nie hin
Hallo,
bei meiner Anwendung tritt ein merkwürdiges Problem auf: Ich lese einen Bild-/Bewegungssensor mit einem Mega8 aus, dabei gibt es 2 Modi: Modus=1 -> Bewegungsdaten über RS232 an PC schicken, Modus=2 -> Bilddaten an PC schicken. Nach dem Flashen des Controllers ist der Modus 1 aktiv und alles läuft fehlerfrei. Auch das Umschalten in den Modus 2 läuft und der Sensor liefert mir Bilder an den PC. Ich kann es mir nach unzähligen Versuchen nicht mehr erklären, aber das erneute Umschalten in den Modus 1 geht nicht. Das Zeichen kommt über die RS232 definitiv an, aber scheinbar wird das Hauptprogramm nicht mehr abgearbeitet oder der Timer liegt lahm!?!
Ich hoffe, jemand kann mir helfen, danke.
Hier ein Ausschnitt aus meinem Code:
Code:Do If Modus = 2 Then Call Get_picture() Call Send_picture() Else Printbin Abspos_x ; Abspos_y ; Squal ; Motion ; Maximumpixel ; 13 ; End If Loop '############################################### 'Timer-Routine zur Abfrage der Sensor-Werte mit etwa 6kHz Ontimer: If Modus = 1 Then Call Read_motion() End If Timer1 = 65430 Return '############################################### 'Interrupt für den Zeichenempfang Onrts: Modus = Udr If Modus = 0 Then Abspos_x = 0 Abspos_y = 0 Modus = 1 End If If Modus = 1 Then Toggle Portb.1 If Modus = 2 Then Toggle Portb.0 Set Reset_chip Waitms 300 Reset Reset_chip Wait 1 Set Ncs Return
Bist du sicher, daß der PC werte die 0, 1 u. 2 schickt und nicht
Ascii '0', '1' od. '2' ?
da haut der Vergleich nie hin
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Nein, das stimmt garantiert, habe die Werte zurückgeschickt und die kommen auch an. Des Weiteren habe ich bei Ankunft der Zeichen bestimmte Ports getoggelt und daran sieht man ja auch, dass es klappt. Hast Du sonst noch eine Idee? Ich kann einfach keinen Fehler finden...
Der Controller soll die Bewegungsdaten sehr oft (ca. 6kHz) abfragen und aufsummieren. Nur wenn er Zeit hat, soll er sie an den PC schicken, deswegen habe ich das Senden der Daten in die Hauptschleife und nicht in den Timerinterrupt gepackt.
Bevor du nach "DO" kommst, welchen Wert hat da Modus ?
Setzt du den vorher auf 1 ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ja, ich habe vorher eine kleine Initialisierung, ich setze vor Programmbeginn Modus auf eins, deswegen läuft die Übertragung der Bewegungsdaten direkt nach dem Flashen.
Ich seh so auch nix. Es stehen Get_picture & send_picture in Verdacht.
Sprechen die Toggles in gewünschter Weise an ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Noch was: Wenn du wieder in den Mode 1 schalten willst, was macht er da ? bleibt er beim Bilder senden oder stellt er den Betrieb überhaupt ein ?
Ich dachte auch erst, es würde an Get_picture oder Send_picture liegen, allerdings konnte ich den Fehler ausschließen. Die Toggles reagieren so wie sie sollen. Auf Deine zweite Frage: von Mode 1 auf 2 geht, aber nicht zurück, er scheint einfach stehen zu bleiben, als würde er sich aufhängen.
Ist es eigentlich ein Unterschied, wo ich die Hauptschleife des Programms platziere? Wenn die die Hauptschleife ans Ende meines Codes stelle, arbeitet das Programm völlig anders!
Trotzdem erstmal Dnake für Deine Hilfe...
Hi,
ich hatte schon Probleme, wenn der END Befehl nicht nach der Hauptschleife kommt.
Probiere doch mal das END direkt hinter dein Loop zu setzen.:
Do
...
Loop
END
Danach die Subs
Gruß
Christopher
Lesezeichen