Forum: Compiler & IDEs WINAVR und AVR-Studio


von Norbert Dehn (Gast)


Lesenswert?

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

von BAB (Kai K.) (Gast)


Angehängte Dateien:

Lesenswert?

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

von BAB (Kai K.) (Gast)


Lesenswert?

ps.: bitte IMMER die aktuelle WinAVR version nehmen.
zu finden unter: https://sourceforge.net/projects/winavr/

von Norbert Dehn (Gast)


Lesenswert?

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

von BAB (Kai K.) (Gast)


Lesenswert?

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

von Norbert Dehn (Gast)


Lesenswert?

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

von BAB (Kai K.) (Gast)


Lesenswert?

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

von Norbert Dehn (Gast)


Lesenswert?

Hallo Kai,

danke für die Info.

Mit freundlichem Gruß

Norbert Dehn

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.