Forum: Compiler & IDEs IO-Port setzten geht nicht


von Felix (Gast)


Lesenswert?

Hallo zusammen,

ist mir fast peinlich, aber ich stehe ganz am Anfang und komme nicht 
weiter. Habe schon oft erfolgreich AVR´s porgrammiert, aber bei meinem 
jetztigen Projekt muß ich auf einem Auge ganz blind sein. Ich arbeite 
mit neusten Version von AVR Studio (+GCC) und einem STK500. Als MC hält 
ein ATmega88 her. Schon folgender Codeschnipsel tut nicht, was er soll:

#include <avr/io.h>

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

  while (1)
    {}

  return 0;
  }

PORTB-Steckleiste auf dem STK500 ist mit der für die Leds verbunden. 
Nach dem Programmieren sollte der MC ja gleich loslegen und einige Leds 
sollten läuchten... Was sehe ich nicht, was ihr seht?

Vielen Dank!

von Marian (Gast)


Lesenswert?

Wird vielleicht die while-schleife vom Compiler wegoptimiert?

von Andreas K. (a-k)


Lesenswert?

Nein. Sowas wird nicht wegoptimiert.

von Andreas K. (a-k)


Lesenswert?

Um Missverständnissen vorzubeugen: die LEDs leuchten bei 0.

von Felix (Gast)


Lesenswert?

So, habe jetzt was in die while-Schleife reingeschrieben, macht aber 
keinen unterschied...

#include <avr/io.h>

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

  while (1)
    {
    DDRD = 0xff;
    }

  return 0;
  }

von Johannes M. (johnny-m)


Lesenswert?

Denk dran, dass zumindest die Pins PB7 und PB6 nicht an der PORT 
B-Leiste angeklemmt sind, sondern an der PORTE/Zusatzfunktionen-Leiste 
(XTAL1 und XTAL2). Außerdem sind die LEDs beim STK500 High-Side 
angeschlossen, d.h. eine Null im PORT-Register schaltet die LED ein. 
Nach Deinem Schnipsel oben müssten dann allerdings zumindest die LEDs 
Nr. 5 und 4 leuchten...

Gibt es beim Programmieren keine Fehlermeldungen? Ist der VTarget-Jumper 
gesetzt?

von Johannes M. (johnny-m)


Lesenswert?

Felix wrote:
> So, habe jetzt was in die while-Schleife reingeschrieben, macht aber
> keinen unterschied...
Sollte es auch nicht.

von Felix (Gast)


Lesenswert?

Nein, beim Compilieren gibt es keine Fehlermeldung und auch keine 
Wahrnung. Der VTarges-Jumper ist gesetzt (sonst könnte ich ihn auch 
nicht über das Board programmieren). Programmieren geht auch ohne 
Probleme. Auch tritt das Problem mit verschiedenen ATMega88 auf.
Gruß und danke!

von Micha (Gast)


Lesenswert?

Richtiger µC ausgewählt? Versuch's mal

manuell: "#include <avr/iom88.h>"
bzw.     "#include <avr/iom88p.h>"

von Felix (Gast)


Lesenswert?

mit #include <avr/iom88.h> bekomme ich eine Fehlermeldung: Include 
<avr/io.h> instead of...". In den Projetk-Options ist atmega88 
eingestellt. Und die "Signature" passt auch...
Folgende Frage habe ich mir auch schon gestellt: Hat der uC einen Takt; 
in den Fuses steht er auf int. RC-Osz. mit 8Mhr, CKDIV8 ist an. Außerdem 
könnte ich ihn ohne Takt auch nicht programmieren.
Die Jumper des STK500 haben das <default settint>.
Vielen Dank für eure Unterstützung...

von Felix (Gast)


Lesenswert?

guten abend zusammen,
hardware o.k., software o.k., benutzer naja...
also ganz einfach, ich habe einfach im programmer-fenster immer eine 
alte hex-datei auf den uc hochgeladen, da ich fälschlicherweise 
instinktiv davon ausgegangen bin, dass immer die hex aus dem aktuellen 
projetk hochgeladen wird. leider ist dem nicht so... soetwas kann schon 
mal 2 tage dauern, bis man darauf kommt :-)
gruß und danke für eure antworten.

von GUI (Gast)


Lesenswert?

Es gibt keine intuitiven GUIs, es sind nur die Nutzer die intuitiv 
handeln !

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.