Schließe Übungsziele der Stage 3 ab

This commit is contained in:
2025-06-04 14:07:44 +02:00
parent bb92ec7bd5
commit 0d6d8dbd2a
2 changed files with 25 additions and 62 deletions

View File

@@ -12,10 +12,10 @@
## Stage 3: ## Stage 3:
- [ ] Richtungswechsel via Taster Klick - [x] Richtungswechsel via Taster Klick
- [ ] Animation läuft unbeirrt weiter bei Taster-Klick - [x] Animation läuft unbeirrt weiter bei Taster-Klick
- [ ] Wechsel von L2R auf R2L bei Taster-Links-Klick - [x] Wechsel von L2R auf R2L bei Taster-Links-Klick
- [ ] Wechsel von R2L auf L2R bei Taster-Rechts-Klick - [x] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
## Stage 4: ## Stage 4:

View File

@@ -71,15 +71,23 @@ loop:
overflow_handler: overflow_handler:
inc overflows inc overflows
cpi overflows, 246 ; bei ~980 Überläufe/Sekunde entsprechen 245 Überläufe ca. 250ms cpi overflows, 246 ; bei ~980 Überläufe/Sekunde entsprechen 245 Überläufe ca. 250ms
brne ret_overflow_handler ; early Return wenn Schwellenwert noch nicht erreicht brne early_exit ; early Return wenn Schwellenwert noch nicht erreicht
clr overflows ; Überlaufzähler kontrolliert zurücksetzen clr overflows ; Überlaufzähler kontrolliert zurücksetzen
in btn_status, PINB in btn_status, PINB ; Aktuellen Button Zustand einlesen
;--
; Geh direkt zur Animationslogik wenn
; kein Button gedrückt
; oder
; wenn der gedrückt Button dem der aktuellen
; Animation entspricht
;----
cpi btn_status, 0 cpi btn_status, 0
breq run_animation breq run_animation ; kein Button gedrückt
cp cur_direction, btn_status cp cur_direction, btn_status
breq run_animation breq run_animation ; Animation bildet aktuellen Button-Status bereit ab
;------
;-- ;--
; Setze definierten Start für den ; Setze definierten Start für den
@@ -96,70 +104,25 @@ overflow_handler:
ldi cur_direction, R2L ldi cur_direction, R2L
out PORTD, setter out PORTD, setter
; mov cur_direction, btn_status
; ldi setter, 0b10000000
; cpi btn_status, RBTN_PRESSED
; breq PC+2
; ldi setter, 0b00000001
; out PORTD, setter
;------ ;------
run_animation: run_animation:
cpi cur_direction, L2R cpi cur_direction, L2R
brne PC+3 brne check_r2l
left_to_right active_led left_to_right active_led
reti reti
check_r2l:
cpi cur_direction, R2L cpi cur_direction, R2L
brne PC+3 brne show_err_code
right_to_left active_led right_to_left active_led
reti reti
ldi setter, 0b00011000 early_exit:
out PORTD, setter reti
;==================== show_err_code:
ldi setter, 0b00011000
; cpi btn_status, R2L_PRESSED out PORTD, setter
; brne PC+3
; ldi active_led, 0b00000001
; right_to_left active_led
;
; cpi btn_status, R2L_PRESSED
; brne PC+3
; ldi active_led, 0b10000000
; left_to_right active_led
;
; cpi btn_status, 0xFF
; brne PC+3
; ldi active_led, 0b00000001
; left_to_right active_led
;====================
; cpi btn_status, 0x00
; brne PC+4
; ldi setter, 0b10101010
; out PORTD, setter
; rjmp ret_overflow_handler
;
; cpi btn_status, RBTN_PRESSED
; brne PC+5
; ldi setter, 0b00000001
; out PORTD
; right_to_left active_led
; rjmp ret_overflow_handler
;
; cpi btn_status, LBTN_PRESSED
; brne PC+4
; ldi active_led, 0b00100000
; ; left_to_right active_led
; out PORTD, active_led
; rjmp ret_overflow_handler
;
; ser setter
; out PORTD, setter
ret_overflow_handler:
reti reti