Blutiger Anfänger möchte gerne mit STK500 programmieren

OP #3026811
Lesenswert?

Hallo,

vorhin hatte ich schon Probleme mit dem Verbindungsaufbau meines STK500 
und dem Laptop. Nun steht die Verbindung und ich würde gerne ein kleines 
Programm auf meinen ATMEGA8515 programmieren.
Bisher habe ich folgendes gemacht:
neues Projekt erstellt AVR GCC
dann bei der Auswahl links den AVR Simulator und rechts mein ATMEGA8515
anschließend habe ich nur noch diesen Code aus meinem Buch eingegeben:

#include <avr/io.h>

int main()
{
        DDRB=0xFF;
  led2_status=0xFF;
  PORTB=led2_status;

}

wie gesagt ich bin blutiger Anfänger :)

Danch hab ich auf "Build" geklickt, aber es passiert weiterhin nichts, 
also meine LED leuchtet nicht. Ich bekomme nur eine Meldung Build 
started at...
mehr leider nicht! Liegt es daran, dass ich ganz am Anfang den Simulator 
ausgewählt habe? Leider finde ich das Board STK500 nicht in dieser 
Liste.

Könntet ihr mir bitte weiterhelfen??

Vielen Dank im Voraus

Hane89
Gast #3026849
Lesenswert?

Ich weiß nicht wie es beim STK500 ist, da ich nur selber gebaute Boards 
verwendet habe. Üblicherweise muss man das Hex-File noch mit dem 
Programmer auf den uC schieben. Btw. das Programm läuft zwar, es wird 
aber vermutlich nix passieren. Du setzt 2 Register danach ist das 
Programm zu ende. Damit es "läuft", muss im Programm eine 
Endlossschleife vorgesehen werden. Siehe Tutorial auf der Seite hier.
Gast #3026870
Lesenswert?

Ich nehme zum Übersetzen immer Build&Run (Strg+F7):
Dann muss man noch das entstandene Kompilat auf den Baustein laden. Dazu 
muss in den Projekteinstellungen erst mal der korrekte Baustein 
ausgewählt werden. Mit dem Button 'Connect to the selected AVR 
programmer' öffnet sich ein Fenster, wo man dann die Verbindung zum IC 
prüfen kann, die Fuses einstellen und eben das Programm an den Prozessor 
übertragen kann.
Einige Sekunden warten und fertig.
Gast #3026874
Lesenswert?

Hane89 --- schrieb:
> dann muss doch auch
> irgendwie das Porgramm sagen, Fehler beim laden oder nach dem
> Kompilieren, ob der Code i.O. ist,

Unten ist ein Fenster namens Build. Da steht dann im Idealfall drin:
Build succeeded with 0 Warnings...

Man kann das unter 'View  Toolbars  Build Output' aktivieren, falls es 
fehlen sollte.
Gast #3026884
Lesenswert?

Gucke mal auf youtube. Da gibt es ne Menge Videos zum Thema AVR Studio 
4. Teilweise auch Vorlesungen oder Übungen von (indischen - also auf 
englisch) Unis. Die zeigen Stritt für Schritt wie man das Programm 
bedient.
OP #3027159
Lesenswert?

hab mir mal auf youtube ein paar videos angeschaut. Also wenn ich auf
Tools -> Program AVR -> connect -> connect klicke, erscheint ein 
Fenster, wo ich dann in dem Register "Program" unter "Flash" mein Input 
Hex File auswähle und dann auf "Program" klicke, anschließend bringt er 
mir diese ganzen Meldungen:

Getting isp parameter.. SD=0x0a .. OKOK
Reading FLASH input file.. OK
Setting mode and device parameters.. OK!
Entering programming mode.. OK!
Erasing device.. OK!
Programming FLASH ..      OK!
Reading FLASH ..      OK!
FLASH contents is equal to file.. OK
Leaving programming mode.. OK!

Danach gehe ich auf Build and Run, aber leider blinken meine LED's 
nicht!
Habe den Code abgeändert in:

