ATmega8 Timer1/2, Bascom??

Gast #342695
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.
Gast #342696
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...
Gast #342698
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.
Gast #342700
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...)
Gast #342702
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren