Forum: Mikrocontroller und Digitale Elektronik Tiny 13 Frequenz anstelle von schalten


von Frank L. (Firma: delucks) (delucks)


Angehängte Dateien:

Lesenswert?

Hallo Wissende
im Netz fand ich eine Minimalschaltung für einen Modellbau-RC-Schalter 
mit Tiny 13.Anstelle einer Schaltfunktion möchte ich an Portb.4 eine 
Frequenz von  etwa 110KHz ausgeben.
Genauer gesagt :
Feernbedienungsknüppel Null Portb.4 = High ,
               Knüppel voll Portb.4 = Rechtecksignal.

Mit dem angehängten Programm in Bascom sollte es einfacher verständlich 
sein.
Ist das mit einigen Zeilen zu machen oder gehts wohlmöglich garnicht?
So könnte ich mir einen extra Oszillator für LED-Nachtflug-Beleuchtung 
ersparen.Die Frequenz und das Tastverältnis sind nicht 
kritisch;100Khz-120Khz u.1:2 - 2:1 wären okay.
Ich selber komme mangels Kenntnissen nicht weiter darum frage ich hier 
um Hilfe.

Gruß vonder sonnigen Nordsee
Frank

von tom (Gast)


Lesenswert?

normalerweise:

pwm mit ausgabe auf PB0 oder PB1 (OC0A, OC0B Pins). vorteil - macht die 
hw ohne cpu last im hintergrund, musst du nur konfigurieren - starten 
und stoppen.

da du aber PB4 benutzen willst oder musst, wäre z.B. eine timer-ISR die 
alle 10usec kommt und in der du den PB4 toggelst eine lösung die dir ca. 
100kHz dann erzeugt.

wie du dafür den Timer0 des tiny13 zu clocken und konfigurieren hast 
bitte dem datenblatt im detail entnehmen.
tip: konfiguriere deine cpu-clock auf 9,6Mhz, da diese isr schon eine 
gute cpu-grundlast beinhaltet. damit den timer clocken und du hast 
104nsec tick.
jetzt so das reload register vom timer konfigurieren (clear timer on 
compare match mode) das es nach 96 ticks überläuft und die isr gestartet 
wird und schon hast du 100khz ;o).

da der tiny13 nur den einen timer hat und du sicherlich noch andere 
sachen zeitgesteuert machen wills oder musst könntest du in der alle 
10usec kommenden isr ja noch einen z.B. millisekunden counter erzeugen, 
den du dann von "aussen" auswerten/benutzen kannst.


viel spass + erfolg, tom.

von tom (Gast)


Lesenswert?

axso, alle 10usec und dann toggeln macht natürlich nur 50khz, also 
doppelt so schnell und du hast dann 100khz...

von Hannes L. (hannes)


Lesenswert?

tom schrieb:
> axso, alle 10usec und dann toggeln macht natürlich nur 50khz, also
> doppelt so schnell und du hast dann 100khz...

Also dann alle 5 µs einen Interrupt. Und dann noch (mit demselben Timer, 
da Tiny13) die Impulsbreite des Kanalimpulses einlesen. Und das in 
Bascom. Na denn man tau...

Ich würde erstmal über den Einsatz des Tiny25 nachdenken, der hat 
wenigstens einen zweiten Timer, der im Hintergrund die Frequenz erzeugen 
kann, während der andere Timer als Referenz für die Kanalimpulsmessung 
dient. Das dürfte dann auch in Bascom realisierbar sein.

...

von Frank (Gast)


Lesenswert?

Moin Tom
ich bin nicht auf PB4 angewiesen,erschien mir am einfachsten weil schon 
benutzt.Mit dem Timer hast du auch Recht,wird schon benutzt.Das 
anzupassen ist mehr als ich kann.Die Clockfrquenz sollte imho auch so 
bleiben wegen der Eingangssignalerkennung.
Erzähl mir bitte mehr zur ersten Möglichkeit;ich bin allerdings 
anfangender Anfänger.

Frank

von Karl H. (kbuchegg)


Lesenswert?

Ich denke man sollte erst mal klären, wozu man

> So könnte ich mir einen extra Oszillator für
> LED-Nachtflug-Beleuchtung ersparen.Die Frequenz
> und das Tastverältnis sind nicht kritisch;100Khz-120Khz
> u.1:2 - 2:1 wären okay

hier überhaupt 100kHz braucht.

Wenn es reicht, einfach irgendein Rechteck zu erzeugen, dann kann man in 
der Hautschleife auch einfach den Pin toggeln, wenn das Servosignal lang 
genug ist. Was da als Frequenz rauskommt ist dann zwar nicht mehr so 
genau definiert, aber wenn es darauf nicht ankommt, ist das ja kein 
Beinbruch.

Und die Erweiterung wäre trivial

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.