www.mikrocontroller.net

Forum: Compiler & IDEs Anfängerproblem


Autor: Ezio Altair (altair)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jens M. (muggel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ezio Altair (altair)
Datum:

Bewertung
0 lesenswert
nicht 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" ;-)

Autor: Jens M. (muggel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ezio Altair (altair)
Datum:

Bewertung
0 lesenswert
nicht 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...;-)

Autor: Ezio Altair (altair)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Qwertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.