Ich habe ja auch keinen Tiny26 sondern einen Tiny15L. Wenn ich deinen Code für den Tiny26 draufspiel, meckert Bascom bei den PWM-Einstellungen, ich denke mal, dass die sich auch unterscheiden, da der Tiny26 ja wesentlich größer ist, als mein Tiny15.
Druckbare Version
Ich habe ja auch keinen Tiny26 sondern einen Tiny15L. Wenn ich deinen Code für den Tiny26 draufspiel, meckert Bascom bei den PWM-Einstellungen, ich denke mal, dass die sich auch unterscheiden, da der Tiny26 ja wesentlich größer ist, als mein Tiny15.
Im Grunde garnicht aber Bascom hat bei den Tinys die Eigenart bei den Timern kaum eine durchgängie unterstützung vorhanden ist und man die Register mit Namen ansprechen muß.
Beim Tiny26 weißte ja wie und beim Tiny15L ist das ebenso nur das die Register andere Namen haben.
Dazu kommt das der 15L kein Ram hat.
Da sind noch einige Einstellungen fällig.
Probier mal folgendes:
Das hab ich jetzt frei ausem Gedächtnis getippert also keine Garantie auf Schreibfehler (Bascom wird sich schon melden)Code:'PWM Test für Attiny15L
$regfile = "at15def.dat"
$tiny
$noramclear
$crystal = 1600000
$noinit
Dim A As Iram Byte
Tccr1 = &B01010011
Tcnt1 = &B10000111
Ddrb.1 = 1 'Port b.1 als Ausgang.
Do
For A = 0 To 255
Ocr1a = 127
Ocr1b = 127
Ocr1a = A
Waitms 5
Next
Loop
End
Als Tip:
Wenn du einen Controller hast dessen Timer Bascom nicht richtig unterstützt dann schau ins Datenblatt wie das passende Register heist,an welcher Adresse es sitzt,welche Bitkombinationen fällig sind und such in der zum Controller passenden Def-Datei danach.
Dort findest du anhand der Adresse auch raus wie das Teil genannt wird (Meist wie im Datenblatt).
Dann kannste damit selber was veranstallten.
Oh man ich verzweifel hier langsam echt. Mit dem Code gibt mir Port 1 wieder 5.87V aus :( Ohne irgendeinen Code bekomm ich konstant 4,20V geliefert.
So,hab das mal eben probiert.
Der Alte 15L hier nimmt das wunderbar an.
Was deine 5.8V angeht so möchte ich jetzt mal wissen was du am PWM-Pin angeschlosen hast .
Häng doch einfach mal ne LED mit Widerstand drann dann kannste auch gleich sehen ob es geht oder nicht.
Die endstufen ist jetzt erstmal egal.
An meinem PWM-Pin (also Pin6) habe ich: MISO, Jumper, die RC-Kombination und den MOSFET (das Gate).Zitat:
Zitat von Ratber
Habe zum test die Endstufe mittels Jumper getrennt und eine LED angeschlossen.
Und der Ausgang funzt auch normal.Mit dem Code blinkt die LED wunderbar, liegt also an den PWM-Einstellungen.Code:$regfile = "at15def.dat"
$tiny
$crystal = 1000000 ' used crystal frequency
$noramclear 'Port b.3 als Ausgang.
Config Portb.1 = Output
Do
Portb.1 = 1 'Pin wird auf High, also 5V geschaltet
Waitms 100
Portb.1 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
Loop
End
Lass den Kondensator erstmal weg und häng entweder ne LED an den Pin oder nen Lüfter an den Mosfet.
So sieht man ohne passende Messgeräte am ehesten ob sich was tut.
Siehe mein Edit ;) Habe ich bereits gemacht und mit nem "LED-Testcode" funzt es auch ;)
Kleine Frage zwischendurch: Gibt es irgendwo eine Erklärung, was dieses &B10000111 bedeuten soll? ;)
Wie gesagt mit meinem Blink-Code funktioniert der Tiny. Sobald ich den PWM-Code von dir eingebe streikt die LED.
Sicher gibt es da ne Erklärung.
Schau mal in die Def da steht die Registeradresse von Tccr1,Tcnt1 usw. drinne.
Für die Beiden also ...:
Tccr1 = $30
Tcnt1 = $2F
Dann schauen wir ins Datenblatt in die "ATTiny15L Register Sumary" was sich damit finden läast und ob es da übereinstimmungen gibt.(MCSelec hat da schon einigemale ins Klo gegriffen.zb. Tiny45 mit angeblichem HW-multi.)
Ja,da steht in der Kurzübersicht das wir auf den Seiten 29 und 30 weitere Informationen bekommen.
Dann gehen wir doch mal auf Seite 29.
dort erfahren wir daß das Kürzel TCCR1 = Timer Counter/Control Register 1 bedeutet und etwas weiter runter das Tcnt1 für Timer Counter 1 steht.
Desweiteren erläuter der Tex zu beiden welches Bit wofür steht.
Ansonsten kann ich jedem nur wärmstens empfehlen sich mit den Timern auseinanderzusetzen denn erstens braucht man se recht oft und zweitens ist die Funktion zwar kindereinfach wenn man se mal begriffen hat aber das Begreifen ansich ist nicht so einfach da man dafür die Zusammenhänge kennen muß.
Mit deinem Code für den Tiny15L leuchtet die LED ein bisschen. Wenn ich nun OCR1a = 255 und OCR1b = 255 setzte, müsste die LED doch leuchten oder? Das tut sie nämlich nicht, sie leuchtet wieder nur ein bisschen und ich messe mit dem Multimeter eine Spannugn von 2,4V.
Wie kann ich denn die Ausgangsspannung auf max. bzw. min setzten?!