Atmega8 mit fertigem C-Code, Probleme beim compilieren und Chip programmieren

OP #4565069
Lesenswert?

Hallo zusammen,

ich habe Probleme damit, einen fertigen C-Code auf einen Atmega8 L-Chip 
zu übertragen. Die Fuses setze ich mit dem AVR-Studio 4 und den C-Code 
übertrage ich mit einer Evaluation-Version von CodeVision. Als 
Programmierboard verwende ich das STK500 und Betriebssystem ist Windwos 
XP. Die zugehörige Lauflicht-Schaltung funktioniert einwandfrei. Bei der 
Chip-Programmierung wird auch kein Fehler angezeigt, aber das Lauflicht 
funktioniert leider nicht.

Ich habe von den einzelnen Programmierschritten einmal Screenshots 
gemacht und den C-Code eingescannt.

Für eine Unterstützung wäre ich sehr dankbar.

VG Michael
Angehängte Dateien:
#4565202
Lesenswert?

Wenn ich deinen code richtig verstehe, dann möchtest du über einen vom 
ADC gelesenen Wert die Timer-Frequenz regeln. Es wäre nett, wenn du in 
deinem code vorne beschreibst, was er tun soll.

Du lässt den Timer im normal mode laufen, aber ich denke, du möchtest in 
diesem Fall den CTC mode, der den timer counter beim compare match 
automatisch auf 0 zurücksetzt.

Desweiteren liest deine interrupt Routine die Variable modus, die vom 
main loop modifiziert wird. Damit der compiler die Variable nicht in ein 
Register optimiert musst du unbedingt 'volatile' voranstellen. 
Sicherheitshalber machst du das mit i auch.

Stilistisch gesehen kann man die pattern arrays auch direkt als einen 
einzelnen zwei-dimensionalen array implementieren (und mit Nullen am 
Ende auffüllen). Statt sizeof checkst du dann ob das array Element, auf 
das i zeigt, ungleich 0 ist.

Weiterhin solltest du innerhalb der Interrupt Routine nicht die langsame 
ADC Operation betreiben. Sowas gehört in die main loop.
#4565435
Lesenswert?

doedel schrieb:
> ihr versteht da was falsch. Der TO hat doch ausdrücklich geschrieben,
> dass der Code fertig ist und funktioniert. Da könnt Ihr doch jetzt nicht
> einfach Fehler finden ;-) !

Da verstehst du leider was falsch. Der TO schrub : "Bei der
Chip-Programmierung wird auch kein Fehler angezeigt, aber das Lauflicht
funktioniert leider nicht."
Gast #4565442
Lesenswert?

Marc V. schrieb:
> doedel schrieb:
>> ihr versteht da was falsch. Der TO hat doch ausdrücklich geschrieben,
>> dass der Code fertig ist und funktioniert. Da könnt Ihr doch jetzt nicht
>> einfach Fehler finden ;-) !
>
>  Er kann schreiben was er will, deswegen muss es noch lange nicht
>  stimmen.

hey Leute ... das war sarkastisch gemeint! Ich werd's in Zukunft aber 
dazu schreiben!
OP #4565451
Lesenswert?

