Hallo, alle zusammen. Mir wurde ja schon das letzte Mal erfolgreich geholfen, daher wende ich mich (nach Auswertung anderer Hilfsmöglichkeiten z.B. Doku) wieder in dieses Forum mit der Hoffnung, dass mir irgendjemand weiterhelfen kann! Ich habe ein Programm geschrieben, dass Pins 1-10 am PORT D ansteuert und entsprechend der gewählten Option bestimmte LEDs leuchten läßt. Mein Problem ist nun folgendes: fread(&mem, sizeof(mem), 1, portd) macht nicht das, was ich von dieser Programmzeile erwarte. Statt "einmalig" die GPIOs auszulesen, scheint fread (meistens) jedes 2. Mal so lange auszulesen, bis ich eine Taste drücke und sie dann wieder loslasse! Ich habe ein wenig monkeymaessig debuggt. Hab als Debug-Code hinter die Zeile geschrieben: printf("."); Der Punkt erscheint aber erst, wenn ich die Taste loslasse... Und ein printf vorher ist schon noch zu sehen, so dass ich annehme, dass der Fehler im fread liegt. Code ist angehängt. Ich benutze avr32-linux-gcc Version 4.2.2.-Atmel 1.0.8. (Falls jemand streckenweise ähnlichen Code schonmal gesehen zu haben glaubt, dann kann ich nur sagen, dass es wahrscheinlich auch so ist! Ich habe den Code von Christian Z. benutzt, um die GPIOs ansteuern zu können.) Wer kann mir nu das mysteriöse Verhalten meines Grasshoppers erklären?
Noch eine kleine Geschichte, die vielleicht weiterhelfen könnte das Ganze aufzulösen. Letzte Woche hat sich das fread etwas zuverlässiger verhalten und hat jedes Mal das Programm gestoppt, bis ich eine Taste gedrückt habe (bzw losgelassen habe). Ich habe ja in meinem Code switch Statements, die nun mit einem zuverlässigen fread-Stopp nicht mehr nötig waren. Als ich die Switch-statements herausnahm, ist das Programm einmal komplett durchgelaufen und hat dann beim 1. fread in der main-while-Schleife (while(1){...}) Halt gemacht.... Und ich so: "Hääääh????" (Die Switche sind wieder drin, da ich wohl das Programm auch über n Webinterface steuern will, so dass die Unterscheidung der Cases anhand fread und einer manuellen Änderung des programmcounters erfolgen muss.) Viel Spass beim "Rätseln" und vielen Dank allen die helfen wollen!
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.