PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Switch bei Asuro



Hoochii
23.09.2005, 16:34
Hi!

Ich habe mittlerweile schon einige Programme geschrieben für den Asuro unter anderem auch eines, dass wie pcdemo.c-BSP funktioniert(War mir zuerst nicht bekannt, dass es das schon gibt aber egal)

Bei Programmen, die bei mir einen SWitch-Anweisung(Überprüfung, was für ein Zeichen eingegebn wurde) haben

000 switch(order):
001 {
002 case BACK_LED: BackLED(OFF,ON);
003 case FWD: MotorDir(FWD,FWD);
004 MotorSpeed(150,150);
005 }

, tritt bei mir folgender Fehler auf.

Wenn ich den Pfad in Zeile 002 betrette, funktioniert es ganz prima...ich kann das BackLed super einschalten.
Wenn ich dne Pfad in Zeile 003 betrette, dann fängt der Motor zum surren an. Jedoch bewegt er sich nicht vorwärts und das Programm hängt sich auf.

Ich möchte jedoch erwähnen das ich ansonsten schon einige lauffähige Programme haufgefhlasht habe die wunderbar funktionerten. Aber bei der Switch habe ich ein Problem...auch das Programm pcDemo.c macht den gleichen Fehler.


Noch eine ander Frage nebenbei: Wie groß darf das HEX-File sein das man Flasht? Logischerweise ja um die 8KB oder nur 7 KB wenn man den Bootloader weg rechnet, weil man nur einen 8KB FlschSpeicher hat.
Aber das HEX-File Selbsttest.hex ist ja 15 KB groß. Irre ich mich.

Ich bedanke mich schon mal für jede Hilfe die kommen mag.

stochri
23.09.2005, 18:10
Der Asuro hat tatsächlich nur 8KB Fischspeicher.
Das Hex-File ist allerdings Text. Ein Byte besteht aus 2 ASCCI-Zeichen und damit ist das Hex-File schon mindestens doppelt so groß wie das Maschinencodprogramm. Den sonsitigen Offset mit Prüfsumme und Zeilennummer nicht mitgerechnet.
Die Frage wurde hier im Forum aber schon einmal beantwortet.

Gruss,
stochri

linux_80
23.09.2005, 18:10
Hallo,

bei switch musst Du nach jedem case-Block ein break; einfügen, damit alles nachfolgende nicht ausgeführt wird, ansonsten läuft das Programm ganz normal duch alle Case-anweisungen durch und führt diese aus.

Das hex-file hat alle Bytes als Hex-zahlen dargestellt, darum heisst es auch Hex-file ;-)
Also für jedes Byte 2 Zeichen, plus ein paar weitere damit der Flash weiss was damit zu tun ist, Bytenummer, Prüfsumme usw.

Beim compilieren wird aber irgendwo ausgegeben wie gross das Programm als binary wäre.

Hoochii
25.09.2005, 10:33
Danke für eure Antwort.

Mir ist sehr wohl klar, das man break am Ende einer Case einfügen sollte. aber auch dafür danke.