Forum: Mikrocontroller und Digitale Elektronik Tiny26 PWM Problem mit Setzen des Compareregisters ?


von Skragan (Gast)


Lesenswert?

hallo forianer,

untenstehender code lässt sich nicht fehlerfrei compilieren, er sagt
assignment error bei compare1a und 1b - was mache ich falsch ?

für hilfe dankbar ist

skragan

__________________________________________________

Dim A As Byte
Dim B As Byte

A = 200
B = 100


Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down ,
Compare B Pwm = Clear Down

Enable Timer1
Enable Interrupts

Compare1a = A
Compare1b = B

Do

Toggle Led_gelb
Waitms 300

Loop

von Skragan (Gast)


Lesenswert?

also gut, in der def gibts wohl probleme, also habe ich nun o.a. code
geändert und anstelle compare1a=a dann ocr1a=a geschrieben, selbiges
mit b. nu kommt aber immernoch keine pwm raus... :/

von Ratber (Gast)


Lesenswert?

Du hats dem Compiler auch nicht gesagt wieviel Bit dein PWM haben soll
Und den Port als ausgang sehe ich auch nicht.

Probier mal das:

=================================

Dim A As Byte
Dim B As Byte

A = 200
B = 100

Ddrb.1 = 1        'Port b.1 als Ausgang.

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B
Pwm = Clear up ,Prescale = 64  'PWM =8 ist neu

Compare1a = A
Compare1b = B

von Ratber (Gast)


Lesenswert?

Hoppla,vergessen.

Der Befehl "Dbrb.1=1 ist nicht unbedingt nötig und dient nur der
sicherheit falls man den Port noch anderweitig nutzt.

Wichtig ist nur das "PWM = 8" in der Config.

Ohne läuft nix.

von Skragan (Gast)


Angehängte Dateien:

Lesenswert?

vorab schonmal danke, jedoch:

der tiny 26 hat nur eine 8bit pwm - gebe ich den befehl in die zeile
mit ein, kommt unknown config parameter [pwm].

wegen data direction:

Config Portb = Output                                       'LED´s /
ISP
 stand weiter oben, habe ich nicht mitkopiert :)

noch andere ideen ? mittlerweile sieht der code (jetzt koplett kopiert)
aktuell so aus:

von Skragan (Gast)


Lesenswert?

der code hängt natürlich als anhang dran :)

von Ratber (Gast)


Lesenswert?

Hmmm

Ich erkenne in deinem Listing auf den ersten Blick nichts
ungewöhnliches.Es müßte funktionieren.

Leider hab ich momentan keinen T26 hier um das mal zu testen aber
normalerweise funktioniert das auch bei mir ohne Probleme.


Hier mal nen Einfaches Testprogramm wenn du willst.


===================================================



Dim A as Byte

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale =
64


Do
Gosub PWM
Loop

Pwm:
 For A = 1 to 255
  Pwm1a = A
  Waitms 15
 Next
Return

End

==================

Mit ner einfachen LED über 160 Ohm nach Masse sollte es dann gut
Sichtbar sein.


Oder häng dich mal an Port b3.
Der ist frei.
Die Configzeile wird dann entsprechend angepasst.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

anhängend ein screeni des compilierens. ich habe ja die leise
befürchtung, das die def-datei fehlerhaft ist... (im nächsten post)...

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

def-dateiausschnitt

von Skragan (Gast)


Angehängte Dateien:

Lesenswert?

also, mit angehängtem assembler code klappts. offenbar wurde bei der
übersetzung / umsetzung des compilers auf den tiny26 geschlampt: das
korrekte setzen der TCCR1A und TCCR1B ist mit der config timer1=pwm
blabla zeile NICHT möglich (siehe beiliegenden code...)

das sollte man mal jemandem sagen, der damit zu tun hat...

grüße

von Ratber (Gast)


Lesenswert?

Mahlzeit zusammen.


@Skragan

Ich hab mir mal aus nem alten Datenlogger den gesockelten Tiny26
besorgt.

Als erstes mal dein Programm "LICHTREGELUNG HW PWM.RTF"

Da streikt mein Compiler bei den Zeilen 11 bis 20 da die
Portdefinitionen natürlich unsinn sind (Is mir auch nicht aufgefallen
weil man die normalerweise nebenbei macht).

Richtig ist also :

=====================
Config Pina.0 = Input
'Eingangsrelais

Config Pina.1 = Input                                       'Poti R17
Config Pina.2 = Input                                       'Poti R18
Config Pina.3 = Input                                       'Poti R19

