Forum: Mikrocontroller und Digitale Elektronik AVR: Timer0 + Timer 1


von Anfänger (Gast)


Lesenswert?

Hi Leute,
ich wollte Timer0 in kombination mit Timer1 laufen lassen. Dabei 
representiert Timer0 die Abtastzeit und Timer1 zählt die Anzahl der 
Punkt.
Dafür habe ich den Timer1 Prescaler auf extern gestellt und beim Timer0 
den Pin für CMP-Reg-A auf Toggeln gestellt und dann mit dem Eingang vom 
Timer1 verbunden.

Was hat geklapt: Timer0 läuft einwandfrei (gemessen mit Oszi) und in der 
Simulation mit AVR Studio lief es auch (Timer1 Takt manuel eingegeben).

Problem: Der Timer1 reagiert nicht auf den externen Signal.

CHIP: Atmega 168 + STK500

Frage: Geht das überhaupt und wenn ja auf was muss ich achten oder wie 
sollte ich es am besten angehen?

Danke im vorraus

von AVRFan (Gast)


Lesenswert?

>Frage: Geht das überhaupt und wenn ja auf was muss ich achten oder wie
>sollte ich es am besten angehen?

Tipp: Mal sagen, was Du überhaupt machen willst.

von Anfänger (Gast)


Lesenswert?

Ich will den Spannungen mit dem AD-Wandler messen. Dabei möchte ich die 
Abtastzeit und die Anzahl der Messungen einstellen können.
Da dachte ich mir ich benutze Timer0 für die Abtastzeit und Timer1 zum 
zählen der Wandlungen.

von Anfänger (Gast)


Lesenswert?

PS. beim AD-Wandler (Atmega 168) kann man einstellen, das die Wandlung 
über Timer 0 gestartet wird.

von Anfänger (Gast)


Lesenswert?

Achso, ich weiss ,das man das Zählen auch mit einem Register durch 
führen kann. Aber wenn ich schon einen Timer frei habe warum nicht 
nutzen und ich finde es eleganter. Ausser dem verstehe ich nicht, warum 
es nicht klappen sollte.

von Peter D. (peda)


Lesenswert?

Anfänger wrote:
> Achso, ich weiss ,das man das Zählen auch mit einem Register durch
> führen kann. Aber wenn ich schon einen Timer frei habe warum nicht
> nutzen und ich finde es eleganter.

Nö, es ist sogar ziemlich von hinten durch die Brust ins Auge.


Wie willst Du denn den Zählimpuls am Timereingang erzeugen?

Du wirst ja wohl einen Interrupthandler haben, der den ADC ausliest und 
dann ist es ja wohl ein Klacks, noch ne Variable hoch zu zählen.


Peter

von Anfänger (Gast)


Lesenswert?

Hi,
zur Zeit läuft es mit einem Register den ich hoch zähle. Ok eleganter 
ist es vieleicht nicht.
Aber ich dachte mir, ich habe einen Timer noch frei, warum nicht nutzen 
-> kann ja ich gleich was dazu lernen.

Der Timer 1 kann als Takteingang einen externen Takt benutzen und mit 
Hilfe des Comperators vom Timer0 kann ich einen Takt erzeugen.
Wenn ich jetzt den Comperatorausgang mit einem Kabel an den externen 
Timer1-Takteingang anlege sollte es doch klappen (so war die Idee). Die 
Frage ist also wie bekomme ich den Timer1 dazu auf einen externen Takt 
zu reagiern. Nach Doku muss ich den Prescale auf extern Takt einstellen 
(ragiert auf steigende und fallende Pegeln).-> habs gemacht

Mir geht es dabei um das Verständnis, ich glaube es müsste klappen und 
die Frage ist jetzt nur wie. (Glaube alles so zumachen wie es in der 
Doku steht)

@ Peter Dannegger: ich erzeuge den Zählimpuls mit Hilfe von Timer0 und 
seinen Komperator A. Dabei repräsentiert der Wert im Komperatorregister 
A den Maximalwert vom Timer0 und bei jedem Überlauf wird der Ausgangs 
Pin, für Komperator A, getoggelt. Wenn man jetzt den Timer1 auf externen 
Takt legt und den Pin vom KompertorA mit ihm verbindet müsste es doch 
klappen, oder?

Also ich danke für eure hilfe,
könnt ihr mir auch sagen warum es nicht klappt oder wie es klappen 
könnte?

von Abfänger (Gast)


Lesenswert?

@ Peter Dannegger: Aber ich habe das Auge getroffen :)
                   und nicht zu vergessen auch die Brust

von Peter D. (peda)


Lesenswert?

Du findest also wirklich, einen Draht zu löten, nen Timer und 2 Portpins 
zu vergeuden ist einfacher, als "i = i + 1;" zu schreiben?


Peter

von Anfänger (Gast)


Lesenswert?

Nein, finde ich nicht. Im Programm  benutze ich ja auch 'inc i' statt 
einen Timer. Darum ging es mir nicht, nach der Doku müsste meine Idee 
funktionieren und ich möchte nur es zum laufen bringen. Achso, ich löte 
nichts zusammen ich benutze einen STK500 und das mit den beiden Timern 
ist nur zur Testzwecken. Die Richtigeanwendung wird  Morgen getestet und 
sollte schon laufen. Naja sollte, man weiss ja nie was passiert.

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.