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


von Fabian (Gast)


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.

von Rahul (Gast)


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...

von Fabian (Gast)


Lesenswert?

Das Problem ist nur, das ich 3 um 120° versetzte Signale brauche

von Rahul (Gast)


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.

von Fabian (Gast)


Lesenswert?

Die Frequenz soll 15,6KHz betragen.

von Rahul (Gast)


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...)

von Fabian (Gast)


Lesenswert?

Totzdem vielen Dank, vielleicht kann mir ja wer anders helfen

von Marko (Gast)


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

von Marko (Gast)


Lesenswert?

hab aber sowas bisher noch nicht probiert, also keine Garantie

von Fabian (Gast)


Lesenswert?

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

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.