Forum: Mikrocontroller und Digitale Elektronik Bascom und PWM auf Attiny startet nicht


von Georg B. (schorschi)


Lesenswert?

Hallo zusammen,
im meinem Programm versuche ich seit Tagen den Timer0 8Bit als PWM auf 
PortA.7 (OC0B) ans laufen zu bekommen - leider ohne Erfolg.

Bedingt durch die Impuls/Drehzahlmessung an INT0 ist der PIN PortB.2 und 
der Timer1 bereits in Gebrauch. Funktioniert soweit auch tadellos.

Im Datenblatt, in der Beschreibung des Timer0 als PWM habe ich nun 
gelesen das man diesen, sofern man einen PIN als nicht PWM nutzt (wie 
den INT0) die Register TCCR0A und TCCR0B extra konfigurieren muß. Meine 
Interpretation des Datenblattes habe ich in die Register geschreiben

Da liegt das Problem - mit meinem veralterten Schulenglisch komm ich da 
nicht weiter. Ich habe schon für andere Test den INT0 mal komplett 
heraus kommentiert um so den PIN PB2 frei zumachen und beide als PWM 
zunutzen, auch Fehlanzeige.

Kann mir jemand helfen oder Tipps geben ??????

Gruß
Schorschi

von Georg B. (schorschi)


Angehängte Dateien:

Lesenswert?

Hier noch der Quelltext zum Programm

von Andreas T. (andyt)


Lesenswert?

Hi,

auf jeden Fall wird die Print-Anweisung nur EINMAL ausgeführt,
weil danach ein CLOSE kommt.

Andy

von Erwin E. (erwinendres)


Lesenswert?

Dein Problem dürfte sein dass Bascom recht zickig sein kann, sobald er 
es mit moderneren Tinys zu tun bekommt.
Der Config Timer Befehl funktioniert z.B. mit den Tiny 45/85 nicht 
richtig. Mit deinem 44er wird es möglicherweise auch so sein.

Abhilfe:
Die Timerregister direkt beschreiben.

Hier ein Beispiel für die Konfiguration der PWM eines Tiny85:
1
Ddrb.1 = 1                                       'OC1A PWM Ausgang
2
3
'PLL als Takt für Timer1 einschalten
4
Set Pllcsr.plle
5
Waitus 100
6
While Pllcsr.plock = 0
7
Wend
8
Set Pllcsr.pcke
9
10
'Timer1 PLL Mode einschalten
11
Tccr1 = &B01100011
12
Ocr1c = 255
13
14
Ocr1a = 0                                         'PWM Dutycycle

Das kannst du natürlich nicht 1:1 übernehmen, aber vielleicht zeigt es 
dir die Richtung. Im mcselec Bascom Forum gibts auch noch Infos zur 
Programmierung der Tiny-Timer.

von Georg B. (schorschi)


Lesenswert?

Hallo Erwin,
zunächst danke für den Hinweis. Die Progammierung vom Tiny45 habe ich 
schon hinter mir. Da ging es nur mit - siehe hier
'-------------------------------------------------------------------
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down ,
Config Timer1 = Timer , Prescaler = 2
Tccr0b = &B00000010
Tccr1 = &B00000010                                          'Prescaler = 
2
'-------------------------------------------------------------------
auch wollte Bascom bei der Config von Timer1 ein "r" an dem Prescale- 
Einstellung

...... warum auch immer

Aber auch in diesem Fall ging es um "Timer0" mit PWM und mit der 
Einstellung ging es beim Tiny45. Wenn der Tiny45 auf PB1 einen ADC zur 
Verfügung hätte, hätte ich nicht so schnell auf den Tiny44 gewechselt. 
Bei dem Tiny45 kommt Timer0 mit PWM dem INT0 Interrupt nicht in die 
Quere, vieleicht ging es deshalb. ich hab keine Ahnung.

Gruß
Schorschi

von schorschi (Gast)


Lesenswert?

Hallo,
wirklich keiner der Profis eine Idee ?????????

von Der Profi (Gast)


Lesenswert?

Welcher Profi kümmert sich um Bascom?

von schorschi (Gast)


Lesenswert?

Hallo,
ich brauche wirklich Hilfe und keine Sprüche

von Der Profi (Gast)


