Timer funktionen in Asm beim AVR

Gast #3153561
Lesenswert?

Hallo zusammen,
ich schreibe/bzw. versuche gerade ein (für mich) doch etwas 
umfangreicheres Prog zu schreiben.Ich hing schon paar mal,aber das Forum 
hat mir da doch immer weiter geholfen,nur bei meinem folgenden Problem 
nicht.
Zum Hintergrund:
Es soll ein μC werden, bei dem ich eine Taste drücke,dann z.bsp. 2s 
später ein LED leuchtet und diese soll dann 1ßs leuchten.Drücke ich nun 
in der zwischenzeit den gleichen Taster nochmal,dann bricht das Prog ab 
und keine LED leuchtet.
Das Problem ist dann meine LED gleich bei Tastendruck leuchtet,bring ich 
dann die Prozedur "zeit2s davor,dann will sie gar ned mehr.
Also was mache ich falsch?
Angehängte Dateien:
Gast #3153581
Lesenswert?

Jokey schrieb:
> Hallo zusammen,
> ich schreibe/bzw. versuche gerade ein (für mich) doch etwas
> umfangreicheres Prog zu schreiben.Ich hing schon paar mal,aber das Forum
> hat mir da doch immer weiter geholfen,nur bei meinem folgenden Problem
> nicht.
> Zum Hintergrund:
> Es soll ein μC werden, bei dem ich eine Taste drücke,dann z.bsp. 2s
> später ein LED leuchtet und diese soll dann 1ßs leuchten.Drücke ich nun
> in der zwischenzeit den gleichen Taster nochmal,dann bricht das Prog ab
> und keine LED leuchtet.
> Das Problem ist dann meine LED gleich bei Tastendruck leuchtet,bring ich
> dann die Prozedur "zeit2s davor,dann will sie gar ned mehr.
> Also was mache ich falsch?

Mach das AVR Tutorial hier auf der Seite von Anfang an durch und lies 
das Datenblatt deines Controllers.
Gast #3153613
Lesenswert?

Danke schon mal für die Antworten...
1.) auch mit "ret" (was ich leider übersehen habe) funzt es ned
2.) mit dem Bild: ich hab mich da an die vorgabe von hier gehalten, ich 
hätte es auch gerne in einem anderen format hochgeladen,aber danke dafür 
hust
3.)das tutorial habe ich bereits durch...
4.)bitte um aufklärung zwecks der dutzend fehler???
Gast #3153626
Lesenswert?

Also eigentlich kann ich mich Eumel nur anschließen. Aber:
Wie sieht denn jetzt das Programm aus? Am besten, nachdem Sie 
stillgelegte Befehle entfernt haben.
Ansonsten z.B.: hinter WGLOOP2: R1 ! ?
Gast #3153652
Lesenswert?

main:  ldi  r16,lo8(RAMEND)
  out  SPL,r16
  ldi  r16,hi8(RAMEND)
  out  SPH,r16
  ;Hier Init-Code eintragen
;----------------------------------------------------------------------- 
-
  cbi  DDRB,0  ;b0 auf eingang
  sbi  PORTB,0 ;pullup widerstand
  sbi  DDRB,1  ;b1 auf ausgang
  sbi  DDRC,0  ;c0 auf ausgang(status led)
;----------------------------------------------------------------------- 
-
mainloop:  wdr
  sbi  PORTC,0
  sbic  PINB,0  ;taste auswerten
  rcall  LEDOFF
  rcall  LEDON


;----------------------------------------------------------------------- 
-
LEDON:  rcall  ZEIT2S
  sbi  PORTB,1   ;zeit-led einschalten
  rcall  ZEIT10S
  rjmp  mainloop
  ;rcall  LEDOFF
  ret

LEDOFF:  cbi  PORTB,1  ;zeit-led ausschalten
  rjmp  mainloop
  ret

;----------------------------------------------------------------------- 
-
ZEIT10S:
; delaying 36863838 cycles:
            ldi  R17,246
WGLOOP0:    ldi  R18,222
WGLOOP1:    ldi  R19,224
WGLOOP2:    dec  R19
  brne WGLOOP2
  dec  R18
            brne WGLOOP1
            dec  R17
            brne WGLOOP0

; -----------------------------
; delaying 162 cycles:
            ldi  R17,54
WGLOOP3:    dec  R17
            sbic PINB,0
  rcall LEDOFF
            brne WGLOOP3
            ret
; =============================
ZEIT2S:

; delaying 7372782 cycles:
            ldi  R17, 54
WGLOOP4:    ldi  R18, 185
WGLOOP5:    ldi  R19, 245
WGLOOP6:    dec  R19
            brne WGLOOP6
            dec  R18
            brne WGLOOP5
            dec  R17
            brne WGLOOP4
; -----------------------------
; delaying 18 cycles:
           ldi  R17, 6
WGLOOP7:    dec  R17
            brne WGLOOP7
            ret
; =============================
Gast #3153665
Lesenswert?

ret, und davor steht rjmp - Jokey, Sie sind entweder ein Troll oder 
etwas unbedarft. Im letzteren Fall sollten Sie Eumels (wirklich gut 
gemeinten) Rat befolgen.


"Ech ben ein alter Mann und gähe leber fröh ins Bette."
Gast #3153668
Lesenswert?

Hi

>update: mit den zeiten hab ich es jetzt hinbekommen, nur noch nicht mit
>dem ausbrechen aus der 10s schleife noch nicht

Wirst du auch nicht so einfach. Und jede Erweiterung wird ein weiterer 
Krampf. Als Tip: Nimm deinen Thread-Titel mal wörtlich und benutze einen 
richtigen Timer. Da hast du nämlich unendlich Zeit auch noch etwas 
anderes zu machen als den Controller mit Delays zu blockieren.

MfG spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren