Forum: Compiler & IDEs Komisches Verhalten von fread auf Grasshopper / AP7000


von Kriz L. (kriz)


Angehängte Dateien:

Lesenswert?

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?

von Kriz L. (kriz)


Lesenswert?

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
Noch kein Account? Hier anmelden.