Lesenswert?

Das sind keine Sprüche, das sind Tatsachen.
Schau Dir doch das Datenblatt vom Tiny an,
wo die/der Timer beschrieben ist.
Wenn es dann noch nicht klar ist, nochmal fragen.

Gruß

von FRIS (Gast)


Lesenswert?

Sprachen wie BASCOM bestätigen die PISA Studie unter den Programmierern.
Wozu muß ich einen ATTiny auch noch in Basic programmieren.
Der Blick ins Datenblatt ist ja eh vollkommen unnötig.

Arme Welt!

von Paul Baumann (Gast)


Lesenswert?

Guck mal hierhin:
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=37291

Hast Du die neueste Version von Bascom? Wenn nicht, lade sie Dir mal von
MCS. Grund: Die Include-Dateien von Tiny24/44/84 waren vorher noch nicht 
fehlerfrei und auch ich hatte eine Menge "Freude" mit darin falschen
Registernamen.

MfG Paul

von Erwin E. (erwinendres)


Lesenswert?

Hallo Schorschi, du solltest wohl besser nicht nach Profis rufen, sonst 
kommen die Vollpfosten angelaufen.
Ist irgendwie wie in Politik und Bankwesen...

In einem hat der "Profi" aber schon ein bisschen recht:
Microcontroller programmieren ohne Datenblatt führt dich auf Dauer nicht 
wirklich weiter. Auch nicht mit Bascom!

Was die Tinys angeht, solltest du dringend den Rat von Paul Baumann 
beherzigen und die neuesten Include Dateien einbinden.

Die Bascom Befehle zur Timerprogrammierung solltest du besser vergessen,
das spart Ärger!
Hier mal ein auf die Schnelle ein UNGETESTETES Programm das die von dir 
gewünschte PWM erzeugen sollte:
1
'Konfiguration Timer 0 für Fast PWM
2
'NICHT GETESTET !!
3
4
$regfile = "ATtiny44.DAT"
5
$crystal = 8000000
6
7
$hwstack = 16
8
$swstack = 16
9
$framesize = 16
10
11
Dim Duty_cycle As Byte
12
13
Duty_cycle = 127                   '50% Tastverhältnis
14
15
Ddra.7 = 1                         'OC0B = Ausgang
16
17
Ocr0b = Duty_cycle                 '8Bit Tastverhältnis
18
19
Tccr0a.wgm00 = 1                   'Fast PWM Mode 3
20
Tccr0a.wgm01 = 1
21
Tccr0b.wgm02 = 0
22
23
Tccr0a.com0b0 = 0                  'Compare Output Mode (=non inverting)
24
Tccr0a.com0b1 = 1
25
26
Tccr0b.cs00 = 0                    'Clock select ClkIO / 256
27
Tccr0b.cs01 = 0                    'und Timer starten
28
Tccr0b.cs02 = 1
29
30
Do : Loop

Ich habe die Register bewusst Bit für Bit konfiguriert, dann ist es 
vielleicht verständlicher. Im richtigen Programm kannst du die einzelnen 
Bytes natürlich auf einmal schreiben.

Grüße
erwin

von basic (Gast)


Lesenswert?

Hallo Georg,

ich würde Fragen zu BASCOM immer in diesem Forum posten:
http://www.bascom-forum.de

Hier sind die Leute immer hilfsbereit und man wird nicht gleich 
niedergemacht, wenn man nicht in ASM oder C programmiert.

Gruß
Frank

von Alexey (Gast)


Lesenswert?

An die ganzen Bascom-Hasser in diesem Thread:
Geht sterben und werden mit eurem Asm und C glücklich.
Echt tolle sache der Thread-Opener hat nach hilfe gefragt und nicht 
danach daß man ihn runterputzt.
Echte Hilfe sehe ich hier nur von wenigen aber ansonsten viel Blabla...

Alexey, den dieser Glaubenkrieg langsam Ankotzt...

von schorschi (Gast)


Lesenswert?

