mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieviele Timer nötig?


Autor: Thomas O. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich stehe vor folgendem Problem das ich 4 Verbraucher schalten will und
das ganze mit einem 16 Bit Timer machten will um eine große Genauigkeit
zu haben. Weiß aber nicht so richtig wie ich das machen soll. Ich habe
mir überlegt immer den nächsten Zeitpunkt ans Output Match zu übergeben
und müsste aber irgendwie der Interrupt-Routine übergeben was an der
Reihe ist.

Kann mir jemand sagen ob meine Überlegung Erfolg verspricht oder gibt
es da einen einfacheren Weg wie man das machen sollte.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie lang sind die "schwarzen"? µs, ms, s, min?

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Überschrift pass tnicht mehr so zum geänderten text da ich erst
überlegt hat 2 Timer einzusetzten was aber einen anderen AVR nötig
gemacht hätte.

Also im extrmsten Fall sind die schwarzen Balken 6 mSek lang.

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also im extrmsten Fall sind die schwarzen Balken 6 mSek lang.

6ms maximale oder minimale Länge? "Extremfall" kann beides
bedeuten...

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

minimale Länge, es kann aber passieren das sich die Überschneidung
verringert wenn der erste Impuls kürzer wird oder der 2te später
erfolgen soll und da denke ich wird dann die Probleme geben oder ist es
wirklich damit getan einfach eien neune Wert ins Compare Mtch Register
zugeben und beim nächsten Takt wird schon drauf reagiert. Deshalb
meinte ich evtl. 2 Timer dann hätte man ja genug abstand wenn z.b.
Timer 1 Nur Impuls 1 und 3 steuert und Timer 2 nur Impuls 2 und 4.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du überhaupt damit steuern? - Denn vielleicht geht es ja viel
einfacher, als du momentan denkst.

Und gib mal minimale UND maximale Schaltzeit an.

Wenn 6ms minimal sind, dann hast du ja bei 1MHz sechstausend Takte
Zeit. Da bietet es sich an, mittels Timer einen Zeittakt von z.B. 0,1ms
zu erzeugen und Register als "Zeitzähler" zu verwenden. Der Vergleich
der 4 (8, für ein und aus?) Schaltzeiten kann dann ja per Software
erfolgen, falls der AVR nicht noch mit UART, LCD und weißderGeierwas zu
kämpfen hat.

Wodurch sollen die Impulse ausgelöst werden? Also wonach richtet sich
Impulsbeginn, -Dauer und -Überlappung?

Was muss der AVR noch alles machen?

...

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wollte das Projekt eigentlich garnicht nennen, da man das als
Überforderung meinerseits abstempeln wird. Wobei ich ja garkeine
fertige Lösung suche sondern nur ein paar Tips obs so überhaupt gehen
würde. Ich konnte aber auch größere Aktoren nehmen dann reicht eine
kleienre Zeit als 6mSek udn es gäbe dann keine Überschneidung mehr. Es
geht ja eigentlich nur um ein paar Takte die ich dazwischen Zeit haben
müsste um einen neuen Wert in Comare Match Reister zu schreiben.

Es sid 4 Aktoren die abwechselnd angesteuert werden die Zeiten betragen
zw. 140mSek bis 6mSek bzw. auch kürzer gemacht werden könne wenn ich
größere Aktoren nehme.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ms sind Welten Welten für einen MC.
Mach es entweder so, wie Hannes es gesagt hat (der Timer erzeugt einen
Grundtakt in der geforderten Auflösung), der Rest ist Software.
Eine Alternative wäre die Nutzung des OC-Interrupts, bei der du in der
OC-ISR folgendes machst:
-einen Zähler erhöhen
-aufgrund dieses Zählers verzweigen, was zu tun ist
-OC mit der Zeit bis zum nächten Ereignis laden.

state++
switch (state){
case 1: PIN1=1;OCR1A+=xxx;break;
case 2: PIN2=1;OCR1A+=xxx; break;
case 3: PIN2=0;OCR1A+=xxx;break;
.
.

}

in der letzten Anweisung setzt du "state" wieder auf 0, dann geht der
Kram von vorne los. Die passenden OCR-Werte musst du dir ausrechnen,
hängen vom Vorteiler und Takt ab.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja der Grundtakt ändert sich aber ständig in der Frequenz sowohl auch
in der Pulsweite. Er ist abhängig von einer Scheibe die sich immer
dreht, umso schneller sie dreht desto schneller wird auch die Frequenz
da an einer bestimmten Stelle der Scheibe was ausgelöst werden soll.

Aber ihr habt mir schon geholfen, ich muss jetzt nur schauen das ich
die Überschneidung wegbekomme und dann hätte ich ja genug Zeit jedesmal
den OC neu zu setzten und in der Interruptroutine mit einem Zähler das
ganze zu lösen.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@HanneS: Das ganze richtet sich nach einem Kennfeld das die Zeitpunkte
abgelegt hat. Im Prinzip kann man sagen höhere Drehzahl längere
Impulse. Dazu spielen dann noch ein paar andere Faktoren rein die das
ganze dann verkürzen oder auch etwas verlängern.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas!
So wie du das beschreibst (höhere Drehzahl, längere Impulse), klingt
das nach einer PWM.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klingt mir eher nach Einspritzung :-)
Auch die Überschneidung ist kein Problem:
Pin1 setzen, OCR +4,9ms
Pin2 setzen, OCR +0,1ms
Pin1 aus, OCR +5ms

Damit wird der Pin mit 5ms angesteuert, 0,1ms Überlappung.

Autor: Santa Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder geht es vielleicht um die "Überlistung" eines Geldspielautomaten?

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Santa Klaus. Ne nichts kriminelles.

@Crazy Horse hat recht, worum es geht. Ich will da was flexibles machen
wo nicht nur die Impulslänge nach hinten verändert wird sondern auch der
Beginn der Einspritzung um mich je nach Strömungsverhältnissen anpassen
zu können damit z.b. kein Sprit in der Überschneidung verloren geht usw
hat viele Gründe die dafür sprechen.

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.