Ich wünsche euch einen guten Abend! Ich brauche mal eure Hilfe. Wie das so ist sitzt man an den blödesten Dingen länger als an den großen komplizierten. Ich versuche jetzt seit sage und schreibe 8 Uhr heute morgen, einen Taster abzufragen der dann z.B. eine LED ans leuchten bringt. Zum testen habe ich mir einfach ein kleines blödes Programm geschrieben. --------------------------------------- #include <avr/io.h> int main(void) { DDRC = 0b00011111; (PC5-7 als Eingang, Rest als Ausgang) PORTC = 0b11100000; (Interner PullUp für PC5-7) if ( !(PINC & (1<<PINC7)) ) { (Wenn Bit 0 dann . . .) PORTC |= (1<<PC0); (. . .mach die LED an) } return 0; } -------------------------------------- Wie man sieht, nichts aufregendes. Die Taster sind vom PIN weg auf Masse geschaltet. Die LED´s sind von PIN über Widerstand an Masse geschaltet. Zum testen habe ich mir eine Demo ASM Datei geschrieben, mit der das irgendwie geht. ber in C will es einfach nicht. Ich habe sicher schon 4 Programme geschrieben, aber alle Sachen die ich da verwendet habe, gehen nicht. Weiß der Geier warum nicht. Dieses Beispiel da oben ist übrigens nur eines meiner Versuche, welches auch nicht geht. Eine Beispielausgabe auf ein Display geht übrigens auch nicht. Display und LED´s funzen aber alle! Taster habe ich auch durch gemessen, tun auch alle das was sie sollen. uC ist ein Meg8515 auf 8 Mhz. Ich hoffe ihr könnt mir bei so einer komischen Frage helfen, ich denke ich sehe den Wald vor lauter Bäumen nicht. Ach ja, Tutorial bin ich heute sicher 10 mal durch gegangen. :-(
1. Solltes du das in einer Forever Schleife machen sonst läuft es nur einmal. 2. Wer macht die LED wieder aus ? der else fall fehlt Gruss Helmi
Das ging schnell! Das Ausgehen der LED interessiert mich gerade nur sekundär, weil es um die Sache an sich geht. Es soll ja eigentlich was ganz anderes gemacht werden. Nur nachdem es da Probleme mit den Tastern und LED´s gab, habe ich dafür etwas neues angefangen, damit ich nicht an meinem schon bestehendem Code herum basteln muss und mir evnetuell mehr fehler rein hole. Danke für den Tipp mit der While Schleife, habe ich noch eingebaut: while(1){ if ( !(PINC & (1<<PINC7)) ) { PORTC |= (1<<PC0); } } Läuft leider trotzdem nicht.
Noch immer wer macht die LED aus. while(1){ if ( !(PINC & (1<<PINC7)) ) { PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } }
Hab deine Else-Anweisung noch mit eingebunden, keine Besserung :-( Wie gesagt, für die eigentliche Sache soll die LED ruhig anbleiben, hauptsache ich finde den Fehler, wieso meine Taster nicht reagieren... Unter C
Pascal wrote: > Wie gesagt, für die eigentliche Sache soll die LED ruhig anbleiben, > hauptsache ich finde den Fehler, wieso meine Taster nicht reagieren... > Unter C Helmi wrote: > while(1){ > if ( !(PINC & (1<<PINC7)) ) { > PORTC |= (1<<PC0); > } else > { > PORTC &= ~(1<<PC0); > } > } So... nun ersetze mal diese Schleife mit allem darin durch PORTC |= (1<<PC0); Wenn die LED dann nicht leuchtet, liegt es wohl eher an deiner Beschaltung. Bitte um Test und Rückmeldung. Gruß, Magnetus
Na das hab ich doch schon getestet bevor ich überhaupt gepostet habe :-) Das funzt. Auch mit allen LED´s
Hast du ein Messgerät zur Hand? Dann miss mal die Spannung an PC7 bei gedrücktem und nicht gedrücktem Schalter.
>Die Taster sind vom PIN weg auf Masse >geschaltet. Haste vielleicht einfach vergessen noch Vcc mit einem Widerstand an den Pin zu legen?
Karsten B. wrote: >>Die Taster sind vom PIN weg auf Masse >>geschaltet. > > Haste vielleicht einfach vergessen noch Vcc mit einem Widerstand an den > Pin zu legen? Er hat die internen PullUps aktiviert. Hm... gibts beim Mega8515 evtl. auch so ein Pullup-Disable-Bit? (Datenblattwälz)
Alternate Function of PORTC: Ext. Mem. Interface Bits 8...15 Externes Speicherinterface ist aber schon deaktiviert, oder?
ups hab ich gar nicht drauf geachtet X-D Dann würde ich so auch mal sagen erst mal messen. Und vielleicht noch die Beschaltung posten.
Ich bin noch am messen und prüfen! Dauert noch einen Moment!
Pascal Mielke wrote:
> Ich bin noch am messen und prüfen! Dauert noch einen Moment!
...schon 10 Minuten vorbei... (Weinschlürf) ;o)
Also mal eine Zwischenmeldung . . . BOA WAS BIN ICH BLÖD!!!! Hatte in der Nacht wo ich die Controllunit gelötet habe die zweite Ebene vergessen mit Masse zu versorgen lol Also das Thema schieben wir am besten unter den Tisch . . . Das darf man ja keinem erzählen . . . rotwerdundzurweinflaschevonmagnusgreif Ich danke euch allen herzlichst für eure Mühen!!!!! Wie sagt man so schön, die schönsten Fehler sind die Hausgemachten g
Jau jau... manchmal sieht man halt den Wald vor lauter Bäumen nicht ;) Zum Wohl, Magnetus
Helmi wrote:
> Noch nüchtern ?
Ich denke, dass man sich schon nach einem Glas Wein nicht mehr als
nüchtern bezeichnen kann (selbst wenn man womöglich noch keine
bemerkensweren Auswirkungen spürt) ;)
Ich würde meinen momentanen Zustand als entspannt und leicht angeheitert
beschreiben... (nipp)
Gruß,
Magnetus
Ich als AntiAlki bin auf jeden Fall von Magnus seinem Wein besoffen lol
Hauptsache, deine Schaltung funktioniert jetzt (nochmalnipp)
Ich glaub schon lol Jetzt geht es an den Encoder . . . Und ich sehe, dass das wohl noch richtig spannend wird . . . Aber man wächst ja mit seinen Aufgaben :-D
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.