Forum: Mikrocontroller und Digitale Elektronik TIMER, atmega 328P,


von max (Gast)


Lesenswert?

Ich bin ziemlicher Neuling und wollte fragen wieso hier kein Interrupt 
ausgelöst wird?
1
.org 0x0000
2
    rjmp init
3
.org OVF1addr
4
    rjmp timer
5
6
7
8
9
init:
10
11
ldi r16, HIGH(RAMEND)
12
out SPH, r16
13
ldi r16, LOW(RAMEND)
14
out SPL, r16
15
sei
16
ldi r16,0x3
17
sts  TCCR1B,r16
18
main:
19
20
nop
21
22
23
24
    nop
25
26
    rjmp main
27
28
timer:
29
  nop
30
  ldi r17,0x01
31
32
33
  reti
Besten Dank im vorraus!

von Spess53 (Gast)


Lesenswert?

Hi

Du hast den Timerinterrupt nicht freigegeben.

MfG Spess

von Bernd S. (bernds1)


Lesenswert?

Schau dir mal das Kapitel hier an:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer

Schon beim Punkt "Erste Tests" wirst du fündig. (Stichwort: TIMSK)

von J. T. (chaoskind)


Lesenswert?

Moin

Du hast weder den Timer initialisiert, noch die globalen Interrupts 
freigeben. Schau dir mal im Datenblatt die TCCRxn Register an, damit 
stellst du deinen Timer ein, ob er hoch oder runterzählt, ob er 
Interrupts auslösen darf usw.

Und ganz wichtig! der Befehl "sei", damit erlaubst du global Interrupts. 
Wenn du das "sei" nicht benutzt, wird überhaupt kein Interrupt, egal 
welcher, ausgelöst, selbst wenn du den Timer richtig eingestellt hast.

MfG Chaos

von Spess53 (Gast)


Lesenswert?

Hi

>Du hast weder den Timer initialisiert, noch die globalen Interrupts
>freigeben.

Und was macht dann das SEI in seinem Code?

>out SPL, r16
>sei
>ldi r16,0x3

MfG spess

von Bernd S. (bernds1)


Lesenswert?

j. t. (chaoskind) schrieb:
> Und ganz wichtig! der Befehl "sei", damit erlaubst du global Interrupts.
1
...
2
> ldi r16, HIGH(RAMEND)
3
> out SPH, r16
4
> ldi r16, LOW(RAMEND)
5
> out SPL, r16
6
> sei           <---------- hier ist es!
7
> ldi r16,0x3
8
> sts  TCCR1B,r16
9
> main:
10
...

Das "sei" kann man schon finden, wenn man nur sucht :-)

Aber mit dem Rest hast du Recht. Zusätzlich noch TIMSK, dann klappt das 
auch.

Am besten mal richtig mit der Configuration von Timern beschäftigen.

Gruß Bernd

von J. T. (chaoskind)


Lesenswert?

oh des hab ich übersehen.... im sorry

Ich trenn das sei immer mit ner Leerzeile drunter und drüber ab, 
Stichwort Übersichtlichkeit*gg

Naja gut wenns da is umso besser, dann muss er sich nur noch mit den 
Timerregistern beschäftigen =)

MfG Chaos

von Bernd S. (bernds1)


Lesenswert?

j. t. schrieb:
> oh des hab ich übersehen.... im sorry
>

Ich sagte ja, man muß suchen ;-) (Ich habe es bei Überfliegen auch nicht 
gleich gesehen).

Aber als Neuling wird "max" das sicher noch lernen. Übersichtlichkeit 
hilft Fehler zu vermeiden.

Gruß Bernd

von J. T. (chaoskind)


Lesenswert?

*g genau er = max war gemeint. Über Anwesende schnacken tut man ja nich

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
Noch kein Account? Hier anmelden.