PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger mit STK 500



karline
08.09.2007, 23:06
Hallo, ich bin Neu auf dem Microcontrollergebiet, bringe nur ein bischen Erfahrung von früher mit kleinen Visual Basic-Spielereien mit. An Entwicklungssachen habe ich das STK500, das STK501 ein ATMEGA und noch ein paar andere Chips aber mir geht es jetz erst einmal darum reinzukommen, weil noch nicht alles läuft. Ich benutze das AVR-Studio 4, habe den STk auch erfolgreich angeschlossen und verstehe das mit den Überbrückungskabeln so lala.. Ich will jetzt erst mal einen ganz einfachen Beispielcode, egal welchen auf meinen Chip bekommen, so dass dieser läuft und ich ans Programmieren eigenes Sachen gehen kann. Wenn ich jetz einen C-Programmcode ins Studio lade, wie kann ich den dann compilieren und auf den Chip laden? Bei der Datenübertragung über dieses "STK500"-Menü und dann auf "Auto" und ein Häkchen bei "Programm FLASH" muss man ja einen hex-Datei erstellen, aber wie? Ich habs mit diesem WinAVR versucht, kein Erfolg. Was ist dieses makefile? Ich werde aus dem ganzen leider noch nicht so ganz schlau.. #-o

Bitte helft mir!! Das AVR-GCC-Tutorial kenne ich, verstehe es aber auch nur so lala...

[edit] ich bin jetz glaub ich einen schritt weiter. habe gelesen dass man zuerst das WinAVR und danach das Studio installieren muss, also habe ich das Studio deinstalliert und nochmal neu draufgeladen und siehe da auf den ersten Blick sind 5 Buttons dazugekommen:
- built active configuration
- built and run
- compile active file
- clean current configuration und
- edit current configuration options

funktionieren tuts leider immernoch nicht..

noch ne anmerkung, wenn ich auf built and run drücke dann spuckt der in seinem mitschnitt folgendes aus:

Loaded plugin STK500
Loaded plugin AVR GCC
Loaded partfile: C:\Programme\Atmel\AVR Tools\PartDescriptionFiles\ATmega16.xml
gcc plug-in: Output directory C:\Dokumente und Einstellungen\Johannes\Eigene Dateien\testing\default\ does not exist
gcc plug-in: Created directory C:\Dokumente und Einstellungen\Johannes\Eigene Dateien\testing\default\
Object file does not exist:
STK500: : Failed
gcc plug-in: Making arbitrary targets when using external makefile may fail
gcc plug-in: Error: Object file not found on expected location C:\Dokumente und Einstellungen\Johannes\Eigene Dateien\testing\default\testing.elf
gcc plug-in: Error: Object file not found on expected location C:\Dokumente und Einstellungen\Johannes\Eigene Dateien\testing\default\testing.elf


karline

Glacier
09.09.2007, 06:59
mit dem avrstudio kenne ich mich nicht aus.
ich bin auch neu in den Thema habe mir aber eine Controllerboard
(RN-MEGA128 Funk) gekauft.
Ich benutze WInAVR um zu Programieren und Compilieren..
Und PonyProg um das Hex-File zu übertragen.

Mit AvrStudio hat es bei mir nie geklappt.
Das AvrStudio nehme ich nur um mein Hex-File zu debuggen.

Hoffe das hilft dir ein wenig weiter...
/Glacier

robocat
09.09.2007, 10:55
mir ist so schemenhaft in erinnerung, dass pfade mit leerzeichen probleme machen können. schaff mal den testing ordner ins wurzelverzeichnis einer festplatte, vielleicht hilft das.

gruesse

karline
09.09.2007, 22:02
ok, schon mal danke das mit den leerzeichen hat ein bischen geholfen auch wenns immernoch nicht geht. also wenn ich den chip über Erase Devise lösche und dann direckt auf Build and run drücke (ist das richtig so?) dann spuckt er jetz andere sachen aus:


