Also das Programmieren von µC ist noch ziemliches Neuland für mich und
nun stehe ich grade vor einem Problem. Ich bin grade dabei mich ein
wenig mit dem Timer zu beschäftigen und dazu habe ich mich mal an dieser
Anleitung orientiert:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts
Nun hab ich einen kleinen Code zurecht gebastelt aber irgendwie hat das
nicht so funktioniert, wie ich mir das vorgestellt habe, deshalb habe
ich mir folgenden Code auf dieser Seite einfach mal ins AtmelStudio
kopiert:
1
.include "m8def.inc"
2
3
.def temp = r16
4
.def leds = r17
5
6
.org 0x0000
7
rjmp main ; Reset Handler
8
.org OVF0addr
9
rjmp timer0_overflow ; Timer Overflow Handler
10
11
main:
12
; Stackpointer initialisieren
13
ldi temp, HIGH(RAMEND)
14
out SPH, temp
15
ldi temp, LOW(RAMEND)
16
out SPL, temp
17
18
ldi temp, 0xFF ; Port B auf Ausgang
19
out DDRB, temp
20
21
ldi leds, 0xFF
22
23
ldi temp, (1<<CS00) ; CS00 setzen: Teiler 1
24
out TCCR0, temp
25
26
ldi temp, (1<<TOIE0) ; TOIE0: Interrupt bei Timer Overflow
27
out TIMSK, temp
28
29
sei
30
31
loop: rjmp loop
32
33
timer0_overflow: ; Timer 0 Overflow Handler
34
out PORTB, leds
35
com leds
36
reti
Allerdings gibt es da das Problem, dass beim Timer-Überlauf einfach
nicht an die Interrupt-Adresse OVF0addr gespungen wird (weder im
Simulator noch beim Test mit einem richtigen µC), hat möglicherweise
jemand eine Idee, woran das liegen könnte?
Hi
>Allerdings gibt es da das Problem, dass beim Timer-Überlauf einfach>nicht an die Interrupt-Adresse OVF0addr gespungen wird (weder im>Simulator noch beim Test mit einem richtigen µC), hat möglicherweise>jemand eine Idee, woran das liegen könnte?
Im Simulator vom 4er Studio funktioniert es problemlos.
MfG Spess
> Im Simulator vom 4er Studio funktioniert es problemlos.>> MfG Spess
Ich hab das AtmelStudio 6 aber ich finde es schon merkwürdeig, dass es
weder im Simulator, noch auf nem richtigen µC funktioniert.
Christian Franken schrieb:>> Im Simulator vom 4er Studio funktioniert es problemlos.>>>> MfG Spess>> Ich hab das AtmelStudio 6 aber ich finde es schon merkwürdeig, dass es> weder im Simulator, noch auf nem richtigen µC funktioniert.
Zu Studio6 und seinem Simulator kann ich nichts sagen. Aber ein
beliebter Fehler ist es, das falsche Hex-File zu flashen.
mfg.
Hi
Woran erkennst, das es auf dem Controller nicht funktioniert. Ein
Blinken kannst du nicht erwarten.
>Ich hab das AtmelStudio 6 aber ich finde es schon merkwürdeig, dass es>weder im Simulator, ...
Für Assembler brauchst du kein 6er Studio. Nimm das AVR Studio 4.19 von
hier:
http://www.atmel.com/tools/studioarchive.aspx
MfG Spess
Naja, so einfach ist das alles nicht, dass Du die Flinte schon in's Korn
werfen musst; sprich: Annehmen, das es schlicht nicht geht.
1. Es ist nicht unüblich, das gewisse Details im Simulator nicht
funktionieren. Das war im AVRStudio 4 so und das wird auch in 6 so sein
(das ich auch nicht benutze). Was das AVRStudio 6 betrifft, kann Du hier
nur ein User helfen, der das auch benutzt. Aber es lohnt sich
vielleicht doch, das Du mal genau schreibst, auf welche Weise Du
feststellst, das es im Simulator nicht geht. Es kommt dann doch recht
häufig vor, das Anfänger etwas erwarten, das so nicht geschieht.
2. Ein Code der im AVR 4 Simulator geht, wird sehr wahrscheinlich im
echten Chip auch gehen. Dein Problem wird ganz andere Gründe haben. Zu
allererst wieder die Frage, auf welche Weise Du feststellst, das es
nicht geht. Falls Du ein für Dich wahrnehmbares Blinken erwartest,
könnte es sein, das das ein Irrtum ist. Rechne mal die Blinkfrequenz
aus.
Peinlich peinlich... ich muss irgendwo einen Fehler in der Schaltung
gehabt haben. Ich hab jetzt mal nur die Grundschaltung aufgebaut und da
hat alles funktioniert und dann habe ich alles andere drumherum gebaut
und siehe da, es funktioniert jetzt alles so wie es soll... Nur im
Simulator funktioniert es immer noch nicht (der Timer zählt zwar, aber
bei einem Overflow wird einfach nicht zum Interrupt gesprungen, obwohl
das TOV0-Bit gesetzt wird) aber was solls... Meine Schaltung
funktioniert jetzt.
Ich bedanke mich trotzdem für eure Anteilnahme.