Forum: Mikrocontroller und Digitale Elektronik Timer


von Steffen Burr (Gast)


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

von mikki merten (Gast)


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

von Steffen Burr (Gast)


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!

von mikki merten (Gast)


Lesenswert?

Unter Debug / Reset und direkt Shift F5

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.