Config Pina.4 = Output
Config Pina.5 = Output
Config Pina.6 = Output
Config Pina.7 = Output
=========================

Danach kann ich das Programm mühelos ohne Fehlernmeldung compilieren.
In den Tiny hab ich es noch nicht,muß´erst den Controller ins
Steckbrett befördern.




Jetzt fällt mir auch wieder ein das die Unterstützung beimn Tiny26
zwecks PWM nicht ganz komplett ist und das man etwas tricksen muß.

In meiner Codesammlung findet sich dann auch etwas.
Die Register müssen manuell gesetzt werden.

Probier mal das hier
==================================0

Dim A As Byte
TCCR1A=&B01010011
TCCR1B=&B10000111
Ddrb.1 = 1        'Port b.1 als Ausgang.


Do
Gosub PWM
Loop

Pwm:
 For A = 1 to 255
Ocr1c = 255
OCR1A=127
OCR1B=50
  Waitms 15
 Next
Return

End

=========================

Verifiziert hab ich es noch nicht.
kommt heut Abend wenn ich Zeit habe.




Und zur Anmerkung:
Ich arbeite noch mit der 7.4 von Bascom.
Ein Update auf die 7.8 ist eh fällig wegen M44,88 Support.



@Alex

Ja,dürfte soweit geklärt sein.

von Alex (Gast)


Lesenswert?

jau, danke für´s nachschauen :)

dann liege ich ja nicht falsch mit der vermutung, das bascom das nicht
begreift. ich hab die register jetzt auch manuell gesetzt und siehe da:
kaum macht man´s richtig, funktioniert´s :))

von Ratber (Gast)


Lesenswert?

Yo,mir ist das auch erst so im nachhinein eingefallen das es bei einigen
Controllenr noch Fehler gibt.

Wie gesagt,ich muß mal unbedingt ein Update auf de 7.8 machen da könnte
es dann mit drinne sein.

von Ratber (Gast)


Lesenswert?

Hoppla,falscher Knopf.


.....Ich werds heut Abend mal in ruhe gegenprüfen.

von Ratber (Gast)


Angehängte Dateien:

Lesenswert?

So,hab geduscht,Gegessen,Post und Mails erledigt und die Familie ist
auch abgefertigt.

Hab jetzt mal nen Tiny26 auf ein Steckbret geschnallt.
Oben im Listing hab ich noch einige Fehler.
Deswegen hier die aktuelle Version zum Testen im Anhang.

Ich hab mal alle 4 Ports einzeln als Ausgang geschaltet.

Funktioniert bei mir ohne Probleme und auch die ca. 2.55 Sekunden pro
durhclauf stimmen.

Später werd ich mal das besagte Update von Bascom auf die 7.8 machen um
zu sehen ob sich an diesem Umstand was geändert hat.

von Ratber (Gast)


Angehängte Dateien:

Lesenswert?

Ich habs nun endlich geschafft mal das Update zu machen.

Habs gleich mal Probiert.
In der 7.8er gehts mit PWM auf dem Tiny26 nun so wie es gedacht war.

Das angepasste Beispiel ist im Anhang.


Übrigens:

Eine gute Nachricht für die Nutzer der Freewareversion.
Der Maximale Code ist auf 4K gewachsen.

von Alex (Gast)


Lesenswert?

hey das klingt ja super... sag schnell, wie hast du das update gemacht ?
mit dem wizard ? das geht hier irgendwie nicht... oder überinstalliert ?
mit der demo ?

von Ratber (Gast)


Lesenswert?

Heut Nacht hatte ich nur die Demo drauf. (Mal eben schnell auf nem
anderen Rechner inst.)

Vorhin hab ich das Update über den Wizard gemacht (6 Versuche.Server
ist wohl ausgelastet) und sehe das wir schon bei 7.9 sind.

Es hat sich da ne Menge getan.
Viel ist gefixt worden.

Probiers einfach zwischendurch mal.
Irgendwann klappts.

von Alex (Gast)


Lesenswert?

danke für den tip. bei mir zeigt er im moment noch "there are no
components found to update" - ich versuchs über den tag nochmal...

von Skragan (Gast)


Lesenswert?

kann man auch die demo runterladen und wieder mit der lic-datei füttern
? das updatedingens geht hier vielleicht auch wegen der firewall nicht
?!

von Ratber (Gast)


Lesenswert?

Keine Ahnung.

Ich schau alle paar Wochen mal (wenn mirs gerade einfällt) obs nen
Update gibt und kümmer mich nicht weiter drum.

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.