Hallo Daz, ok sorry, bin neu im dem Forum. Den Code hat mir damals ein 
Elektrostudent entwickelt, da ich mich mit der C-Programmierung nicht 
auskenne. Es handelt sich um ein Lauflicht mit 6 LED`s, bei dem man über 
ein Poti die Geschwindigkeit des Lauflichts regeln kann und über einen 
Taster die verschiedenen Lauflichtmodis auswählt. Die Schaltung 
funktionert auch einwandfrei mit dem C-Code, aber ich möchte mir ein 
weiteres Lauflicht entwickeln, da mich das Thema sehr interessiert. 
Leider steht mir der Bekannte nicht mehr zur Verfügung. Deshalb hoffe 
ich auf Unterstützung im Forum und bitte um Verständnis, wenn ich noch 
nicht so fit in dem Thema bin. Aber man lernt ja nie aus :-).
Gast #4565681
Lesenswert?

Hi Michael

Wenn das Programm schon mal auf einem anderen Board funktioniert hat, 
funktioniert das ja also grundsätzlich.

Also: Was hast du in deiner Schaltung anderst gemacht? Anderer µC, 
andere Pinbelegung, andere Taktquelle.. usw

Gruss
OP #4566123
Lesenswert?

Hi, die neue Schaltung habe ich auf einer Platine zusammengelötet und 
mit dem funktionierenden Atmega8-Chip getestet. Dann wollte ich mir 
einen weiteren ATMega-Chip dafür programmieren und daran scheitere ich 
leider. Habe dazu auch erfolgreich folgendes Turtorial durchgearbeitet, 
um auszuschließen, dass mein STK 500-Board eventuell defekt ist: 
http://www.electronicsplanet.ch/mikrocontroller/avr-tutorial-c/avr-tutorial-c.htm. 
In der Beschreibung wird halt der Chip komplett mit dem AVR-Studio 
programmiert und ich hatte gehofft, dass ich meinen vorhandenen C-Code 
eventuell auch damit übertragen kann. Aber so einfach ist es halt nicht 
und jetzt suche ich vergeblich nach dem Anwendungsfehler.
Gruss Michael
OP #4566208
Lesenswert?

Lieber einen schlauen Spruch von sich geben, anstatt eines brauchbaren 
Tipps. Dafür habe mich hier nicht angemeldet. Ich nutze fürs Internet 
Windows 7 und zum testen den XP-Mode von Win7, da ich nur ein 
STK500-Board besitze und das optimal mit dem AVR-Studio 4 läuft + meiner 
alten CodeVision-Version und Windows XP. Reicht also vollkommen aus und 
Internet braucht man dazu auch nicht.
Außerdem noch ein paar weitere Pluspunkte aus dem erwähnten Turtorial:
-Version 6 ist für das STK-600 Board optimiert, welches viel teurer ist, 
als das STK-500. In Internetforen findet man viele Berichte über 
Kompatiblitätsprobleme zwischen Version 6 und dem
STK-500. Ärger scheint vorprogrammiert zu sein. Version 4 bringt alles 
mit sich, was man für die Programmierung eines ATmeag8 benötigt.
Version 4 hat unzählige Buttons und Funktionen, die für die 
Programmierung eines ATmega8 nicht benötigt werden und die 
Programmoberfläche unübersichtlich machen. Version 4 kommt in einem 
schlanken 100 MB Download daher, während Version 6 800 MB gross ist. Von 
den 1600 Beispielprojekten sind nur ein kleiner Teil für die 8-Bit AVR 
Controller geschrieben. Version 4 ist in der ATmega Gemeinde des 
Internets weitaus verbreiteter und beliebter als Version 6. Man wird bei 
Problemen viel schneller online Hilfe finden.
Gast #4566451
Lesenswert?

Du hast also einen funktionierenden Atmega8 vorliegen und eine 
funktionierende Schaltung.

Also sollte es doch die einfachste Lösung sein, das Programm von dem 
funktionierenden Chip in den anderen zu kopieren.

Dazu brauchst du gar keine Programmierumgebung, und die Frage, oder 
Quelltext in ordnung ist, erübrigt sich ebenfalls.

Lies einfach den intakten Chip aus und kopiere das Binary File dann in 
den anderen. Anschließen musst du noch die beiden FUSE Bytes auslesen 
und in den zweiten Chip übertragen. Mehr ist gar nicht nötig.
Gast #4566455
Lesenswert?

Apropos AVR Studio 4: Nachdem ich Atmel dargelegt habe, warum ich in 
meinen Büchern und Tutorials immer noch dieses alte Programm empfehle, 
bekam ich umgehend die besondere Erlaubnis, es auf meiner Homepage zum 
Download bereit zu stellen.

Offensichtlich hat sogar Atmel Verständnis dafür, bei dem "altem Kram" 
zu bleiben. Wer weiß, vielleicht arbeiten die sogar selbst noch damit.

Dass man alte Rechner bzw. alte Software verwendet, ist in der 
Elektronik Entwicklung unfreiwillige Tradition. Das war sogar schon 
damals zu DOS Zeiten so.
OP #4566828
Lesenswert?

Hi super danke für den Tipp. Werde ich ausprobieren. Ja auf XP lief 
soweit alles an älterer Software. Windows 7 ist da schon wählerischer 
und bei Windows 10 wird es bestimmt nicht besser werden. Aber auf kurz 
oder lang kommt man eh nicht drum herum, upzugraden. Dafür sorgt 
Microsoft schon ;-). PS: Wo finde ich denn eine Liste Deiner Bücher und 
Turtorials?
OP #4566895
Lesenswert?

Ok, danke für den Tipp. Ich bin mit dem XP-Modus als Testsystem ganz 
zufrieden. Habe dort alle möglichen Programme installiert, die teilweise 
wirklich nur noch auf XP laufen. Leider gibt es den XP-Modus in der Form 
nicht mehr für Windows 10, außer über den VMWare-Player oder VirtualBox.

VG Michael
Gast #4567110
Lesenswert?

Als ich auf Windows 10 wechselte, lief AVR Studio 4.19 zunächst nicht. 
Aber ein paar Monate hatte ich es nochmal versucht, und dan klappte es 
ohne großartige Tricks. Microsoft hat offensichtlich diesbezüglich was 
verbessert.


Ob die alten USB Treiber gehen, weiß ich allerdings nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren