Timer im Atmel - wie benutzen?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 30 12 2024  23:41:00      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Timer im Atmel - wie benutzen?
Suche nach: timer (2126)

    







BID = 70673

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  
 

  


Hallo

Ich hab es immer noch nicht so recht kapiert, wie ich den TImer im ATmel korrekt benutzen kann. Ich möchte z.B. bei einem Interrupt Signal den Timer für exakt 0,5 Sekunden starten (bei 10 MHz) und währenddessen die Impulse zählen. Wie wird dies erreicht? Habe schon viele TUts gelesen, doch ich werde daraus nicht schlau. WÄre nett, wenn mir einer mal dazu einen kleinen Programmcode schreiben könnte für den Assembler.

mfg und danke

BID = 70695

chilla

Schreibmaschine



Beiträge: 1403
Wohnort: von hier zwei mal rechts und dann zwei mal links

 

  

Ich versteh nicht ganz.

bei 10 MHz und ohne Vorteiler macht der Timer in 0,5s doch genau 5000000 Impulse.
oder willst du genau 0,5s messen?
dann ist die Quarzfrequenz aber ziemlich unglücklich gewählt!

soll heissen:

was willst du eigentlich machen????

standart-tipp:
mit Vorteiler und Software-Reload des Zählregisters Fehler möglichst minimieren.

mfg CHillA

_________________
Wenn man erst einmal die Sache verstanden hat, kapiert man auch, wies im Handbuch gemeint war.

Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet wer

BID = 70726

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  

Hab ich doch oben erklärt!

Es geht darum, dass ich in einer gewissen Zeit Impulse messen will, sie danach auswerten und das Ergebnis an ein Display ausgeben will. Und ich brauch halt diesen 0,5s Timer, damit eine Zeit habe, womit ich mein Ergebnis erstellen kann. Die 0,5s müssten jedoch ziemlich exakt sein.

Kurz gesagt: In dieser Zeit bekommt der Controller Impulse vom Geschwindigkeitssensor und soll die Geschwindigkeit errechnen. Geschwindigkeit = Weg / Zeit.

Ich hoffe ich habs verständlich geschildert!

mfg

BID = 70739

Benedikt

Inventar

Beiträge: 6241

Was für einen uC verwendest du ? Atmel ist ein Hersteller...
Falls sich der Vorteiler groß genug einstellen lässt, dann stell den Reloadwert so ein, dass alle 0,5S ein Interrupt erzeugt wird.
Ansonsten stell den Timer auf einen möglichst glatten Wert ein (z.B. 400Hz) Dann zählst du eine Variable hoch (oder runter), bis diese überfließt (hier nach 200 Werten) und hast so die 0,5s...

BID = 70828

Jornbyte

Moderator



Beiträge: 7193


.include "m8def.inc" ;Pfad zur Include-Datei ggf. anpassen

.def temp = r16 ;braucht man immer

.org 0000

rjmp reset ;RESET
RETI ; External Interrupt0 Vector Address
RETI ; External Interrupt1 Vector Address
RETI ; Output Compare2 Interrupt Vector Address
RETI ; Overflow2 Interrupt Vector Address
RETI ; Input Capture1 Interrupt Vector Address
RETI ; Output Compare1A Interrupt Vector Address
RETI ; Output Compare1B Interrupt Vector Address
rjmp check ; Overflow1 Interrupt Vector Address
RETI ; Overflow0 Interrupt Vector Address
RETI ; SPI Interrupt Vector Address
RETI ; USART Receive Complete Interrupt Vector Address
RETI ; USART Data Register Empty Interrupt Vector Address
RETI ; USART Transmit Complete Interrupt Vector Address
RETI ; ADC Interrupt Vector Address
RETI ; EEPROM Interrupt Vector Address
RETI ; Analog Comparator Interrupt Vector Address
RETI ; Irq. vector address for Two-Wire Interface
RETI ; SPM complete Interrupt Vector Address
RETI ; SPM complete Interrupt Vector Address

reset:

;Stackpointer initialisieren
ldi temp,low(RAMEND)
out SPL, temp
ldi temp,high(RAMEND)
out SPH, temp

;Timer initialisieren
ldi temp, 0x00 ;kein pwm und kein output-pin
out tccr1a, temp
ldi temp, 0b00000100 ;/256
out tccr1b, temp
ldi temp, 0xb3 ;Werte für 0,5 Sekunden verzögerung
out tcnt1h, temp ;bei 10 MHz
ldi temp, 0x3b
out tcnt1l, temp

ldi temp, 0b00000000 ;Port D = Eingang
out DDRD, temp

ldi zl,0 ;Zählerregister auf Null
ldi zh,0
sei ;Interrupt einschalten

;****** Haupschleife **********************************
loop: sbic Portd,0 ;Port abfragen
adiw zl,0x01 ;Zählen wenn PinD0 = 1 ist
rjmp loop

;****** Interrup des Timers ***************************
check: cli ;Interrupt aus
in temp,sreg ;Status-Reg sichern


;Hier kommt deine Berechnung und Anzeige rein
;der Zählwert steht im Register ZL und ZH


ldi zl,0 ;Zählerregister wieder auf Null
ldi zh,0
push temp
ldi temp, 0xb3 ;Timer wieder updaten
out TCNT1H, temp
ldi temp, 0x3b
out tcnt1l, temp
pop temp
out sreg,temp ;Status-Reg wiederherstellen
sei ;Interrupt wieder einschalten
reti


_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 33 Beiträge verfasst
© x sparkkelsputz        Besucher : 182631413   Heute : 7503    Gestern : 7815    Online : 182        30.12.2024    23:41
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0470449924469