Hallo zusammen, ich beschätige mich seit einigen Tagen mit der ATMEL 90er Serie. Als Enwicklungstools habe ich mir WINAVR und das ATMEL AVR-Studio 3... und 4.. vom Internet geladen und installiert. Ausserdem habe ich mir ein Demoprogramm heruntergeladen. Das Programm bsteht aus einem c-File (Main), einem c-File mit 2 Unterprogrammen, einem .h-File und dem Makefile. Das Demo kann ich ohne Probleme mit WINAVR übersetzen. Nach dem Listing zu urteilen ist der Code auch in Ordnung. Es wird auch eine entprechende .cof - File erzeugt. Bei der Simulation auf dem AVR-Studio 3 oder 4 geschieht folgendenes: Aus dem Hauptprogramm "main" wird das 1. externe Unterprogramm aufgerufen. Dieses Unterprogramm kehrt jedoch nicht an die Stelle im Hauptprogramm zurück, sondern auf der der Adresse 0 und startet somit das Hauptprogramm erneut. Mache ich da was falsch??? Nachfolgend die Files: ####### testit.c ################ /*********************************************************************** ** ************************************************************************ * Title : Small sample project for WinAvr 3.3 Author : Kai Klenovsek <firepower@firemail.de> Known as "BAB" Company : Date : Last Change : Compiler : WINAVR 3.3 Target : any AVR device // Makefile is written for AT90S8515 Hardware : Tested on STK300 and AVR-Studio 3.5 ------------------------------------------------------------------------ - DESCRIPTION: USAGE: for more information take a look to the header file (projectx.h) CONNECTION: for more information take a look to the header file (projectx.h) CHANGE HISTORY: for more information take a look to the header file (projectx.h) ************************************************************************ *** ************************************************************************ ***/ // *************************************** // ************ Include Files ************ // *************************************** #include <avr/io.h> #include "projectx.h" // For testing sample project int main(void) { setportb_output(); writevalue_portb(5); return (0); } ######## projectx.c ############ /*********************************************************************** ** ************************************************************************ * Title : Small sample project for WinAvr 3.3 Author : Kai Klenovsek <firepower@firemail.de> Known as "BAB" http://www.elektronik-4u.de Company : Date : Last Change : Compiler : WINAVR 3.3 Target : any AVR device // Makefile is written for AT90S8515 Hardware : Tested on STK300 and AVR-Studio 3.5 ------------------------------------------------------------------------ - DESCRIPTION: USAGE: for more information take a look to the header file (projectx.h) CONNECTION: for more information take a look to the header file (projectx.h) CHANGE HISTORY: for more information take a look to the header file (projectx.h) ************************************************************************ *** ************************************************************************ ***/ // *************************************** // ************ Include Files ************ // *************************************** #include <avr/io.h> #include "projectx.h" extern void setportb_output(void) { // OUTPUT is defined in the headerfile as 0xFF ! DDRB = OUTPUT; } extern void writevalue_portb(unsigned char value) { // Write value to PORTB PORTB = value; } /*********************************************************************** ** ************************************************************************ * Title : Small sample project for WinAvr 3.3 (projectx.c) Author : Kai Klenovsek <firepower@firemail.de> Known as "BAB" http://www.elektronik-4u.de Company : Date : 23.12.03 Last Change : 23.12.03 Compiler : WINAVR 3.3 Target : any AVR device // Makefile is written for AT90S8515 Hardware : Tested on STK300 and AVR-Studio 3.5 ------------------------------------------------------------------------ - DESCRIPTION: USAGE: TO DO: CHANGE HISTORY: ************************************************************************ *** ************************************************************************ ***/ // ************************************************ // ************ Header file definition ************ // ************************************************ #ifndef PROJECTX_H #define PROJECTX_H // ******************************************* // ************ Diverse constants ************ // ******************************************* #define OUTPUT 0xFF // ************************************** // ************ Functiontyps ************ // ************************************** extern void setportb_output(void); extern void writevalue_portb(unsigned char value); ############# Headerfile Projectx.h ############ #endif //PROJECTX_H Besten Dank und schöne Osterfeiertage an Euch alle
hallo norbert, die version die du hast war für ein älteren winavr release und es hat sich einiges im makefile geändert (wo aber nach meiner meinung nicht das problem liegt). nimm mal bitte diese version hier. hab da das aktuelle makefile aus winavr drin mit ein paar modifikationen. das funnktioniert bei mir einwandfrei mit avrstudio 3.55. Gruss, BAB
ps.: bitte IMMER die aktuelle WinAVR version nehmen. zu finden unter: https://sourceforge.net/projects/winavr/
Hallo Kai, ich bedanke mich zunächst für Deine schnelle Antwort. Ich habe Dein Projekt (SimpleTest) übersetzt und versuchte es im AVR-Studio 3.. bzw. 4.. zu simulieren. Im AVR-Studio 4 komme ich genau zum 1. Funktionsaufruf, dann geht die Statusanzeige in der Satuszeile auf "Running" (grün) und man kann die Simulation nur über "BREAK" oder "RESET" abbrechen. Ich will Dir kurz meine Vorgehensweise mit dem AVR-Studio beschreiben: Ich gehe im Menu auf: File -> open und wähle mir das .cof - File aus und lade dieses. Durch das Programm steppe ich mit F10. Ich denke das ist korrekt oder ??. Ich denke auch, dass ich die neueste WINAVR-Versíon habe. Ich habe folgende Installation: WinAVR 20030312-bin-install.exe. Ich habe mal die Ausgabeinformation von WINAVR im Anschluss reinkopiert. Weiters Info: Ich habe einen PC mit P4 und Win XP, aber das dürfte eigentlich nichts ausmachen. Als Anhang den WINAVR - Kommentar ################################### make -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3 20030310 (prerelease) Copyright (C) 2002 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. Size before: text data bss dec hex filename 0 108 0 108 6c testit.hex -------- end -------- Size after: text data bss dec hex filename 0 108 0 108 6c testit.hex Errors: none ############################################ Viele Grüße und schöne Osterfeiertage Norbert
1. winxp dürfte kein problem sein das nutze ich auch. 2. F10 ist soweit korrekt aber bedenke das du damit einen step over machst und nicht selber die funktion die da hinter steckt debugs. für ein step into nimm F11. 3. WinAVR 20030312-bin-install.exe ist die aktuellste stimmt somit auch. 4. was macht eigentlich portb bei der simulation? es sollte im DDRB wie auch im PortB selber 0xFF stehen. check das mal bitte. 5. ich arbeite ausschliesslich mit avrstudio 3.55. die 4er version ist eine komplett neue und hat nichts mit der 3er version zu tun. ich hatte damals auch reichlich probleme mit der 4er und bin deswegen bei der 3er geblieben also probiers mal bitte mit der oder hast du damit das selbe problem? Gruss, Kai
Hallo Kai, jetzt klappt alles wunderbar, mit AVR-Studio 3.. und 4.. . Als ich mir alles nochmal durchgeschaut habe, ist mir aufgefallen, dass im IO-Fenster von AVR-Studio ein anderer CPU-Type eingestellt war, als im MAKEFILE angegeben. Nach korrektur im AVR-Studio läuft alles. Das wars wohl. Ich danke Dir für Deine tatkräftige Unterstützung. Ich habe noch eine Frage: Wo bekomme ich eine Beschreibung (Buch) in der WINAVR-Compiler und WINAVR-Make beschrieben sind. Mir geht es vor allem auch um die Switches die es gibt. Besten Dank nochmal für alles. Mit freundlichem Gruß Norbert Dehn
Hallo Norbert, wie Joerg Wunsch schon in einem anderen Thread geschrieben hat ist WinAVR nicht der compiler sondern eine entwicklungsumgebung bestehend z.b aus: - AVR-LIBC - Binutils - AVRDUDE usw. und viele sachen mehr. lies dir mal bitte das readme file im winavr ordner durch. dort beschreibt eric was winavr ist und was so alles mitgeliefert wird. dokumentationen über die lib, makefile und andere sachen findest du im ordner c:\winavr\doc. Gruss, Kai
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.