rm -rf voodoo.o voodoo.elf dep/* voodoo.hex voodoo.eep
Build succeeded with 0 Warnings...
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -MD -MP -MT voodoo.o -MF dep/voodoo.o.d -c ../voodoo.c
../voodoo.c: In function 'blink':
../voodoo.c:47: warning: implicit declaration of function 'cbi'
../voodoo.c:49: warning: implicit declaration of function 'sbi'
../voodoo.c: In function 'main':
../voodoo.c:55: warning: implicit declaration of function 'outp'
avr-gcc.exe -mmcu=atmega16 voodoo.o -o voodoo.elf
voodoo.o: In function `blink':
../voodoo.c:47: undefined reference to `cbi'
../voodoo.c:49: undefined reference to `sbi'
voodoo.o: In function `main':
../voodoo.c:55: undefined reference to `outp'
../voodoo.c:56: undefined reference to `outp'
make: *** [voodoo.elf] Error 1
Build failed with 4 errors and 3 warnings...


8-[ karline

fluchtpunkt
09.09.2007, 22:36
sbi, cbi und co sind schon seit mindestens 2 Jahren total veraltet.

Im Moment wuerde es wahrscheinlich ein #include <compat/deprecated.h> tun

In der Zukunft solltest du auf diese Krueppelfunktionen verzichten.

karline
10.09.2007, 13:40
Im Moment wuerde es wahrscheinlich ein #include <compat/deprecated.h> tun

was kann ich dafür tun? ist dass ein programm oder eine anweisung im studio?

fluchtpunkt
10.09.2007, 14:05
was kann ich dafür tun?
C lernen... (http://www.galileocomputing.de/openbook/c_von_a_bis_z/)
kurzform:

Die Include-Direktive kommt dahin wo in deiner C Datei schon die anderen includes sind.

karline
10.09.2007, 23:03
achso das ist ein programmcode ja klar :D
aber was bringt mir eine programmzeile wenn ich den code nicht mal compiliert, geschweigedenn auf den chip bekomme :(

das mit dem C ist im moment das geringste problem, ich nehm jetz erst mal vorprogrammierte dinger, einfach nur zum testen.

Grüße,
karline :Ostern

fluchtpunkt
10.09.2007, 23:07
aber was bringt mir eine programmzeile wenn ich den code nicht mal compiliert, geschweigedenn auf den chip bekomme :(
Wenn C dein geringstes Problem waer dann wuestest du was diese Zeile tut und warum sie dir helfen wuerde dein Programm erfolgreich zu kompilieren.


ich klink mich aus, sollen sich andere damit rumschlagen.

Sunstar
11.09.2007, 09:59
So ich lass dir mal ein kleines Programm da. Dieses kopierst du in das WinAVR Programmer´s Notepad und speicherst es unter einem Namen ( taster.c) oder so ab. Danach machst du das MFile von WinAVR auf. Jetzt gehst du auf Main file name und gibst dort auch den Namen taster ein. Danach stellst du unter MCU type deinen Controller ein. Dies waren schon mit die wichtigsten Einstellungen, den Rest kannst du so lassen. Nun gehst du auf File oben links und sagst speichen unter:, dort bitte den Ordner angeben wo du die C Datei auch schon drin hast. ACHTE bitte darauf dass das makefile klein geschrieben ist!!!!!

Nun gehst du zurück in WinAVR und sagst [WinAVR]Make All. Eigentlich sollte dann keine Fehlermeldung kommen. :)

Nun öffnest du AVR Studio und wählst keine Datei am Anfang aus, sondern du schließt das Auswahlfenster. Bei AVR Studio gibt es einen Button wo ein kleiner Controller mit der Bezeichnung AVR drauf ist. Den bitte öffnen. Dort musst du jetzt auch wieder deinen Controller aus der Liste auswählen. Nun suchst du unter FLASH deinen Ordner und deine Datei und übermittelst diese einfach in deinen Controller.

Ach ja LED´s mit dem Kabel bitte mit PortD anschließen und Taster bitte mit Port B anschließen. Schwupss kannst du mal ein wenig auf den ersten drei Taster rumhämmern. :)


#include <avr/io.h>


#define TAKT 2000000

int main (void)

{

// init Ports...
int i,j;

DDRD = 0xff; //alle 8 Portpins sind Input
PORTD = 0xff; //no pull-ups

DDRB = 0x00; //alle 8 Portpins sind Output
PORTB = 0x00; // High-Pegel setzen => STK500 LEDs aus



while (1)

{

//wichtig bei Atmel => du musst die PIN Register abfragen für einen Input

if((PINB & ( 1<<PD1 )) ==0 ) PORTD = 0; //alle an

else // alle wieder aus

else if((PINB & ( 1<<PD2 )) == 0 ) PORTD = 0xfb;

else if((PINB & ( 1<<PD3 )) == 0 )
for(i=0; i<1000;i++)
{
for(j=0; j<10000;j++)
{
if(i%8)
PORTD=0xFF;
else
PORTD=0x00;
};

Ich hoffe ich konnte dir damit etwas behilflich sein.

So long
Tom

fluchtpunkt
11.09.2007, 12:21
soll ich lachen oder weinen?

karline
11.09.2007, 22:03
danke sunstar, du hast mich sehr weitergebracht! leider bekomme ich bei [WinAVR]Make All doch einen Error und das ist wohl auch der Grund warum ich im Studio keine .hex-datai finde.

Meldungen im "programmers notepad":

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: taster.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./taster.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/taster.o.d taster.c -o taster.o
taster.c: In function 'main':
taster.c:31: error: expected expression before 'else'
taster.c:33: error: expected expression before 'else'
taster.c:42:15: warning: no newline at end of file
taster.c:42: error: expected declaration or statement at end of input
taster.c:42: error: expected declaration or statement at end of input
taster.c:11: warning: unused variable 'j'
taster.c:11: warning: unused variable 'i'
make.exe: *** [taster.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:03

was soll ich tun? danke für die geduld!

Grüße,
karline

robocat
11.09.2007, 22:24
"leise flüsterte die fee: lerne c!"

da fehlt code, also mach mal noch 3 geschweifte schliessende klammern "} } }" unten dazu. die zeile "else // alle wieder aus" muss auch weg. vielleicht kompiliert es dann, ich habe jetzt aber nur flüchtig drübergesehen. was das programm dann genau macht, hängt von deiner hardware ab.

gruesse

Sunstar
11.09.2007, 22:35
Sorry ich habe wohl den gesamten Code nicht kopiert. Robocat hat Recht, es müssen noch drei geschweifte Klammern unten dran.


PORTD=0xFF;
else
PORTD=0x00;
};

}
}
}

Und mit dem else mittendrin funzte bei mir erst, jetzt auch nicht mehr. Werde es morgen im Labor mal testen.

So long
Tom

karline
11.09.2007, 23:05
wooohoo! es geht =D> danke euch vielmals! das hätte jahre gedauert ohne eure hilfe O:)

fluchtpunkt
12.09.2007, 00:18
und jetz geh c lernen, dann verstehst du vielleicht auch irgendwann den hinweis zu sbi, cbi.

karline
12.09.2007, 00:28
ja fluchtpunkt is ja gut ich weiß auch deinen beitrag zu schätzen!! ich bin gleich deinem rat gefolgt und mich an c gewagt. 8-[ ...nur irgendwas stimmt nicht..

DDRB = 0xff;
PORTB = 0x15;

eigentlich müssten hier doch die 1. die 3. und die 5. lampe an sein und alle anderen aus oder nicht? wenn ein ausgang aktiviert ist, also logisch 1 oder "high" ist dann dann ist die lampe an diesem anschluss ja an..

bei mir ist alles immer gerade verkehrtherum, alle lampen die aus sein müssten sind an und alle die an sein sollen sind aus... ??? Was hab ich falsch gemacht? Ich benutze den ATMEGA8515L

Grüße,
karline...

roboterheld
12.09.2007, 08:15
.....bei mir ist alles immer gerade verkehrtherum...

kommt darauf an, wie die dioden auf dem board geklemmt sind.

du musst nicht nur c lernen!!!!!!!!!!!!! , sondern auch mal einen schaltplan von deinem board anschauen und ganz wichtig dieses datenblatt vom atmega!!!!!!!!!!!!!!!

ansonsten scheiterst du auf der ganzen länge.

mfg