Timer

Gast #27238
Lesenswert?
• ▲
▼
Hallo Leute!
Vor einiger Zeit hab ich mit nem 4433 ne Schrittmotorsteuerung gebaut. 
Hat bestens funktioniert.
Jetzt hab ich die selbe Timerroutine für den 8515 umgeschrieben, aber da 
tut sich absolut nichts.

Außer dem erweiterten Stack, was muss ich da noch verändern, damit das 
funktioniert ??

Danke, Steffen


.include "8515def.inc"         ;bzw. 2333def.inc
.org 0x000          ; Programm kommt ganz an den Anfang des Speichers

.def temp = r16
.def temp1 = r17

  rjmp Init      ; Reset Handler
  reti        ; IRQ0 Handler
  reti        ; IRQ1 Handler
  reti        ; Timer1 Capture Handler
  reti        ; Timer1 compare Handler
  reti        ; Timer1 Overflow Handler
  rjmp Timer      ; Timer0 Overflow Handler
  reti        ; SPI Transfer Complete Handler
  reti        ; UART RX Complete Handler
  reti        ; UDR Empty Handler
  reti        ; UART TX Complete Handler
  reti        ; ADC Conversion Complete Interrupt Handler
  reti        ; EEPROM Ready Handler
  reti        ; Analog Comparator Handler


Init:

; ######################################
; Stack initialisieren
; ######################################

  ldi temp, high(RAMEND)
  out SPH, temp
  ldi temp, low(RAMEND)
  out SPL, temp


; ######################################
; Port D Datenrichtingsregister setzen
; ######################################

  ldi temp, 0b00001000
  out DDRD, temp

; ######################################
; Port B Datenrichtingsregister setzen
; ######################################

  ldi temp, 0x00
  out DDRB, temp


; ######################################
; Timer initialisieren
; ######################################


  ldi temp, 0b00000101    ;Timer 0 auf CK 1024 einstellen
  out TCCR0, temp
  ldi temp, 200
  out TCNT0, temp
  ldi temp, 0b00000010    ;Timer 0 Interrupt initialisieren
  out TIMSK, temp


  sei         ;Interrupts allgemein aktivieren


  rjmp main

; ######################################
; Hauptschleife
; ######################################

main:

  rjmp main


; ######################################
; Timer
; ######################################

Timer:          ; Interrupt Routine 1
  push temp      ; R16 sichern
  ldi temp, 200
  out TCNT0, temp

        ; Timerquelltext
  sbi PORTD, 3


  pop  temp      ; R16 zurück laden
  reti        ; zurück
Gast #27239
Lesenswert?
• ▲
▼
Für den 8515 mußt du die Interrupt-Tabelle richtig anpassen:

  rjmp Init ; Reset Handler
  reti ; IRQ0 Handler
  reti ; IRQ1 Handler
  reti ; Timer1 Capture Handler
  reti ; Timer1 compare A Handler
  reti ; Timer1 compare B Handler
  reti ; Timer1 Overflow Handler
  rjmp Timer ; Timer0 Overflow Handler
  reti ; SPI Transfer Complete Handler
  reti ; UART RX Complete Handler
  reti ; UDR Empty Handler
  reti ; UART TX Complete Handler
  reti ; ADC Conversion Complete Interrupt Handler
  reti ; Analog Comparator Handler
Gast #27240
Lesenswert?
• ▲
▼
Danke für deine Antwort. Jetzt funktionierts ;-)

Ich versuch grad das Programm, dass ich geschrieben hab im AVR 3.56 
Simulator zu testen. Hab noch ne (total bescheuerte) Frage. Wie kann ich 
das simulierte Programm wieder anhalten und den Code abändern ??

Danke!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren