mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 Timer1/2, Bascom??


Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, kann mir jemand helfen, und zwar möchte ich 3 8-Bit
Timer(OC1A,OC1B,OC2)haben, die bei unterschiedlichen Bits starten und
enden sollen. Also wenn die Timer vom 0 bis 512 zählen, soll OC1A von 0
bis 255 =1 sein und den Rest =0, OC1B soll =1 von 170 bis 425 und der
Rest =0 sein und OC2 soll von 340 über 0 bis 83 =1 sein und der Rest
=0.Ich programmiere in Bascom und wäre über jeden Tipp oder jede
Anregung sehr dankbar.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es so machen, dass ich nur einen Timer benutze und diesen in
regelmässigen Abständen resete (CTC-Mode).
Diese Abstände würde ich entsprechend deinen Intevallen einstellen -
ggT lässt grüssen.
Wenn man jetzt eine Variable mitzählt, dann könnte man die Pinzustände
aus einer Tabelle mit der Variable als Index auslesen.
Man könnte auch eine Tabelle mit Nachlade-Werten und Pinzuständen
machen, dann wäre man noch flexibler...

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist nur, das ich 3 um 120° versetzte Signale brauche

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das Problem ist nur, das ich 3 um 120° versetzte Signale brauche
Hab ich mir doch gedacht...
Und bei welcher Frequenz?

Mein Vorschlag läuft darauf hinaus, alle 60° (?) eine neue Flanke zu
erzeugen. Bei 50Hz würde alle 3,33ms ein Interrupt ausgelöst werden
woraufhin ein neues Bitmuster am Ausgang ausgegeben wird. Das würde
sich dann alle 6 Durchläufe wiederholen.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frequenz soll 15,6KHz betragen.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann rechne dir das mal aus...
Von Bascom hab ich nicht genug Ahnung, um dir einen fertigen
Programmcode (oder zumindest ein Programmgerüst) zu liefern.
Übrigens sehe ich bei deiner Variante das Problem, zwei Timer
gleichzeitig zu starten. (Deswegen habe ich einen anderen Lösungsweg
vorgschlagen. Möglichekeiten, das Signal zu erzeugen gibt es ja diverse
verschiedene...)

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Totzdem vielen Dank, vielleicht kann mir ja wer anders helfen

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Timer im PWM auf 60° verschoben laufen lassen
wird nicht ganz hinhauen.
hmm .. höchstens, du startest Sie entsprechend nacheinander
also auf alle Fälle dann den Timer1 auf 8-Bit laufen lassen,
damit er so schnell wie Timer2 läuft.
Dann den gleichen Prescaler.
Bei 4MHz und Prescaler 256 kommste beim 8Bit-Timer auf 15,25KHz,
das sollte gehen.
Das Tastverhältnis auf 50:50 und die Timer um 1333333 Takte verschoben
starten

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab aber sowas bisher noch nicht probiert, also keine Garantie

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ähnlich habe ich mir das auch gedacht, mein Problem ist es das Bascom
zu sagen ;-)

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.