Komisches Verhalten von fread auf Grasshopper / AP7000

OP #1058734
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?
Angehängte Dateien:
OP #1058740
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.