ATmega 8 -> ATmega 168

Gast #2091148
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?
Gast
..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
Gast
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.
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.