Forum: Compiler & IDEs Anfängerproblem


von Ezio A. (altair)


Lesenswert?

Hi Leute,

Ich bin neu hier im Forum und hoffe hier vielleicht Hilfe für mei 
Vorhaben, endlich fit mit MikroControllern zu werden ;-)

Also ich habe folgendes Problem... Ich hab ein STK500 und versuch so zum 
anfangen eine LED ein bzw wieder aus zu schalten. Dazu habe ich das 
Register B mit dem Flachkabel mit den LEDs verbunden.

Soweit So gut... ich schreib also:

#include <avr/io.h>







int main()

{



DDRB = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << 
DDB4);



  {  PORTB = (1<<PB0);

  }



}

Das DDRB muss ich ja machen um die Pins als Ausgänge zu definieren...so 
habe ich das bisher zumindest verstanden...ok jetzt gehen alle LEDs an 
ausser LED0...das versteh ich aber nicht! Weil ich schalt doch grad mit 
dem

{  PORTB = (1<<PB0);

  }

Die LED ein oder nicht?
Wenn ich jetzt aber

int main()

{



DDRB = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << 
DDB4);



  {  PORTB = ~(1<<PB0);

  }



}

schreib geht NUR LED0 an...so wollt ichs ja eigentlich auch! aber das ~ 
ist doch eine negation oder?! also müsste es doch genau anderst herum 
sein oder? also beim ersten code dürft doch nur LED0 angehen und beim 
zweiten alle AUSSER LED0

Wie ihr seht steh ich grad echt aufm Anfänger-Schlauch...

Wär echt super wenn einer schnelle Hilfe wüsst und mir das vielleicht 
erklären könnte...

Eigentlich hatte ich ja geplant die LED über einen Taste einschalten zu 
können aber wenns nichtmal so geht?!

Danke euch Vielmals ;-)

von Qwertz (Gast)


Lesenswert?


von Jens M. (muggel)


Lesenswert?

Schau mal in den Schaltplan vom STK 500. Die Leds werden mit negativer 
Logik angesteuert (Seite 9). Schaltest du den Pin auf High, so liegen an 
der LED 5V gegen 5V => If = 0A, schaltest du den Pin auf Low, dann 
schaltest du die Led nach Masse, somit geht Sie an.

Gruß, Jens

von Ezio A. (altair)


Lesenswert?

Dankeschön Vielmals ;-) Hätte nicht gedacht dass ich so schnell antwort 
bekomme...gibts hier am Board vielleicht so eine Art Anfängerpaket mit 
Beispielprogrammen? Also ich lern am einfachsten wenn ich Codes seh und 
denn daran nachvollziehen kann WAS denn da grade passiert...ich hab hier 
zwar schonmal das GCC Tutorial durchgeschaut aber ich lern einfacher 
"verkehrt herum" ;-)

von Jens M. (muggel)


Lesenswert?


von Qwertz (Gast)


Lesenswert?

>lso ich lern am einfachsten wenn ich Codes seh und denn daran >nachvollziehen 
kann WAS denn da grade passiert

Wie Du siehst, nützt Dir der Code alleine nichts. Du musst auch die 
Umgebung betrachten; Deine Annahmen nachprüfen, wie in diesem Fall 
anhand des Schaltplans.

von Ezio A. (altair)


Lesenswert?

Dankeschön aber wie gesagt ich bin daraus schon am lernen...nur wollt 
ich so en paar Beispielprogramme wo möglichst viel verschiedenes drin 
ist. Mir fällts viel leichter aus nem Programm heraus zu lernen wenn ich 
mir anschauen kann WAS ich machen muss damit etwas spezielles 
passiert...;-)

von Ezio A. (altair)


Lesenswert?

@Qwertz
Ja ok da geb ich dir recht;-) aber ich denk das mit den LED ist ja schon 
ein spezieller Fall wo es eben grad mal nicht logisch zur sache 
geht...also das die LED grad bei ner 0 angeht und bei ner 1 aus...

von Qwertz (Gast)


Lesenswert?

>Mir fällts viel leichter aus nem Programm heraus zu lernen wenn ich
>mir anschauen kann WAS ich machen muss damit etwas spezielles
>passiert...;-)

Hm. Vielleicht habe ich mich nicht klar genug ausgedrückt. Dein Wunsch 
nach Beispielprogrammen ist sicherlich verständlich und sinnvoll.

> aber ich denk das mit den LED ist ja schon
>ein spezieller Fall wo es eben grad mal nicht logisch zur sache
>geht...also das die LED grad bei ner 0 angeht und bei ner 1 aus...

Das eben ist genau das, was Du noch nicht verstanden hast. Das 
beschriebene Verhalten ist sehr wohl logisch. Aber was Du "logisch" 
nennst ist eine Festlegung und versteht sich nicht von selbst. Es gibt 
Fälle die häufiger sind als andere, aber keine "logischen" und 
"unlogischen" Festlegungen. Nur jeweils an die Problemstellung und die 
Hardware angepasste Festlegungen.

Naja. Das kriegst Du schon noch mit. Mag sein, dass ich da im Moment 
zuviel Betonung drauf lege.

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.