Hallo zusammen und Danke,
also ich habe die Bascom Version 1.11.9.1 das ist das aktuellste was ich 
bei MCS gefunden habe. Im Umgang mit den Datenblättern ist sicher mein 
20 Jahre altes Englisch ein Problem. Als Umsteiger von Basic (C-Control) 
war Bascom für mich das naheliegsde.
Bevor ich meine Frage gestellt habe, habe ich bereits eine Woche 
getestet und kam nicht weiter.
Vielleicht war meine Frage zu optimistisch gestellt. Ich dachte nur das 
ein "Profi", sofern er die Zeit hat über den Quelltext zu schauen, mir 
mit einigen Tipps auf die schnelle aushelfen kann und sich selbst 
zuschade ist für Gepöbel.

Mit meinem Wissen, auch ohne Studium, macht es mir auch mehr Spaß selbst 
die Dinge zuregeln. Ich frage erst wenn ich am Ende meines Weges bin.
Beim Attiny45 bin ich klar gekommen und bei dem Attiny44 stecke ich halt 
fest.

Danke an die Helfenden, ich schaumal ob ich jetzt weiter komme

Gruß
Schorschi



PS: und der Rest - es ist noch kein Meister vom Himmel gefallen, das 
solltet ihr euch merken

von Georg B. (schorschi)


Lesenswert?

Hallo,
noch die Frage an die Aktualität der "ATtiny44.DAT" Datei.
Welches Datum hat die Aktuelle ?????

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Hier habe ich Dir mal die beiden Dateien vom Tiny24 und 44 
zusammengepackt.
Die stammen vom 24.6.08

MfG Paul

von Georg B. (schorschi)


Lesenswert?

Hallo Paul,
nachdem ich jetzt hier zuhause in das Verzeichnis gesehen haben - die 
Dateien in der Version 11.1.9.1. sind vom 10.01.2008

Danke
Gruß
Schorsch

von Georg B. (schorschi)


Lesenswert?

Hallo Paul, Hallo Erwin,
so nun ist alles gut, mit den neuen DAT Dateien ist der vom Compiler 
gemeldete Fehler WDTCR (Watchdog) behoben und mit den Definitionen vom 
Erwin gehts auch.

Ja spitze

eine letzte Frage, wo gibt es die DAT Dateien ------ bei MCS ?????
Meine Dateien waren so bei der Download Version drin.

Gruß
Schorsch

von Paul Baumann (Gast)


Lesenswert?

Die Dateien, die ich Dir geschickt hatte, habe ich selbst mittels Editor 
korrigiert. Dazu habe ich im Datenblatt sämtliche Registernamen mit 
denen
verglichen, die sich in den Include Dateien befanden und stieß dabei auf
ein paar Buchstabendreher und falsche Adressangaben.
Scheinbar haben die Schelme das immer noch nicht korrigiert... :-((

MfG Paul

von Georg B. (schorschi)


Lesenswert?

Hallo Paul,
in deiner Datei zum ATTíny44 scheint aber etwas nicht zu stimmen.
Wenn ich einen ADC einbinde kommt folgende Fehlermeldung:

Error : 0     Line :   67     [ADC_MUX entry not found in DAT file]  , 
in File : D:\ATTINY44-TEST-INT0-1.BAS

Die originale Datei zeigt den Fehler: compiliert aber....
Error : 202   Line :   1     .EQU not found, probably using functions 
that are not supported by the selected chip [WDTCR]  , in File : 
D:\ATTINY44-TEST-INT0-1.BAS
Error : 202   Line :   1     .EQU not found, probably using functions 
that are not supported by the selected chip [WDTCR]  , in File : 
D:\ATTINY44-TEST-INT0-1.BAS

Wenn ich am Wochenende Zeit habe schau ich mal mit Datenblatt und 
vergleiche beide. Da du als Gast schreibst kann ich dir kein Mail 
schicken.

Gruß
Schorsch

von Erwin E. (erwinendres)


Angehängte Dateien:

Lesenswert?

Die ATtiny44.Dat von Paul hat imho noch einige bugs:
Ganz deutlich die Zeile HWMUL=1
Der Tiny44 hat (wie alle Tinys?) keinen Hardware Multiplizierer, hier 
muss als HWMUL=0 stehen.

Auch betreffend des Watchdogs und des ADC scheint einiges nicht zu 
stimmen.

Deshalb habe ich mal, um das Chaos komplett zu machen,  meine 
ATtiny44.dat angehängt. Die sollte eigentlich korrekt sein.

Grüße
erwin

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.