#include<avr/io.h>
#include<util/delay.h>

int main (void)

{
  DDRB=0xff

  while (1)
  {
    PORTB=0xff;
    _delay_ms(1000);
    PORTB=0x00;
    _delay_ms(1000);
  }
  return 0;
}

Habe die Flachbandkabel angesteckt, also den PortB mit den LED`s und den 
PortD mit den Tastern und das Flachbandkabel für ISP.
Danke schon mal im Voraus :)
#3027304
Lesenswert?

Und hast Du auch einen externen Takt angelegt?
Dazu gibt es einen Jumper auf dem STK500 und eine Erklärung in der Hilfe 
zum STK500.

Da das STK500 kein Debugger ist, ist Build&Run eigentlich Quark, das 
ruft nur den Simulator auf, startet aber kein Programm im realen AVR.

Das Programm im realen Controller hat sofort nach dem Beschreiben der 
Hexdatei (und evtl. EEP-Datei und Fusesetting) zu arbeiten. Allerdings 
ist die Reihenfolge
- Build (also Assemblieren bzw. Compilieren bei C) und dann
- Program (Write Flash & Co).

Vor Write Flash ist im Programmer-Dialog natürlich noch unter Main der 
richtige Controllertyp auszuwählen und durch Lesen der Signature die 
Verbindung zu prüfen. Erst dann wechselt man auf Program, wählt die 
korrekten Dateien aus den richtigen Projektordnern aus und überträgt sie 
ins Flash bzw. bei Bedarf auch ins EEP.

...
#3027448
Lesenswert?

Hane89 --- schrieb:
> Hiiilfee! :)

Laut Deinem Bild hast Du per Fuses als Taktquelle extern Clock 
eingestellt, ob das stimmt, weiß ich nicht, da ich nicht weiß, ob die 
Kommunikation mit dem AVR klappt. Sollte das stimmen, dann musst Du dem 
AVR auch einen externen Takt zuführen. Das STK500 bietet diese 
Möglichkeit, es erzeugt diesen Takt mit Hilfe des eigenen MCs selbst, Du 
musst ihn nur noch zum XTAL-Pin des Target-AVRs durchschalten. Und das 
erfolgt über den dafür vorgesehenen Jumper. Um Infos darüber zu 
erhalten, rufst Du im AVRstudio die Hilfe auf (Menüpunkt, der mit "Help" 
beschriftet ist), wählst AVR-Tools, dann STK500, dann Jumper-Settings 
und findest die nötigen Infos (siehe Anhang).

Um dann zu ermitteln, ob Dein AVR ansprechbar ist, gehst Du im 
Programmer-Dialog auf das Panel "Main", wählst aus der Liste den 
entsprechenden AVR-Typ aus (ja, fast jeder AVR wird etwas anders 
angesprochen) und prüfst dann die Verbindung durch Auslesen der 
Signature. Solange das nicht klappt (bitte auch die Rückmeldungen 
lesen!), brauchst Du nicht versuchen, den AVR zu beschreiben oder an den 
Fuses zu spielen, sondern schaust erstmal, ob die von Dir eingestellte 
ISP-Frequenz nicht zu hoch ist. Sie muss kleiner als 1/4 der 
Taktfrequenz sein.

Ein weiterer oft gemachter Fehler ist das Verwenden des falschen 
Target-Sockels. Das ist etwas verwirrend, ich habe mir geholfen, indem 
ich Labels angebracht habe, die mit den Basistypen der entsprechenden 
Pinbelegung beschriftet sind. So brauche ich nicht immer mit den 
kryptischen Sockel-Namen hantieren.

Frag' jetzt aber bitte nicht, welches der richtige Sockel ist. Das steht 
nämlich alles in der Doku zum STK500, die über Help, AVR-Tools 
erreichbar ist.

...
Angehängte Dateien:
OP #3027495
Lesenswert?

Also den richtigen Sockel hab ich sicher, hab es nachgelesen, welchen 
man nehmen muss, wenn man einen 8515 hat. Bei mir sind 5 Jumper 
gesteckt, also wie in deinem Anhang von vtarget bis oscsel. Die 
Verbindung zum Board passt normal auch, die signature hab ich auch 
auslesen können, dann kann es eigentlich nur noch an der ISP Frequenz 
liegen oder? Wo finde ich die Taktfrequenz?
#3027576
Lesenswert?

Hane89 --- schrieb:
> die signature hab ich auch
> auslesen können, dann kann es eigentlich nur noch an der ISP Frequenz
> liegen oder?

Das ist ein Widerspruch in sich.

Wenn Du die Signature wirklich auslesen konntest (vergleiche bitte die 
gelesene Signature mit der Angabe im Datenblatt!), dann ist die 
ISP-Frequenz ok. Denn wenn die ISP-Frequenz nicht passen würde, dann 
hättest Du auch keine Verbindung und könntest auch keine Signature 
auslesen.

> Wo finde ich die Taktfrequenz?

Na unterhalb des Signature-Buttons. Da steht Settings und ISP-Frequency 
dran. Ist das sooooo schwer zu finden???

...
OP #3029000
Lesenswert?

@Sanitäter
Nein man ich hab mir den Controller an den Kopf genagelt, weil ich mir 
dachte, so könnte ich vielleicht besser programmieren! :D

Also oben hätte ich mein Problem eigentlich schon beschrieben!
Ich möchte eigentlich nur mal, dass ich ein kleines Programm auf einen 
ATMEGA 8515 programmiere, aber es funktioniert irgendwie nicht!

MFG
#3029164
Lesenswert?

Hane89 --- schrieb:
> Ach mensch Leute!

Also ein STK500 ist kein Multimediakonsumartikel, sondern ein 
Entwicklungsboard. Der erfolgreiche Umgang damit setzt voraus, dass man 
die benötigten Informationen liest und auch etwas mitdenkt. Ist wie bei 
einer Geige, damit kann auch nicht Jeder auf Anhieb umgehen. Also lies 
und verstehe endlich die zugehörigen Dokus oder stelle fest, dass Du 
dafür ungeeignet bist. Es ist nunmal nicht Jeder für jede Tätigkeit 
geeignet. Ich kann auch keine Geige spielen, obwohl ich weiß, wie sie 
funktioniert und wie sie gestimmt ist.

...
Gast #3029260
Lesenswert?

Hi

>also ich hab bis jetzt nur ein projekt und ich wähle bei Flash -> input
>hexfile -> die richtige Projekt-Hexfile aus und klicke anschließend auf
>"program"

Und was für Meldungen erscheinen dann unten im Prog-Dialog?

>  led2_status=0xFF;
>  PORTB=led2_status;

Damit wird keine LED auf dem STK500 leuchten. Die LEDs sind Null-Aktiv.

Und deine Kabel solltest du auch mal richtig herum stecken. Der 
markierte Leiter entspricht Pin 1.

MfG Spess
Gast #3029364
Lesenswert?

Hi

>Nur mal so nebenbei: hat das mit meinem Problem zu tun, ob die LEDs und
>Taster nun low aktiv sind oder nicht???

Bei denem Blinkprogramm nichts. Bei deinem ersten Programm viel.

Hänge mal dein Hex-File als Anhang an. Ich habe hier noch einen 
ATMega8515 rumliegen. Da kann ich es mal ausprobieren.

MfG Spess
#3029383
Lesenswert?

Hane89 --- schrieb:
> hat das mit meinem Problem zu tun, ob die LEDs und
> Taster nun low aktiv sind oder nicht???

Jain. Denn Du hast anscheinend mehrere Probleme.

Hane89 --- schrieb:
> es steht nur Build started ...
> und nicht ...completetd ..0 errors...0 warnings

Das ist wohl eine Frage betreffs C-Compiler. Da kann ich Dir nicht 
helfen, für C bin ich ungeeignet (eigene Feststellung, schon seit Langem 
bekannt). Ich weiß nicht, was man alles tun und einbinden muss, damit 
ein C-Programm überhaupt Compilierfähig ist. Ich muss das aber auch 
nicht wissen, denn ich werkele in Assembler.

Du kannst natürlich auch mal mit einem Dateimanager Deiner Wahl im 
Projektordner nachsehen, ob der Compiler eine Hexdatei erstellt hat. 
Dazu könnte man Datum und Uhrzeit der Erstellung der Datei im Vergleich 
zur Systemzeit des Rechners berücksichtigen.

Hane89 --- schrieb:
> DDRB=0xFF;
>   led2_status=0xFF;
>   PORTB=led2_status;

Damit bekommst Du am STK500 keine LED zum Leuchten, da die LEDs (wie 
auch die Taster) L-aktiv sind. Gut, Du hast es vermutlich inzwischen auf 
0x00 geändert, also von einem Extrem zum anderen. Denn es gibt zwischen 
0x00 und 0xff genügend Zwischenwerte, bei denen einige Portpins auf H 
und einige Portpins auf L geschaltet werden, worauf dann einige LEDs 
leuchten sollten, egal, ob sie H- oder L-aktiv sind.

...
#3029439
Lesenswert?

Kapersky schrieb im Beitrag #3029425:
>>Probiere mal das angehängt Hex-File aus.
>
> VORSICHT!!! VIRUS!!!


Einen schönen Gruß an deinen Kaspersky.
Aber für ASCII-Text Files kann er sich seine Meldung sparen.
Die kann man im Notepad aufmachen, die kann man auch mit AVR-Studio auf 
den µC brennen, aber eines ist da ganz sicher nicht drinnen: ein Virus. 
Da ist einfach nur Text drinnen. Und zwar so wie Gott ihn schuf: 7 Bit 
ASCII. Die Probleme mit EMail Viren haben erst angefangen, als die 
BWL-er unbedingt HTML in den EMails haben wollten, bzw. Microsoft ihnen 
das gegeben hat. Vorher war das nämlich überhaupt kein Problem.
OP #3030615
Lesenswert?

Hallo Leute, also das Problem war die Software selbst!!!!
Habe AVR Studio 4.19 nochmals deinstalliert und wieder installiert!
Jetzt bekomm ich auch eeeendlich Meldungen, wenn ich das Programm z.B. 
kompiliere oder auch übersetzen möchte!!!!

Jetzt bekomme ich bei der Kompilierung von diesem Programm:

#include<avr/io.h>
#include<util/delay.h>

int main (void)

{
  DDRB=0xff

  while (1)
  {
    PORTB=0xff;
    _delay_ms(1000);
    PORTB=0x00;
    _delay_ms(1000);
  }
  return 0;
}

diese Meldungen:

Build started 5.2.2013 at 10:15:00
avr-gcc  -mmcu=atmega16 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT LED_TEST.o 
-MF dep/LED_TEST.o.d  -c  ../LED_TEST.c
In file included from ../LED_TEST.c:2:0:
c:\program files (x86)\atmel\avr tools\avr 
toolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h: 
90:3:  warning: #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]
../LED_TEST.c: In function 'main':
../LED_TEST.c:9:3: error: expected ';' before 'while'
make: *** [LED_TEST.o] Fehler 1
Build failed with 1 errors and 1 warnings...

kann mir da jemand weiterhelfen?
#3030639
Lesenswert?

Hane89 --- schrieb:
> kann mir da jemand weiterhelfen?

Steht doch alles da:

Hane89 --- schrieb:
> 90:3:  warning: #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Du hast dem Compiler nicht gesagt wie schnell Dein Controller taktet, 
somit weiß er nicht, wie die Warteschleifen berechnet werden sollen.

Hane89 --- schrieb:
> ../LED_TEST.c:9:3: error: expected ';' before 'while'
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Du hast wohl ein Semikolon vergessen. Wo weiß ich nicht, ich kann kein 
C.

...

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