WinAVR Anfäger Probleme

Gast #179349
Lesenswert?
• ▲
▼
Hallo zusammen..

Wollte jetzt doch mal versuche mit dem WinAVR und AVR Studio starten..

Habe mir ein kleines Programm (test.c) geschrieben, das Makefile dazu
angepasst und dann mit make, im selben Vrz. das HEX erzeugt.
Dieses habe ich dann auf meinen "kleinen" Mega8 drauf gepackt,
aber er tut leider nichts.. :-(

Hier die Dateien:

-- test.c --
#include <avr/io.h>
#define SYSCLK 4000000

int main(void)
{
    DDRB = 0xff;
    PORTB = 0xff;

    while(1)
    {
        PORTB = 0x00;
        PORTB = 0xFF;
    }

    /* NEVEREACHED */
    return (0);
}
-- ENDE --

Das Makefile habe ich mal angehängt, ist mit MFile generiert,
evt. liegt ja da der Hund begraben?

Habe mir das GCC-Tut schon angeschaut..

Danke für eure Hilfe..!
Angehängte Dateien:
Gast #179352
Lesenswert?
• ▲
▼
wenn du das ganze nur so kurz machst wird man vielleicht nicht viel
sehen können und aßerdem bin ich mir nicht sicher ob das so geht wie du
es geschrieben hast... das ist eher das codevision usw. code

-- test.c --
#include <avr/io.h>
#define SYSCLK 4000000

int main(void)
{
    outp (0xff,DDRB);
    outp (0xff,PORTB);

    while(1)
    {
       outp (0x00,PORTB);
       outp (0xFF,PORTB);
    }

    /* NEVEREACHED */
    return (0);
}

probier das mal so... glaube die PORTx DDRx usw kann man so nicht
verwenden.
Gast #179354
Lesenswert?
• ▲
▼
Hi

@manu
Also wenn ich dein Programm mit deinem Makefile übersetze kann ich das
Programm im AVRStudio simulieren und der PortB toggelt auch. Ich
vermute also du hast ein Hardware/Softwaredownload Problem.

@Sebastian
Das was du da als AVRGCC-Code verkaufst war vor Jahren noch nötig. In
der nächsten Version von WINAVR werden diese Makros schon garnichtmehr
unterstützt.

Matthias
Gast #179355
Lesenswert?
• ▲
▼
Hi zusammen,

hmm.. komisch.. Wenn ich ein anderes, Test Programm von mir (allerdings
Assembler) auf den µC Lade läuft es..

Habe auch schon versucht, das ganze im AVRStudio zu simulieren,
allerdings stürzt es beim öffnen der Datei ab.. :-(

Habe mal mein HEX File angehängt, erzeugt mit meinem oben geposteten
Code..

Evt. kannst du es ja mal mit deinem vergleich, Matthias!
Angehängte Dateien:
Gast #179358
Lesenswert?
• ▲
▼
Kann man beim "neuen" AVR Studio auch direkt mit HEX Files simulieren?
.. Lade es gerade mal schnell runter, ich habe noch eine 3er Version!

Das HEX File habe ich mit meinem Yaap Programmer auf dem MEGA8 kopiert,
lief alles ohne Fehler. Seltsam!
Gast #179360
Lesenswert?
• ▲
▼
Vermutung:
Auf dem realen AVR ist das evtl. viel zu schnell, entweder kommt die
Port Elektronik des AVR nicht hinterher, wenn man nur
"speed-togglet", oder das OSZI kann nix.

Ich würde mal ein dickes Delay zwischen die beiden PORTB= packen und
nochmal schauen.
Gast #179361
Lesenswert?
• ▲
▼
Naja, eigentlich sollte er das schon können, oder?
In Assembler packet er das ja auch...

Das OSZI kann das schon, wenn ich an den Quarzoszillator gehe,
sehe ich auch das Signal.. Es kann eigentlich bis 100MHz messen.
Gast #179362
Lesenswert?
• ▲
▼
@Matthias
das tut mir aber jetzt furchtbar... sorry

vor einiger zeit hatte ich mal wurde diese thema schon mal diskutiert
und damals hieß es daß z.B. PORTx=0x?? kein ansi c ist und auch nicht
vorgesehen ist diese art der syntax zu implementieren. (genau wie die
0b???????? schreibweise)

sorry.. bin wohl nicht mehr auf dem aktuellsten stand
Gast #179363
Lesenswert?
• ▲
▼
Hi

du verwechselst da was. Die Diskusion ging um

PORTB.1 = 1;
     ^^

Also dirkte Zuweisung an ein Bit. Das geht mit dem AVRGCC tatsächlich
nicht da es kein ANSI-C ist. Zuweisungen an einen ganzen Port sind
dagegen kein Problem.

Matthias
Gast #179366
Lesenswert?
• ▲
▼
hast du das mit den delays schon getestet???
oder mal nen anderen Port??
while(1)
{
        PORTB = 0x00;
        asm volatile("nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             ::);

        PORTB = 0xFF;
         asm volatile("nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             ::);
}
Gast #179367
Lesenswert?
• ▲
▼
Ja, habe am Wochenende noch das mit den Delays und mit dem PORTC
getestet... Natürlich kein Erfolg.. :-(

Ich habe nach dem Programmieren mal alles aus dem Flash + EEPROM
zurückgelesen, steht genau das drinnen, was drin stehen soll!
Gast #179368
Lesenswert?
• ▲
▼
Nun, also entweder schafft's dein Oszi wirklich nicht, oder dein Chip
ist kaputt.

Ganz davon abgesehen, Port B, du bist dir sicher, dass du nicht gerade
PB3...PB5 benutzt zum Testen?  Das sind die Pins für den ISP-
Programmer, wenn der noch dran ist, klemmt der u. U. die Signale auf
sein Potenzial.
Gast #179374
Lesenswert?
• ▲
▼
Hallo,
wie sieht den der Startup Code vom Compiler aus? Vielleicht fehlen
Initialisierungen? Prüf doch mal ob die Pins überhaupt auf Ausgang
stehen. (z.B. über einen 4k7 auf einen Pegel legen und messen ob der
Pin Strom liefert) Wg. der delay diskussion würde ich einfach den port
mit einem Zähler versorgen, dann sollte man ja was sehen können.

Robert
Gast #179375
Lesenswert?
• ▲
▼
Hallo zusammen,

eine freudige Nachricht, "es funktioniert" ..  Sorry, dass ich eure
Zeit vergoldet habe, meine 2 Mega's waren wirklich Defekt..
Da hätte ich auch selber drauf kommen können .. :-(
Ich habe dies eigentlich ausgeschlossen, da ich nicht geglaubt habe,
dass beide (auf verschiedenen Testboards verbaut) defekt sind.
Vorallem, Programmieren usw. hat ja noch geklappt...

Naja, wichtig ist, dass es jetzt klappt.. ;-)

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