Aus der Bascom-Doku werd ich nicht schlau...... Allerdings steht im Datenblatt des ATmega8, das man bei bestimmten PWM-Modi einen TOP-Value setzen kann (bei Timer1). Geht das auch in Bascom? Muss ich dazu Assembler einbinden? - habe hierzu leider nirgens was gefunden. Hintergrund: Ich möchte am OC1a ein Rechtecksignal ca 27kHz, Tastverhältnis 1:8 erzeugen können Die Frequenz soll möglichst exakt eingestellt (und auch verstellt) werden können. (Momentan mache ich das ganze im Timer-Modus, wobei ich die Low-Zeit mit Timer1 und die High-Zeit mit Pulseout festlege - ziemlich ungenau)
Je nach Timer-Modus steht der TOP-Value in unterschiedlichen Registern. Das kann OC1A aber auch ICR1 sein... Du brauchst also eine Periodendauer von ca. 37µs. Die sollte man im CTC-Modus (Seite 86 im Datenblatt) erzeugen können bei entsprechend hoher Taktfrequenz. Das Tastverhältnis kann man dann durch OC1B einstellen.
>und geht das in Bascom-Basic?
Weiß ich nicht. Entweder kann man in Bascom den Timer komplett manuell
einstellen können, oder es gibt einen entsprechenden "Bauklotz".
hmmm, dann befürchte ich, ich werde an Assembler nicht vorbeikommen - oder muss zumindest die register von hand setzen. Merci für die hilfe.
Eigentlich sollte sowas auch in Bascom möglich sein. Ein anderer Weg wäre es, C zu lernen. (Für den Vorschlag hab ich schon so oft einen auf die Mütze bekommen...) Allerdings stellst du ja gerade selber fest, dass Bascom seine Grenzen hat (die man in C nicht hat...).
Da sind die Grenzen von Bascom noch lange nicht in Sicht. Du kannst in Bascom auf alle Register direkt zugreifen. Bei Timer1 sieht das z.B. so aus Tccr1a = &B11110010 Tccr1b = &B00011000 Icr1h = 0 Icr1l = 100 Capture1 = 100 Compare1a = 80 Compare1b = 20 oder eben ASM einbinden z.B. $asm ldi r18,&b11110010 Out Tccr1a , R18 ldi r18,&b00011010 Out Tccr1b , R18 $end Asm Gruss Gerhard
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.