Hallo zusammen,
wir haben eine Motorsteuerplatine, bei er jetzt der ATmega8 durch einen
ATmega88 ersetzt wurde (wegen Kosten / Verfügbarkeit).
Durch den Wechsel wird ein Programmupdate notwendig sein. Von dem alten
Program haben wir den BASCOM-Code, aber keinen BASCOM (und ich kenne
BASCOM nicht).
Also haben wir uns überlegt, dass ganze Programm (ist ja nicht viel) in
C zu übersetzen.
Probleme macht mir jetzt der PWM, der im Zusammenspiel mit einer
H-Brücke einen Sanftanlauf mit Links- / Rechtslauf machen soll.
In BASCOM wurde der PWM so initialisiert:
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm
= Clear Down , Prescale = 8
Welche Registereinstellungen macht der Befehl?
Andere Frage. Ich bekomme den PWM auf der Platine (ATmega88) nicht ans
Laufen. Auf der Platine ist eine LED, die auch ohne angeschlossenen
Motor grün (rechtslauf) oder rot (linkslauf) leuchtet und beim
Einschalten (Sanftanlauf) langsam aufleuchtet. Interessanterweise
funktioniert das gleiche auf dem ATmega8 schon.
Was ist da der Unterschied? Was fehlt da?
Folgenden Code habe ich jetzt einfach mal zum Testen geschrieben.
> Andere Frage
Tja - interessanterweise funktioniert das Gleiche bei mir schon, also
das gezeigte Programm; genauer: eine LED an B1 wird langsam heller und
dann wieder dunkler, so etwa im 4 s-Rhythmus.
Da läuft vielleicht auf Ihrem ATmega88 das falsche Programm.
Sebastian L. schrieb:> Welche Registereinstellungen macht der Befehl?
Die Frage scheint darauf hinzudeuten, daß du nicht nur Bascom nicht
kennst, sondern auch AVRs nicht so wirklich.
Acuh wenn du Bascom nicht kennst, wäre es da doch das einfachste, die
paar Euro für eine Lizenz auszugeben, und den Originalcode neu zu
compilieren.
Oliver
AVR kenne ich schon, hab nur die PWM Funktion bisher nicht verwenden
müssen.
Hatte mich halt gewundert warum das Programm auf dem 88er nicht
funktioniert, auf dem 8er jedoch schon.
Die Platine ist sonst gleich aufgebaut. Auch eine zweite Platine zeigt
das gleiche Problem.
> Hatte mich halt gewundert warum das Programm auf dem 88er> nicht funktioniert, auf dem 8er jedoch schon.
Wie gesagt, das Programm läuft auf einem ATmega88 - wenn es denn für
diesen auch neu übersetzt wurde. Siehe den Beitrag von Stefan Frings.
Oliver S. schrieb:> Die drei Buchstaben sicherlich, die lernt man in der ersten Klasse…
Die Buchstaben vier Buchstaben I-D-I-O-T hast Du sicher schon im
Kindergarten kennengelernt, wenn Du von der Kindergärtnerin gerufen
wurdest, wie?
Wie mich dieses Arschloch anödet schrieb:> Oliver S. schrieb:>> Die drei Buchstaben sicherlich, die lernt man in der ersten Klasse…>> Die vier Buchstaben I-D-I-O-T hast Du sicher schon im> Kindergarten kennengelernt, wenn Du von der Kindergärtnerin gerufen> wurdest, wie?
IDIOT - Sind das nicht FÜNF (!!) Buchstaben 🤔🤷♂️😂
Zählen ist wohl nicht so Dein Ding 😂
SCNR
Um diesem Unsinn wenigstens etwas Positives abzugewinnen:
Das Zählregister
Das Zählregister zählt: Null, eins,
zwei, drei, vier, fünf, sechs, sieb'n und: keins;
das macht, es zählt oktal.
Es ist beschränkt wie mancher Mann
der nur bis sieben zählen kann
und merkt es nicht einmal.
in memoriam KLEN
------
Und falls jemanden das Original interessiert:
Das Perlhuhn
Das Perlhuhn zählt: Eins, zwei, drei, vier...
Was zählt es wohl, das gute Tier,
dort unter den dunklen Erlen?
Es zählt, von Wissensdrang gejückt,
(die es sowohl wie uns entzückt:)
die Anzahl seiner Perlen.
Christian Morgenstern
Hallo Sebastian,
Sebastian L. schrieb:> Von dem alten> Program haben wir den BASCOM-Code, aber keinen BASCOM
für BASCOM gibt es einen kostenlosen Compiler bis 4 KB Quelltext.
Wenn das reichen sollte:
- BASCOM herunterladen
- BASCOM installieren
- Quelltext nach Änderung für den neuen Atmega88 compilieren
- Datei auf den neuen Atmega88 übertragen
- einschalten
- freuen!
MfG von der Spree
Frank
Guten Morgen,
also Device Änderung und ein neues compilieren hat nichts gebracht.
Kann man dann, wenn das Programm anscheinend bei anderen funktioniert,
davon ausgehen, dass das Programm richtig ist und irgendwas auf der
Platine falsch ist?
Sehe ich das richtig: Sie haben zwei Platinen vor sich, eine mit einem
ATmega8, die andere mit einem ATmega88, die jeweils korrekte HEX-Datei
ist geladen, und auf der ersten funktioniert dieses LED-auf&ab, auf der
zweiten tut sich nichts?
Also dann würde ich erstmal an beiden Platinen die Stromaufnahme sowie
die Betriebsspannungen direkt am Controller messen und vergleichen.
Hast du wirklich die richtige hex Datei geflasht? Die Gestaltung des
Atmel Studio provoziert manchmal, dass man die falsche Datei flasht,
wenn mehrere vorhanden sind.
Also lieber nochmal ganz genau hinschauen, welche Datei in dem
Eingabefeld steht. Und kontrolliere mit dem Dateimanager den Zeitstempel
dieser Datei. Nicht dass das doch eine alte von gestern ist.
Wie sieht es denn mit den Fuses aus?
Ich nehme an, im Mega8 wurden die schon richtig gesetzt.
Bei den "neuen" Platinen mit Mega88: Hast Du daran gedacht, dass die
ggf. noch mit dem internen RC Oszillator und CLKDIV8 laufen?
Werner
S. Landolt schrieb:> an Werner:> Dann würde das LED-auf&ab trotzdem laufen, nur eben langsamer oder> schneller.
Ja, ich weiß. Wenn dort ein 16 Mhz quarz verbaut ist und der Mega mit 1
Mhz läuft, dann muss man auf Aktionen, die normalerweise innerhalb von 4
Sekunden ablaufen fast eine Minute warten.
Da könnte man uf die Idee kommen, dass nichts passiert / es nicht
funktioniert.
Werner
Also 1. meine C-Kenntnisse sind rudimentär, 2. habe ich keinen ATmega8
zum Ausprobieren und 3. weiß ich nicht, ob es zielführend ist, trotzdem:
beigefügtes Programm sollte eine LED an B1 blinken lassen, unabhängig
davon, ob ATmega8 oder 88.
an Werner:
nach dem eingangs gezeigten Programm sind 8 MHz vorgesehen, außerdem
dimmt die LED ja auf und ab, ein solches Verhalten wird recht schnell
erkannt.
Sebastian L. schrieb:> Aber das I ist doppelt ;) also 4 Buchstaben.
Aha! Wenn etwas mehrmals vorkommt, zählst Du es nur einmal. Echt clever,
insbesondre bei Arrays 👍👍
Unglaublich
Es wird doch irgendwas auf der Platine falsch sein.
Hab jetzt auf beiden Platinen mal den OC1A Pin gemessen, dort laufen
beide schön von 0 - 5 V hoch und runter.
Verhalten sich also gleich.
Also wird ist irgendwas auf der neuen Platine falsch sein, auch wenn
beide Platinen gleich sein sollten.
Vielen Dank für die hilfreichen Kommentare.