Forum: Mikrocontroller und Digitale Elektronik ATmega 8 -> ATmega 168


von eR (Gast)


Lesenswert?

Hallo!
Hab da gerade nen häääänger!
Soll nen Timer im "neuen" M168 erstellen, hab da mal angefangen, geht 
nur leider nicht. Der stpring nicht zum Timer.
1
.include  "m168def.inc"
2
.cseg
3
.org 0
4
;-------------------------------------------------------------------------------
5
; Reset and Interrupt vector             ;VNr.  Beschreibung
6
;-------------------------------------------------------------------------------
7
;0x0000 
8
   jmp    main          ; Reset Handler 
9
;0x0002 
10
   jmp    ORG        ; IRQ0 Handler 
11
;0x0004 
12
   jmp    ORG        ; IRQ1 Handler 
13
;0x0006 
14
   jmp    ORG        ; PCINT0 Handler 
15
;0x0008 
16
   jmp    ORG        ; PCINT1 Handler 
17
;0x000A 
18
   jmp    ORG        ; PCINT2 Handler 
19
;0x000C 
20
   jmp    ORG        ; Watchdog Timer Handler 
21
;0x000E 
22
   jmp    ORG        ; Timer2 Compare A Handler 
23
;0x0010 
24
   jmp    ORG        ; Timer2 Compare B Handler 
25
;0x0012 
26
   jmp    ORG        ; Timer2 Overflow Handler 
27
;0x0014 
28
   jmp    ORG        ; Timer1 Capture Handler 
29
;0x0016 
30
   jmp    ORG        ; Timer1 Compare A Handler 
31
;0x0018 
32
   jmp    ORG        ; Timer1 Compare B Handler 
33
;0x001A 
34
   jmp    ORG        ; Timer1 Overflow Handler 
35
;0x001C 
36
   rjmp    Timer        ; Timer0 Compare A Handler 
37
;0x001E 
38
   jmp    ORG        ; Timer0 Compare B Handler 
39
;0x0020 
40
   jmp    ORG        ; Timer0 Overflow Handler 
41
;0x0022 
42
   jmp    ORG        ; SPI Transfer Complete Handler 
43
;0x0024 
44
   jmp    ORG        ; USART, RX Complete Handler 
45
;0x0026 
46
   jmp    ORG        ; USART, UDR Empty Handler 
47
;0x0028 
48
   jmp    ORG        ; USART, TX Complete Handler 
49
;0x002A 
50
   jmp    ORG        ; ADC Conversion Complete Handler 
51
;0x002C 
52
   jmp    ORG        ; EEPROM Ready Handler 
53
;0x002E 
54
   jmp    ORG        ; Analog Comparator Handler 
55
;0x0030 
56
   jmp    ORG        ; 2-wire Serial Interface Handler 
57
;0x0032 
58
   jmp    ORG        ; Store Program Memory Ready Handler 
59
60
ORG:  reti
61
                                    
62
                 
63
 
64
65
66
.equ    XTAL  =  3686400;H
67
68
;
69
; Namenszuordnung der Register im RAM
70
;
71
.def    LCD_1  =  r16            ; LCD_Register
72
.def    LCD_2  =  r17            ; LCD_Register
73
.def    LCD_3  =  r18            ; LCD_Register
74
.def    temp1  =  r19
75
.def    temp2  =  r20
76
.def    temp3  =  r21
77
.def    temp4  =  r22
78
.def    temp5  =  r23
79
.def    temp6  =  r24
80
.def    temp7  =  r25
81
.def    temp8  =  r26
82
.def    temp9  =  r27
83
.def    temp10  =  r28
84
85
;
86
; Resethanling, booten
87
;
88
main:
89
          ldi       temp1, LOW(RAMEND)       ; Stackpointer initialisieren
90
          out       SPL, temp1
91
          ldi       temp1, HIGH(RAMEND)
92
          out       SPH, temp1        ;  
93
94
      ldi      temp1,0b00111111
95
      out      DDRB,temp1
96
97
          ldi       temp1,0b00000101       ; CS00 setzen: Teiler 1
98
          sts       TCCR0B, temp1
99
 
100
          ldi        temp1,(1<<TOIE0)      ; TOIE0: Interrupt bei Timer Overflow
101
          sts       TIMSK0, temp1
102
 
103
          sei
104
105
mainloop:
106
         rjmp     mainloop
107
108
Timer:   reti
Weiß wer wo der Fehler liegt?

von g457 (Gast)


Lesenswert?

..versuchs mal mit dem TOV statt dem COMP - oder schalt letzteren ein. 
Und gewöhn Dir besser gleich wieder ab die Interrupttabelle von Hand zu 
programmieren, das führt genau zu solchen Fehlern (und erschwert eine 
Portierung unnötigerweise).

HTH

von Andreas W. (geier99)


Lesenswert?

> Weiß wer wo der Fehler liegt?

out       TCCR0B, temp1

und nicht sts TCCR0B, temp1  verwenden

von eR (Gast)


Lesenswert?

so, hab ich gemacht. Hier der kleine Ausschnitt:
1
;0x001A 
2
   jmp    ORG        ; Timer1 Overflow Handler 
3
;0x001C 
4
   jmp    ORG        ; Timer0 Compare A Handler 
5
;0x001E 
6
   jmp    ORG        ; Timer0 Compare B Handler 
7
;0x0020 
8
   rjmp    Timer        ; Timer0 Overflow Handler 
9
;0x0022 
10
   jmp    ORG        ; SPI Transfer Complete Handler

Springt immer noch nicht hin.

von g457 (Gast)


Lesenswert?

> Springt immer noch nicht hin.

..jetzt noch den von Andreas monierten 'sts statt out'-Fehler (übrigens 
auch beim TIMSK0) korriegieren..

von eR (Gast)


Lesenswert?

Muss es so heißen?
1
•[avrasm]AVR-Assembler-Code
[/avrasm]

von eR (Gast)


Lesenswert?

Ach Schmarn
Hab mich vertippt:
1
          ldi       temp1,0b00000011 
2
          out       TCCR0B, temp1
3
 
4
          ldi        temp1,(1<<TOIE0)      ; TOIE0: Interrupt bei Timer Overflow
5
          sts       TIMSK0, temp1
6
 
7
          sei

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.