Forum: Mikrocontroller und Digitale Elektronik Atmega8 mit fertigem C-Code, Probleme beim compilieren und Chip programmieren


von Michael F. (michael_1970)


Angehängte Dateien:

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

: Bearbeitet durch User
von The D. (thedaz)


Lesenswert?

Häng den Code mal als Textdatei an und formatiere ihn bitte

: Bearbeitet durch User
von Michael F. (michael_1970)


Lesenswert?

Ok hab den Code gerade als Textdatei angehangen.

von stromtuner (Gast)


Lesenswert?

> Ok hab den Code gerade als Textdatei angehangen.
nicht :)

von Alexander S. (alex998)


Lesenswert?

stromtuner schrieb:
>> Ok hab den Code gerade als Textdatei angehangen.
> nicht :)
Doch ;)

von Dergute W. (derguteweka)


Lesenswert?

Alexander S. schrieb:
>>> Ok hab den Code gerade als Textdatei angehangen.
>> nicht :)
> Doch ;)
Ouuhhhh ;))

von The D. (thedaz)


Lesenswert?

Wieder nicht formatiert. Außerdem sollte die Dateiendung .c oder .cpp 
sein.

: Bearbeitet durch User
von The D. (thedaz)


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.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Michael F. schrieb:
> Für eine Unterstützung wäre ich sehr dankbar.

 Nochmal ganz genau den Abshnitt
1
  switch(modus)
 prüfen, Fehler beseitigen und dann probieren.

 EDIT:
 Und gerade wegen solcher Fehler wie bei dir, mag ich C nicht.

: Bearbeitet durch User
von doedel (Gast)


Lesenswert?

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 ;-) !

von Stefan F. (Gast)


Lesenswert?

Bist du sicher, die Leuchtenden Dinger (was auch immer das ist) richtig 
angeschlossen zu haben?

von The D. (thedaz)


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."

von Marc V. (Firma: Vescomp) (logarithmus)


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 ;-) !

 Er kann schreiben was er will, deswegen muss es noch lange nicht
 stimmen.

von The D. (thedaz)


Lesenswert?

Marc V. schrieb:
> Michael F. schrieb:
>> Für eine Unterstützung wäre ich sehr dankbar.
>
>  Nochmal ganz genau den Abshnitt
>
1
>   switch(modus)
2
>
>  prüfen, Fehler beseitigen und dann probieren.
>
>  EDIT:
>  Und gerade wegen solcher Fehler wie bei dir, mag ich C nicht.

? Von welchem Fehler sprichst du da ?

von doedel (Gast)


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!

von Michael F. (michael_1970)


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 :-).

von The D. (thedaz)


Lesenswert?

Hmpf.

C lernen, Atmel Datenblatt lesen, elektrische Schaltung verstehen 
lernen, ...

Meinst du nicht, du zäumst das Pferd von hinten auf, wenn du erstmal im 
Forum deine Fragen stellst bevor du dich mit der Thematik befasst hast ?

: Bearbeitet durch User
von Paul B. (paul_baumann)


Lesenswert?

doedel schrieb:
> hey Leute ... das war sarkastisch gemeint! Ich werd's in Zukunft aber
> dazu schreiben!

Mußt Du. Selbst in der Rubrik "HF, Funk und Felder" fehlt die Antenne 
für Sarkasmus.

MfG Paul

von Michael F. (michael_1970)


Lesenswert?

Ok dann danke für die Tipps. Werde es nochmal in Ruhe selber versuchen 
mit dem Chip programmieren. Hat ja damals auch schon mal funktioniert.

von mr.confused (Gast)


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

von Michael F. (michael_1970)


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

von Harry L. (mysth)


Lesenswert?

Wer im Jahr 2016 immer noch Windows XP nutzt, dem ist ohnehin nicht zu 
helfen!

Ich hoffe nur, daß der Rechner nicht mit dem Internet verbunden ist, 
denn dann wird es fahrlässig.
Einmal infiziert wird so eine Kiste selbst zum aktiven 
Schadsoftware-Verteiler...

von Michael F. (michael_1970)


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.

von Stefan F. (Gast)


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.

von Stefan F. (Gast)


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.

von Michael F. (michael_1970)


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?

von Paul B. (paul_baumann)


Lesenswert?

Michael F. schrieb:
> Windows 7 ist da schon wählerischer
> und bei Windows 10 wird es bestimmt nicht besser werden.

AVR-Studio Version 4.18 läuft hier mit Windows 7 zuverlässig.

MfG Paul

von Michael F. (michael_1970)


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

von Stefan F. (Gast)


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.

von Michael F. (michael_1970)


Lesenswert?

Ich tue mich noch etwas schwer mit dem Wechsel auf Windows 10, da bei 
meiner Freundin der Laptop nach dem Upgrade von Windows 8 regelmäßig 
abstürzt. Der Enduser ist halt meistens der Betatester, aber dafür ist 
das Upgrade ja diesmal gratis ;-).

von Michael F. (michael_1970)


Angehängte Dateien:

Lesenswert?

So habe es jetzt endlich geschafft, den Chip mit dem AVR Studio 4 zu 
programmieren. Vielen Dank nochmal an alle.

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.