mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 -- ATTiny45


Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle

Ich versuche seit 2 Tagen den Timer 1 des Attiny45 im Overflow Modus zu 
initialisierern :( Doch es funktioniert einfach nicht. Den Timer0 hab 
sofort zum Laufen bekommen

Hier der Code:
.org OVF1addr
  rjmp test
...

  ldi temp, 0x06    ;Presacler = 32
  out TCCR1, temp

  ldi temp, 0x04         ;Enable Timer1 Overflow Interrupt
  out TIMSK, temp

  sei    ;Enable Interrupts

Hat jeand eine Ahnung was da los ist?

Danke im Voraus
mfg Robert

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner eine Ahnung?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robert Schilling wrote:

> Hier der Code:

Wo denn ?

Ich sehe nur irgendwelche Fragmente.


> Hat jeand eine Ahnung was da los ist?

Was geht denn nicht ?

Simulierst Du (kann Dein Simulator überhaupt T1) ?
Oder debuggst Du ?
Oder Real Life ?


Real Life ist immer das, was wirklich zählt.


Peter

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier der ganze Code:

.include "tn45def.inc"

.org 0x000
  rjmp main
.org INT0addr
  rjmp EXT_INT
.org OVF1addr
  rjmp test

.def temp = r16    ;Tempregister
.def puls = r17    ;Pulslänge
.def highLow = r18  ;High oder Low Flanke
.def pattern = r19   ;aktuelles Muster

.equ RISING = 0x00
.equ FALLING = 0x02


main:
  ;Stackpointer initialisieren
  ldi temp, LOW(RAMEND)
  out SPL, temp
  ldi temp, HIGH(RAMEND)
  out SPH, temp

  ldi temp, 0x1B  ;Setze PB0, PB1, PB3, PB4 als Ausgang und PB2 als Eingang
  out DDRB, temp

  ldi temp, 0x00  ;schalte alle Leds an PortB aus
  out PORTB, temp

  ;Konfiguriere externen Interrupt
  ldi temp, 0x01    ;Logikpegeländerung löst Interrupt aus
  out MCUCR, temp  

  ldi temp, 0x40    ;Enable externen Interrupt
  out GIMSK, temp

  ldi temp, 0x01    ;Enable CTC Timer 1, Presacler = 32
  out TCCR1, temp

  ldi temp, 0x04    ;Enable Timer1 Overflow
  out TIMSK, temp

  ldi highLow, RISING    ;highLow initialisieren. 1. Flanke ist eine HIGH

  sei    ;Enable Interrupts

loop: rjmp loop   ;Haupschleife

EXT_INT:
  cpi highLow, RISING  ;Der Puls ist eine Steigede Flanke
  brne FALLING_EDGE  ;Wenn eine Fallende Flanke, spring zur Routine
  ldi temp, 0x00
  out TCNT1, temp    ;Counter resetten
  ldi highLow, FALLING  ;Nächster Puls ist eine Fallende Flanke
  reti

FALLING_EDGE:
  ldi puls, TCNT1
  ldi highLow, RISING    ;Nächser Puls ist eine Steigende Flanke
  reti

test: reti

> Was geht denn nicht ?
TCNT1 wird nicht erhöht und bleibt auf 0.

> Simulierst Du (kann Dein Simulator überhaupt T1) ?
> Oder debuggst Du ?
> Oder Real Life ?

Ich simuliere mit dem Simulator von AVR Studio.

mfg Robert



Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub der Simulator hat einen Bug beim dem Tiny und dem Timer. Suche 
mal hier im Forum. P.S. Ich habe dabei auch schon einige Stunden 
verloren.
Im Prozessre geht der timer aber.

Beitrag "Timer 1 vom Tiny25 leuft nicht an"

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ldi puls, TCNT1
"ldi" lädt einen konstanten Wert in ein Rechenregister. Das ist aber 
sicher nicht das, was hier gemacht werden soll. Du willst ja vermutlich 
nicht die Adresse von TCNT1 in puls stehen haben, oder irre ich mich? 
Ich denke, an dieser Stelle (und auch an ein paar anderen Stellen) ist 
der Befehl "in" Dein Freund...

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das war der Bug des Simulators. Mit dem Simulator 2 funktionierts 
super.

Danke Jonny, für den Tipp. Bin halt noch Assembler Anfänger.

Autor: Dannecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Habe das gleiche Problem!

Aber welches ist der "Simulator 2" welcher dieses Problem lösen soll?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simulator 2 gibts im neusten AVR Studio 4.13
www.atmel.com

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja mit dem Simulator 2 funktionert das Ganze.

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.