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:
- [ ] Richtungswechsel via Taster Klick
- [ ] Animation läuft unbeirrt weiter bei Taster-Klick
- [ ] Wechsel von L2R auf R2L bei Taster-Links-Klick
- [ ] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
- [x] Richtungswechsel via Taster Klick
- [x] Animation läuft unbeirrt weiter bei Taster-Klick
- [x] Wechsel von L2R auf R2L bei Taster-Links-Klick
- [x] Wechsel von R2L auf L2R bei Taster-Rechts-Klick
## Stage 4:

View File

@@ -71,15 +71,23 @@ loop:
overflow_handler:
inc overflows
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
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
breq run_animation
breq run_animation ; kein Button gedrückt
cp cur_direction, btn_status
breq run_animation
breq run_animation ; Animation bildet aktuellen Button-Status bereit ab
;------
;--
; Setze definierten Start für den
@@ -96,70 +104,25 @@ overflow_handler:
ldi cur_direction, R2L
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:
cpi cur_direction, L2R
brne PC+3
brne check_r2l
left_to_right active_led
reti
check_r2l:
cpi cur_direction, R2L
brne PC+3
brne show_err_code
right_to_left active_led
reti
ldi setter, 0b00011000
out PORTD, setter
;====================
; cpi btn_status, R2L_PRESSED
; 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:
early_exit:
reti
show_err_code:
ldi setter, 0b00011000
out PORTD, setter
reti