Forum: Compiler & IDEs Probleme mit avrgcc


von Toni (Gast)


Lesenswert?

Ich habe mir avrgcc 20011121a laut Turtorial installiert.

Wenn ich das gcctest1.rom file in den 4433 brenne  funktionierts.Aber 
wenn ich das File selber erzeuge funktioniert es nicht.
Ich bekomme auch keine Fehlermeldung.
Nachdem ich make eingegeben habe, bekomme ich die Meldung
errors: none

ps.: MCU habe ich im Makefile geändert sonst nichts.

Ich hoffe es kann mir jemand helfffffen.

mfg Toni

von Peter Fleury (Gast)


Lesenswert?

Installierte aktuelle Version WinAVR 3.3 !

Zitat von der Seite
http://www.mikrocontroller.net/avr-gcc.htm

"Die aktuellste Windows-Version von avr-gcc gibt es auf 
http://sourceforge.net/projects/winavr/.";

von Joerg Wunsch (Gast)


Lesenswert?

Was heißt denn, ,,funktioniert es nicht''?  Was kann denn noch
nicht funktionieren, wenn denn schon alles (im AVR) funktioniert?
Meinst Du, daß die Simulation nicht tut?  Simulation ist Schall
und Rauch...

Aber im Ernst: was Du da installiert hast, ist hornalt.  Die
aktuelle Windows-Versoin von avr-gcc und Konsorten findest Du
in der WinAVR-Distribution.  Wenn Du sowieso neu anfängst, dann
tu Dir (und uns, die wir Deine Fragen beantworten sollen :) den
Gefallen und nimm was aktuelles.

von Peter Fleury (Gast)


Lesenswert?

In diesem ebenso veralteten gcctest1 Beispielen befindet sich eben neben 
der Source auch das bereits ein fertiges Binary.

Ich nehme an Toni konnte erfolgreich dieses Binary brennen, aber sein 
selbst kompiliertes Binary funktionierte offenbar nicht.

Ich mich Jörgs Vorschlag nur anschliessen, installiere die neueste 
WinAVR Distribution und vergesse die alten gcctest* Beispiele.

Zusätzliche Beispiele findest Du auch auf meiner Homepage:
http://www.mysunrise.ch/users/pfleury/avr-software.html

von toni (Gast)


Lesenswert?

Ich habe jetzt win AVR3.3 installiert.
Weiters habe ich die avrgcc-examples von Peter Fleury  kompiliert. Kein 
Fehler wie bei der alten avrgcc 20011121a
Version.
Ich habe dann voller Freude Walkingled in meinen 4433
gespielt.Aus Walking Led wurde Standingled, alle Leds
Leuchten.
Habe dann so alles ausprobiert was mir eingefallen ist.

Das Makefile von AVR3.3 habe ich dann etwas abgeändert.
(MCU und Target) und siehe da jetzt gehts.
Warum ????

Vielleicht kann mir einer das erklären.

Danke für euer bemühen.

von Peter Fleury (Gast)


Lesenswert?

Toni, wie du richtig bemerkt hast, muss man dem avr-gcc im Makefile 
angeben für welchen AVR-Typ man ein binary bilden will.
Meine Beispiele habe ich für den 8515 entwickelt und getestet, sie 
sollten aber auch auf anderen AVRs laufen.

von toni (Gast)


Lesenswert?

Ich habe jetzt auch mit dem Makefile von den Beispielen von
Peter Fleury ein binary erzeugen könne, das in meinem 4433
funktioniert.
Dabei habe ich nur folgende Änderung vorgenommen.
MCU = at90s4433

statt:ROMFORMAT       = src

    habe ich

      ROMFORMAT       = ihex

somit habe ich ein intel hex binary erzeugt, denke ich.

Doch beim Compilieren von PWMDEMO gab mein Compiler auf.

Der Grund dafür ist, das ich den 4433 verwende, und nicht
den 8515.(MCU 4433)

Ich hoffe meine Aussagen sind richti,wenn nicht korrigiert
mich bitte.

mfG Toni

von toni (Gast)


Lesenswert?

Ich habe jetzt das PWMDEMO von Peter Fleury für den 4433 abgestimmt. 
Sieht so aus:




************************************************************************ 
*******/
#include <inttypes.h>
#include <avr/io.h>


/*
 * constants
 */
#define OC1A PD5                   // output compareA pin


/*
 * function prototypes
 */
static void delay(uint16_t us);


/*
 * function definitions
 */
static void delay(uint16_t us)
/* delay for a minimum of <us> microseconds    */
/* with a 4Mhz crystal, the resolution is 1 us */
{
    while ( us ) us--;
}


int main(void)
{
    uint8_t i = 0;


    DDRB  = 0xff;                  // use all pins on PortB for output
    PORTB = 0xff;                  // set output high -> turn all LEDs 
off


    sbi(DDRD,OCR1);                // set OC1A pin as output
    cbi(PORTD,OCR1);               // clear OC1A

    // enable 8 bit PWM, select inverted PWM
    TCCR1A =  _BV(PWM10) | _BV(COM11) | _BV(COM10);

    // timer1 running on 1/8 MCU clock with clear timer/counter1 on 
Compare Match
    // PWM frequency will be MCU clock  8  512, e.g. with 4Mhz Crystal 
977 Hz.
    TCCR1B = _BV(CS11) | _BV(CTC1);


    /*
     *  Dimm LED on and off in interval of 2.5 seconds
     */
    for (;;)
    {
        /* dimm LED off */
        for( i=255; i>0; i--)
        {
            OCR1L = i;
            delay(10000);    // delay 10 ms
        }
        /* dimm LED on */
        for (i=0; i<255; i++)
        {
            OCR1L = i;
            delay(10000);   // delay 10 ms
        }
    }
}


mfG toni

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.