www.mikrocontroller.net

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


Autor: eR (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
.include  "m168def.inc"
.cseg
.org 0
;-------------------------------------------------------------------------------
; Reset and Interrupt vector             ;VNr.  Beschreibung
;-------------------------------------------------------------------------------
;0x0000 
   jmp    main          ; Reset Handler 
;0x0002 
   jmp    ORG        ; IRQ0 Handler 
;0x0004 
   jmp    ORG        ; IRQ1 Handler 
;0x0006 
   jmp    ORG        ; PCINT0 Handler 
;0x0008 
   jmp    ORG        ; PCINT1 Handler 
;0x000A 
   jmp    ORG        ; PCINT2 Handler 
;0x000C 
   jmp    ORG        ; Watchdog Timer Handler 
;0x000E 
   jmp    ORG        ; Timer2 Compare A Handler 
;0x0010 
   jmp    ORG        ; Timer2 Compare B Handler 
;0x0012 
   jmp    ORG        ; Timer2 Overflow Handler 
;0x0014 
   jmp    ORG        ; Timer1 Capture Handler 
;0x0016 
   jmp    ORG        ; Timer1 Compare A Handler 
;0x0018 
   jmp    ORG        ; Timer1 Compare B Handler 
;0x001A 
   jmp    ORG        ; Timer1 Overflow Handler 
;0x001C 
   rjmp    Timer        ; Timer0 Compare A Handler 
;0x001E 
   jmp    ORG        ; Timer0 Compare B Handler 
;0x0020 
   jmp    ORG        ; Timer0 Overflow Handler 
;0x0022 
   jmp    ORG        ; SPI Transfer Complete Handler 
;0x0024 
   jmp    ORG        ; USART, RX Complete Handler 
;0x0026 
   jmp    ORG        ; USART, UDR Empty Handler 
;0x0028 
   jmp    ORG        ; USART, TX Complete Handler 
;0x002A 
   jmp    ORG        ; ADC Conversion Complete Handler 
;0x002C 
   jmp    ORG        ; EEPROM Ready Handler 
;0x002E 
   jmp    ORG        ; Analog Comparator Handler 
;0x0030 
   jmp    ORG        ; 2-wire Serial Interface Handler 
;0x0032 
   jmp    ORG        ; Store Program Memory Ready Handler 

ORG:  reti
                                    
                 
 


.equ    XTAL  =  3686400;H

;
; Namenszuordnung der Register im RAM
;
.def    LCD_1  =  r16            ; LCD_Register
.def    LCD_2  =  r17            ; LCD_Register
.def    LCD_3  =  r18            ; LCD_Register
.def    temp1  =  r19
.def    temp2  =  r20
.def    temp3  =  r21
.def    temp4  =  r22
.def    temp5  =  r23
.def    temp6  =  r24
.def    temp7  =  r25
.def    temp8  =  r26
.def    temp9  =  r27
.def    temp10  =  r28

;
; Resethanling, booten
;
main:
          ldi       temp1, LOW(RAMEND)       ; Stackpointer initialisieren
          out       SPL, temp1
          ldi       temp1, HIGH(RAMEND)
          out       SPH, temp1        ;  

      ldi      temp1,0b00111111
      out      DDRB,temp1

          ldi       temp1,0b00000101       ; CS00 setzen: Teiler 1
          sts       TCCR0B, temp1
 
          ldi        temp1,(1<<TOIE0)      ; TOIE0: Interrupt bei Timer Overflow
          sts       TIMSK0, temp1
 
          sei

mainloop:
         rjmp     mainloop

Timer:   reti
Weiß wer wo der Fehler liegt?

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas W. (geier99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Weiß wer wo der Fehler liegt?

out       TCCR0B, temp1

und nicht sts TCCR0B, temp1  verwenden

Autor: eR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so, hab ich gemacht. Hier der kleine Ausschnitt:
;0x001A 
   jmp    ORG        ; Timer1 Overflow Handler 
;0x001C 
   jmp    ORG        ; Timer0 Compare A Handler 
;0x001E 
   jmp    ORG        ; Timer0 Compare B Handler 
;0x0020 
   rjmp    Timer        ; Timer0 Overflow Handler 
;0x0022 
   jmp    ORG        ; SPI Transfer Complete Handler 

Springt immer noch nicht hin.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Springt immer noch nicht hin.

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

Autor: eR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss es so heißen?
[avrasm]AVR-Assembler-Code
[/avrasm]

Autor: eR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach Schmarn
Hab mich vertippt:
          ldi       temp1,0b00000011 
          out       TCCR0B, temp1
 
          ldi        temp1,(1<<TOIE0)      ; TOIE0: Interrupt bei Timer Overflow
          sts       TIMSK0, temp1
 
          sei

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.