Mein Microcontroller springt über meine Tastenabfrage?
#include "TM4C123.h"
.global main
main:
/*GPIOF PORT AKTIVIEREN*/
ldr r0,=0x400FE608
ldr r1,=0x20
str r1,[r0]
/*GPIO DIR*/
ldr r0,=0x40025400
ldr r1,=0x0E
str r1, [r0]
/*GPIO DEN*/
ldr r0,=0x4002551C
ldr r1,=0x1F
str r1,[r0]
/*GPIO AFSEL*/
ldr r0,=0x40025420
ldr r1,=0x00
str r1,[r0]
/*GPIO DATA*/
ldr r0,=0x400253FC
ldr r1,=0x00
str r1,[r0]
/*Pull Up Widerstand aktivieren*/
ldr r0,=0x40025510
ldr r1,=0x10
str r1,[r0]
Check_Input:
ldr r0,=0x400253FC
ldr r1,[r0]
lsr r2,r1,#4
cmp r2, #0
beq loop
b Check_Input
loop:
/*Rote LED einschalten*/
ldr r0,=0x400253FC
ldr r1,=0x02
str r1,[r0]
bl delay
ldr r0,=0x400253FC
ldr r1,=0x00
str r1,[r0]
bl delay
/*Grüne LED einschalten*/
ldr r0,=0x400253FC
ldr r1,=0x04
str r1,[r0]
bl delay
ldr r0,=0x400253FC
ldr r1,=0x00
str r1,[r0]
bl delay
/*Blaue LED einschalten*/
ldr r0,=0x400253FC
ldr r1,=0x08
str r1,[r0]
bl delay
ldr r0,=0x400253FC
ldr r1,=0x00
str r1,[r0]
bl delay
b loop
delay:
/*Wert setzen*/
ldr r0,=0xE000E014
ldr r1,=0x000C34FF
str r1,[r0]
/*Warten auf Timerablauf*/
ldr r0,=0xE000E010
ldr r1,=0x01
str r1,[r0]
/*Timer-durchlauf*/
Wait_loop:
ldr r0,=0xE000E018
ldr r1,[r0]
cmp r1, #0
bne Wait_loop
bx lr
Kann mir jemand erklären warum im Debug Modus der Taster berücksichtigt wird, also mit Step Into und wenn ich auf Continue drücke nicht ? Danke schonmal:)
1 Antwort
Assembler????
Das ist ja mal old school!
Also, ich ich kenne natürlich nicht alle mnemonics deines Assemblers, aber was zuerst auffällt, ist, dass deine Tastaturabfrage (CheckInput) nicht in der [Loop] ist und deshalb nur ein einziges Mal ausgeführt wird. Im normalen Ablauf, bist du einfach zu langsam um die Taste rechtzeitig zu drücken, im Debugmode wartet er ja nach jeder Zeile auf <Weiter> und du betätigst die Taste im 'richtigen Moment'
Wenn du in deinem Program nicht absolut auf definiertes Timing angewiesen bist, dann solltest du auf eine Hoch- bzw. Mittelsprache wechseln.
More power to you
Es kann nicht schaden, wenn man weiß wie es unten drunter aussieht und wie man, wenn die Anforderungen extremer werden, aus der Maschine noch ein paar Extra-MIPS herauskitzeln kann!
Ja es ist vielleicht old School aber im Studium haben wir damit angefangen und sind dann zu c übergangen. Allerdings hab ich die Prüfung nicht bestanden und deshalb versuch ich mich mit c und Assembler nochmal ordentlich auseinanderzusetzen.