Genau.
Intern kann er nur 9,6MHz erzeugen. Die 20MHz musst du extern erzeugen und du kannst sie auch nur dann verwenden wenn du den Controller mit mind. 4,5V betreibst.
Genau.
Intern kann er nur 9,6MHz erzeugen. Die 20MHz musst du extern erzeugen und du kannst sie auch nur dann verwenden wenn du den Controller mit mind. 4,5V betreibst.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
... ok, danke euch erstmal für die Hinweise.
Ich habe jetzt mal geschaut, was wo bei rauskommt:
Vorteiler immer aus. Bei 9,6 MHz komme ich auf umzu 17,5 kHz, bei 4,8 MHz umzu 9,2 kHz. Da sollte sich mit ein paar C's am Übertrager irgendwo eine Resonanz auf der Grundwelle oder einer der Oberwellen finden lassen.
Ich werde den ganzen Trum mal zusammenstecken und schauen, ob ich da was wuppen kann ... Ich werde berichten ... Hat zwar nicht direkt was mit Robotik zu tun, wohl aber mit RC ...
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
... niemand sacht das, aber ich bin schon so lange in Foren unterwegs (da gab es das WWW noch gar nicht), das ich da vorsichtig geworden bin
Sodele... Software ist fertig und tut, was sie soll. Anbei der Quellcode zur allgemeinen Verwendung, falls es wer braucht.
PB0 befeuert direkt einen kleinen FET (3A- Typ aus der Grabbelkiste), der wiederum einen 1:10 Übertrager mit umzu 6V befeuert, der wiederum auf der Sekundärseite eine EL- Folie zum leuchten bringt.
Der Teil ist erst im Kopf fertig und wird wohl morgen zusammen gesteckt.
PB1 kümmert sich um Änderungen bei Druck auf das Wählrad, PB2 und PB3 um Statusänderungen beim Drehen des Rades... Welches Rad fragt ihr? Wählrad RC Sender Spektrum DX- Serie... Und nu ist wohl auch klar, das ich nicht nur schnöde das Display beleuchten möchte, sondern das auch schön haben will
Code:$regfile = "attiny13.dat" $crystal = 4800000 '$prog &HFF , &H72 , &HFF , &H00 ' 9,6 MHz, Vorteiler aus $prog &HFF , &H75 , &HFF , &H00 ' 4,8 MHz, Vorteiler aus Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1 'PWM im Schnellgang Dim Z As Byte , T As Bit , L As Byte ' Z= Zähler P-Breite, T= dunkel/hell, PWM Startwert Dim M As Bit , N As Bit , W As Byte , D As Byte ' Merker für Rollen Eingänge, Geschwindigkeit Dimmer, AN- Zeit L = 8 : W = 10 : D = 10 ' Vorbelegen Config Pinb.0 = Output ' PWM Ausgabe Config Pinb.1 = Input ' INT0 Eingang (Klicktaste) Config Pinb.2 = Input ' Eingang Rollen links Config Pinb.3 = Input ' Eingang rollen rechts Portb.1 = 1 ' Pullup einschalten Portb.2 = 1 ' Pullup einschalten Portb.3 = 1 ' Pullup einschalten On Int0 Isr_display ' Sprungziel bei Auslöung Config Int0 = Change ' Jeden Pegelwechsel nutzen Enable Int0 ' INT0 einschalten Gosub Isr_display ' Erstmal beim EInschalten Licht machen Do ' Start Hauptschleife While T = 1 ' Licht ist an, also Ausdimmen Decr Z Pwm0a = Z If Z = L Then T = 0 ' Ende, wenn Startwert erreicht Waitms W ' Geschindigkeit des Dimmens Wend If Pinb.2 = M Then ' Start Abfrage der Rollen- Eingänge M = 1 : Gosub Isr_display ' und Sprung, wenn sich was geändert hat End If If Pinb.2 = M Then M = 0 : Gosub Isr_display End If If Pinb.3 = N Then N = 1 : Gosub Isr_display End If If Pinb.3 = N Then N = 0 : Gosub Isr_display End If ' Fertig mit der Auswertung Loop Isr_display: ' INT- und Sprungziel Disable Int0 ' Erstmal für Ruhe sorgen While T = 0 Incr Z Pwm0a = Z If Z = 128 Then T = 1 ' Bis 50% Puls/Pause hochzählen Waitms W Wend Wait D ' Display für D Sekunden an lassen Enable Int0 ' Ab jetzt wieder horchen Return ' und zurück zum Hauptprogramm End
Schön dass es klappt!
Aber es wäre gar nicht nötig gewesen die Resonanzfrequenz des Übertragers anzupassen - denn man kann die PWM-Frequenz auch nahezu stufenlos variieren. Das geht im sogenannten "CTC"-Modus. CTC heißt "Clear Timer on Compare". Der Timer zählt in diesem Modus von 0 aufwärts, und wenn er den Wert des OCR-Registers erreicht, toggelt er einen Ausgang und wird sofort auf 0 gesetzt, um wieder von vorne zu beginnen. Heißt also, dass der Ausgang umso öfter getoggelt wird, je niedriger der Wert im OCR-Register ist - und den kann man ja in 256 Schritten variieren. In den Datenblättern sind sehr schöne, aufschlussreiche Grafiken hierzu abgebildet. Auch wenn´s jetzt auch schon mit der "festen" Frequenz funktioniert - aber vielleicht brauchst Du ja irgendwann noch mal eine variable Frequenz![]()
... hu? Da ich sowieso noch nicht fertig bin, lass mich mal wissen, wie man dieses Register in Bascom setzen kann? Ich finde da nix zu (oder ich sehe es einfach nicht). Einfach ein compare0a=x klappt ja so nicht ...
BTW:
Nach einigem Rumspielen habe ich mal eine andere Merkwürdigkeit entdeckt...
Wenn man die Wait- Statements mit den vorbelegten Variablen W und D besetzt, schmiert der Tiny irgendwann ab, wenn man abwechselnd einen INT und eine der beiden anderen Eingänge triggert. Wenn man aber die Wait's mit fixen Werten setzt, dann passiert das nicht
Der Interrupt bringt wahrscheinlich die Waitschleife durcheinander.
Wenn ein Interrupt ausgelöst wird, müssen bestimme Registerinhalte gesichert werden. Eventuell macht dir das Schwierigkeiten.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen