Forum: Mikrocontroller und Digitale Elektronik AVR mega32 brauche Hilfe zur Programmierung, erstmal LED an und aus


von spike (Gast)


Angehängte Dateien:

Lesenswert?

Hey,
ich bin dabei ein Ladegerät zu bauen, das mit einem ATmega32 gesteuert 
werden soll. Die Elektronik steht, aber ich habe Probleme mit dem 
Programmieren des µC.
ich will erstmal teil für teil in Betrieb nehmen, leider funktioniert 
das einfachste schon nicht, eine LED nach Tasterdruck zum leuchten zu 
bringen, vllt kann mir wer sagen was ich falsch gemacht habe, vielen 
Dank schonmal im Vorraus!

hier der kurze Code, Im anhang die Hardware beschaltung des µC

#include <avr\io.h>

main()
{
// Ausgänge und Eingänge
  DDRB  =  0x00;
  DDRD  =  0x04;

//
  PORTB  =  0xff;
  //PORTD  =  0x00;    // nicht benötigt, da Ausgang

  do
  {
    if  (!(PINB&0x01))  // abfrage ob Bit1 nicht High ist,
              //also nicht gedrückt ist
    {
      PORTD=0xff;    // LED aus
    }
    else
    {
      PIND=0x00;    // LED an
    }
  }
  while(1);
}

von Otto (Gast)


Lesenswert?

Der Controller rennt einmal bis zum:

while(1);

und das war es dann....

von John (Gast)


Lesenswert?

Du musst entweder D1 umpolen oder R7 an Masse legen statt an +5V.

von Matthias (Gast)


Lesenswert?

>Der Controller rennt einmal bis zum:
>while(1);
>und das war es dann....

Das ist schon so korrekt, da while gehört doch zu dem do Block!

von spike (Gast)


Lesenswert?

also die LED bekomm ich zum leuchten, also bleibt die Diode und der 
Widerstand so wie sie sind!
wenn ich oben beim do nen while(1) schreibe, also also dem do...while 
nen einfachen while mache, ist die LED bei der Inbetriebnahme an, und 
ich kann sie austasten, merkwürdigerweise, bleibt sie aus, habe doch gar 
keinen speicher... fragen über fragen...

von Hc Z. (mizch)


Lesenswert?

1
>       PORTD=0xff;    // LED aus
Wenn die LED gegen Vcc geht, wird das stimmen.  Aber was ist das?
1
>  PIND=0x00;    // LED an

Das macht keine LED an.  Vergleich's mal mit der ersten Zitatzeile und 
es wird Dir wohl schnell klar.

von Ernst (Gast)


Lesenswert?

spike schrieb:
> PIND=0x00;    // LED an

sollte das nicht eher PORTD=0x00;  heissen?


Ernst

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

hat das nen Sinn, dass du einmal
1
PORTD = 0xFF;
 (richtig)

und einmal
1
PIND = 0x00
 (falsch)

benutzt? ;)

Außerdem ist die Diode tatsächlich falsch rum (im Schaltplan). 
Angeschlossen hast du sie vermutlich richtig, wenn sie leuchtet oder da 
is was im Argen ;)

Gruß
Lasse

von spike (Gast)


Lesenswert?

also erstmal vielen dank, betriebsblind... muss natürlich PORTD=0x00; 
heißen!

und die sache mit der LED, is ja peinlich wenn ich sag das ich 
elektroniker bin, aber hab da so oft hin und her überlegt ob ich die 
über low oder high schalte, das is wohl durcheinander gegangen.. aber 
angeschlossen is sie wirklich richtigrum... danke für den hinweis

damit is das erste problem gelöst, jetzt kann ich etwas weitermachen!
Eine Frage mal noch, ich will dann ja noch PWM und ADC betreiben, was 
für Register ich wie beschalten muss, hat da jemand tipps wo ich das 
nachlesen kann, fürs Datenblatt bin ich zu blöd, is nich mein ding mit 
dem technischen Englisch!

von Michael B. (planlessmichi)


Lesenswert?

spike schrieb:
> hat da jemand tipps...

Hallo Spike,
ich hasse ja eigentlich selbst so kurze Antworten, aber die beiden 
Artikel hier: AVR-Tutorial: ADC und AVR-GCC-Tutorial 
(http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29) 
sind schon recht verständlich und in deutsch; programmierst Du in C oder 
Assembler?

von spike (Gast)


Lesenswert?

ich programmiere in C, und hab mich jetzt auf AVR studio festgelegt!
danke dir

von Michael B. (planlessmichi)


Lesenswert?

:-) Also Du meinst AVR Studio mit WinAVR, oder? Das "nackte" AVR Studio 
macht ja nur ASM; mit WinAVR (also gcc) wäre das zweite Tutorial schon 
hilfreich. Schon mal drüber geschaut?
ADC und PWM mache ich auch erst seit ein paar Wochen, aber vielleicht 
ist gerade das hilfreich, weil ich die "Anfängerfehler" dann noch frisch 
im Kopf habe, die ein "alter Hase" schon als so offensichtlich ansieht, 
dass er daran gar nicht denkt. Also wenn Du danach noch Fragen hast... 
:-)

von spike (Gast)


Lesenswert?

ja, hab kurz drüber gesehen, sieht recht hilfreich aus!
kann ich dich denn hier irgendwie persöhnlich anschreiben, habe bestimmt 
fragen, und freue mich über fachlich nachvollziehbare Hilfe!

PS, habe das AVR studio genau so wie du es geschrieben hast, mit win 
avr!

von Michael B. (planlessmichi)


Lesenswert?

spike schrieb:
> kann ich dich denn hier irgendwie persöhnlich anschreiben

Klar; einfach auf meinen Nick klicken und schreiben :-) Weiß jetzt 
nicht, ob das als Gast geht, aber früher oder später ist ein "fester 
Account" ohnehin hilfreich :-) Einfach mal anmelden; dann kann ich Dir 
sicher antworten

von spike (Gast)


Lesenswert?

ok, alles klar, dann weiß ich jetzt bescheid, schönes wochenende dann 
noch, und du wirst von mir hören, um so länger es dauert um so besser... 
hoffe ich finde zeit mich immer wieder hinzusetzen und weiter zu testen

von Michael B. (planlessmichi)


Lesenswert?

Danke, Dir auch. Und viel Spaß noch ;-)

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.