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 ;-)
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
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" ;-)
http://www.mikrocontroller.net/articles/AVR-Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
>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.
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...;-)
@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...
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.