www.mikrocontroller.net

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


Autor: Skragan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Skragan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... :/

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Skragan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:

Autor: Skragan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der code hängt natürlich als anhang dran :)

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

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

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
def-dateiausschnitt

Autor: Skragan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :))

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoppla,falscher Knopf.


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

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Ratber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Skragan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
?!

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.