www.mikrocontroller.net

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


Autor: Georg B. (schorschi)
Datum:

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

Autor: Georg B. (schorschi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch der Quelltext zum Programm

Autor: Andreas T. (andyt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Andy

Autor: Erwin Endres (erwinendres)
Datum:

Bewertung
0 lesenswert
nicht 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:
Ddrb.1 = 1                                       'OC1A PWM Ausgang

'PLL als Takt für Timer1 einschalten
Set Pllcsr.plle
Waitus 100
While Pllcsr.plock = 0
Wend
Set Pllcsr.pcke

'Timer1 PLL Mode einschalten
Tccr1 = &B01100011
Ocr1c = 255

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.

Autor: Georg B. (schorschi)
Datum:

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

Autor: schorschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wirklich keiner der Profis eine Idee ?????????

Autor: Der Profi (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Welcher Profi kümmert sich um Bascom?

Autor: schorschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich brauche wirklich Hilfe und keine Sprüche

Autor: Der Profi (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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ß

Autor: FRIS (Gast)
Datum:

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

Autor: Paul Baumann (Gast)
Datum:

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

Autor: Erwin Endres (erwinendres)
Datum:

Bewertung
1 lesenswert
nicht 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:
'Konfiguration Timer 0 für Fast PWM
'NICHT GETESTET !!

$regfile = "ATtiny44.DAT"
$crystal = 8000000

$hwstack = 16
$swstack = 16
$framesize = 16

Dim Duty_cycle As Byte

Duty_cycle = 127                   '50% Tastverhältnis

Ddra.7 = 1                         'OC0B = Ausgang

Ocr0b = Duty_cycle                 '8Bit Tastverhältnis

Tccr0a.wgm00 = 1                   'Fast PWM Mode 3
Tccr0a.wgm01 = 1
Tccr0b.wgm02 = 0

Tccr0a.com0b0 = 0                  'Compare Output Mode (=non inverting)
Tccr0a.com0b1 = 1

Tccr0b.cs00 = 0                    'Clock select ClkIO / 256
Tccr0b.cs01 = 0                    'und Timer starten
Tccr0b.cs02 = 1

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

Autor: basic (Gast)
Datum:

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

Autor: Alexey (Gast)
Datum:

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

Autor: schorschi (Gast)
Datum:

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

Autor: Georg B. (schorschi)
Datum:

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

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

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

MfG Paul

Autor: Georg B. (schorschi)
Datum:

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

Autor: Georg B. (schorschi)
Datum:

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

Autor: Paul Baumann (Gast)
Datum:

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

Autor: Georg B. (schorschi)
Datum:

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

Autor: Erwin Endres (erwinendres)
Datum:
Angehängte Dateien:

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

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.