www.mikrocontroller.net

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


Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anfänger (Gast)
Datum:

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

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Abfänger (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.