Guten Morgen, ich gestehe, ich habe kaum Ahnung. Ich hab hier ein Board mit og. Controller drauf. Und damit möchte ich ein bisschen spielen. Erstmal interessiert mich der download in den internen RAM. Habe da ein paar Beispiele für den BSL gefunden. Funktioniert auch, ein "Hello world" funktioniert auch. Also der Käfer redet mit mir und funktioniert auch. Ich möchte einfach ein bisschen mehr machen. Also Ports schalten, Eingänge lesen usw. Um beim obigen Beispiel zu bleiben: das funktioniert nur in der einfachsten Version: loop: bclr sotir mov s0tbuf,#'H' jnb s0tir, $ . . . jmpr cc_uc, loop Natürlich etwas umständlich, habe mich trotzdem gefreut :-) Aber allein das Auslagern in eine putchar-Funktion führt zum Absturz. Das übrigens auch schon: start: call test . . . test: ret Also irgendwas habe ich nicht bedacht, der SP steht aber korrekt (BSL-Modus , SP=0fa40h. Habe ich mir sogar über die ASC0 ausgeben lassen :-) Ja, lies das Manual, ich weiss, ist aber irgendwie sehr kryptisch. Ich suche einfach ein paar einfache Programmbeispiele, die im internen RAM lauffähig sind. Das finde ich immer an anschaulichsten. Nein, C will ich zumindest jetzt nicht benutzen, will erst mal verstehen, wie das Ding tickt. Ein Flash ist auch drauf, aber da lass ich erst mal die Finger von. Ich habe in der Schule mal ein wenig mit einem 8051 gespielt, aber das ist irgendwie wenig vergleichbar. Vielen Dank für hilfreiche Antworten und Entschuldigung für meine naiven Fragen. Ja, ich habe gesucht, aber eigentlich nichts brauchbares gefunden. Ist ein Phytec-Board, falls das wichtig ist.
Hallo, Mit Assembler habe ich sehr wenig Ahnung. Das Buch Mikrocomputertechnik mit dem Controller C 167 von Günter Schmitt würde ich sehr empfehlen. Du kannst unter books.google.de fast alle Seite lesen In dieser Link gibt es ein Paar Beispiel von Rolf Klaus, hoffe, dass sie Dir helfen kann. https://home.zhaw.ch/~kls/buch_167/buch_167.htm MfG, Ciek
Hast du bedacht, dass du mit dem eingebauten BSL-Loader nur 32 Byte Daten laden kannst?
Hallo Wanderer, krame doch mal deine alten 51er-Programme raus. Der C167 ist von der Syntax her den 51ern sehr ähnlich, so dass du diese Programme mit wenig Aufwand übertragen kannst. Das Programm Dave von Siemens ist sehr hilfreich um Timer usw. einzustellen. Es gibt von Siemens/Infineon massig ApplicationNotes mit Beispielen.
Hi, Danke, werde mich gleich mal durchgraben. Mit dem BSL lade ich mein eigentliches Programm nach. Im Moment nach 0xFA60. Das funktioniert auch prima. $ MOD167 $INCLUDE (REG167.INC) bootstrap SECTION CODE AT 0FA60H IRAM PROC NEAR ;mov STKUN, #0FA42h ;mov STKOV, #0FA20h call test ;hier das Problem ;mov SP, #0FA40h ;mov SYSCON, #0000h BCLR S0RIR NOP Loop: ;mov R0, #46h ;CALL putchar ;mov r0, #44h ;CALL putchar ;JMPR CC_UC, Loop ;jump back to loop mov r0, STKOV BCLR S0TIR MOV S0TBUF, rh0 JNB S0TIR, $ BCLR S0TIR MOV S0TBUF, rl0 JNB S0TIR, $ BCLR S0TIR ;clear transmitter interrupt request flag MOV S0TBUF,#'T' ; WAIT_1: JNB S0TIR, WAIT_1 ;wait until data has been transmitted BCLR S0TIR ;clear transmitter interrupt request flag MOV S0TBUF,#'e' ; WAIT_2: JNB S0TIR, WAIT_2 ;wait until data has been transmitted BCLR S0TIR ;clear transmitter interrupt request flag MOV S0TBUF,#'s' ;s WAIT_3: JNB S0TIR, WAIT_3 ;wait until data has been transmitted BCLR S0TIR ;clear transmitter interrupt request flag MOV S0TBUF,#'t' ; WAIT_4: JNB S0TIR, WAIT_4 ;wait until data has been transmitted BCLR S0TIR ;clear transmitter interrupt request flag MOV S0TBUF,#20h ;send a ' ' (space) WAIT_5: JNB S0TIR, WAIT_5 ;wait until data has been transmitted JMPR CC_UC, Loop ;jump back to loop test: ret IRAM ENDP BOOTSTRAP ENDS END Mein derzeitiges Problem ist der einfache Call (der nichts macht), der MC hängt sich aber auf. Was fehlt obigem Programm? Danke schon mal an die, die sich die Mühe machen, einem blutigen Anfänger zu helfen. Ohne diesen call funktioniert es, erstmal will ich nur eine put/getchar-Funktion haben :-(
Hallo, die Buchempfehlung kann ich nur unterstützen. Als Entwicklungsebene empfehle ich KEIL Compiler. Überspringe die Assembler Versuche und versuche Dich in der C Sprache.
Probiere mal callr. Call ist wenn ich mich recht erinnere eine Assembler-Direktive, die eine andere Syntax erfordert.
Ok, Buch ist bestellt. call und auch callr gehen nach wie vor nicht. Selbst der Debugger (KeilµVision3) stürzt bei diesem Befehl komplett ab - das verstehe ich ja nun mal gar nicht... Liegt das evtl. an dem verwendeten Speicherbereich? Kann das obige Beispiel mal jemand testen, der den Käfer kennt? Oder werde ich es doch lieber beim Motorradschrauben lassen ...
Hallo wanderer, fummelst du im BSL-Loader rum? Das ist keine gute Idee, da ist manches hardcodiert. Erstelle dir zum Spielen ein Testprogramm mit Dave, wichtig ist der Befehl einit darin. Dieses kannst du mit dem BSL ins RAM laden und testen.
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.