Hallo Leute, ich versuche gerade über einen Taster eine LED anzusteuern. Das ganze soll nach folgendem Schema funktionieren: Begin LED aus Taste gedrückt LED an Taste los LED bleibt an Taste gedrückt LED aus Taste los LED bleibt aus und jetzt mein Problem: Es funktioniert nicht.... Hier mal der Code: ldi r16, 0b11111111 ;0b11111111 out DDRA, r16 ;PortA als Ausgang 0b11111111 ldi r16, 0b00000000 ;0b00000000 out PORTA, r16 ;interne Pull-up's -> AUS ldi r16, 0b00000000 ;0b00000000 out DDRE, r16 ;PortE als Eingang 0x00 ldi r16, 0b11111111 ;0b11111111 out PORTE, r16 ;interne Pull-up's --> EIN ldi r17, 0b11111111 main: in r16, PINE jmp taster taster: sbrs r16, 3 jmp led_check_1 jmp led_check_2 led_check_1: sbrs r17, 0 jmp register_17_clear jmp register_17_check register_17_clear: cbr r18, 1 jmp loop register_17_check: sbrs r18, 0 sbr r18, 1 jmp loop led_check_2: sbrs r17, 0 jmp register_18_check jmp led_on register_18_check: sbrs r18, 0 jmp led_on jmp led_off led_on: cbr r17, 1 jmp loop led_off: sbr r17, 1 jmp loop loop: mov r16, r17 out PORTA, r16 jmp main
nur zu leute, hier immer kräftig code reinstellen, die gemeinde findet schon die fehler !!! oder noch besser- idee formulieren und passend programmierten code abwarten... hey andreas, streng deinen eigenen grips an !!! coderX
Ehe ich jetzt deinen Code analysiere (ist eh zwecklos, da keine Tastenentprellung erfolgt), solltest du vielleicht mal meinen alten Code analysieren. Da gibt es einen Taster, mit dem man den Laser einschalten/ausschalten kann, der tut genau das, was du anstrebst. Nur geht das nicht ohne Tastenentprellung mit Flankenerkennung. Und Tastenentprellung mit Flankenerkennung braucht nunmal (wenn es einfach und ressourcensparend bleiben soll) einen Timer-Interrupt. Und der Timer-Interrupt braucht nunmal zumindest den Interruptvektor (besser die ganze Interrupt-Vektortabelle). Davon ist aber in deinem Programmcode nix zu sehen... ...
Danke Marko und Hannes, ich habe da natürlich den falschen Ansatz gehabt. Die Flankensteuerung über Interrupts werde ich mir mal zu Gemüte ziehen. Den Code werde ich dann natürlich einstellen. Gruß Andreas PS(Für die zwei anderen Kandidaten): Ich beschäftige mich erst seit ca. 4 Wochen mit der Mikrocontrollerprogrammierung. Wenn Ihr entsprechende Ahnung hättet, könntet Ihr ja mal versuchen sinnvolle Informationen zu posten und nicht solch einen Schrott!
> Den Code werde ich dann natürlich einstellen. Wenn der so ist, wie im deinem ersten Post, dann lass' es lieber. > PS(Für die zwei anderen Kandidaten): > Ich beschäftige mich erst seit ca. 4 Wochen mit der > Mikrocontrollerprogrammierung. Wenn Ihr entsprechende Ahnung hättet, > könntet Ihr ja mal versuchen sinnvolle Informationen zu posten und > nicht solch einen Schrott! Das ist jetzt aber ungerecht! Wenn du dich erst seit Kurzem mit AVRs beschäftigst, dann fange doch etwas kleiner an. "Du kannst den Berg nicht mit einem Schritt besteigen." (Zitat von PeDa). Ohne Interrupt-Programmierung sind Tastenabfragen nicht ordentlich realisierbar. Die "zwei anderen Kandidaten" (und ich auch!!!) sind es leid, alle 3 Tage solche Fragen von sich selbst überschätzenden Programmiereinsteigern zu lesen oder zu beantworten. Und im Übrigen: Wenn hier jemand "Schrott" gepostet hat, dann bist du das (dein Programmcode). Deine Arroganz (sich über diese Antworten aufzuregen) solltest du also ruhig stecken lassen, denn du willst etwas von uns und nicht wir von dir. @Rahul: Meinst du wirklich? Nett und hilfsbereit ist Zweierlei... ;-) Grüß die Sprotten... ...
Danke für die klaren Worte! Habe soeben das Board gewechselt!!! Dort werden Anfänger genauso behandelt wie Fortgeschrittene, egal ob und wie oft solche Probleme auftreten, dann wird auf den entsprechenden Link verwiesen. Außerdem wollte ich keinen vorgefertigten Code haben, da ich verstehen will, wie der Mikrocontroller arbeitet. Da ich denke, mit einer Taste und einer LED nicht zu den sich selbst überschätzenden Programmieranfängern zu zählen und mir auch selbst Gedanken zum Problem gemacht habe (siehe oben - auch wenn es Anfängerschrott ist), finde ich es sehr arrogant, wenn jemand denkt, er wäre etwas Besonderes. Dir aber noch einmal vielen Dank. PS: Ich beantworte übrigens auch Fragen oder wirke an Problemstellungen mit (siehe Spotlight.de). Nur gebe ich dann sinnvolle Beiträge ab...
Übrigens kann man Taster auch per Warteschleife entprellen... Aber bei spotlight.de bist du schon gut aufgehoben...
Hallo Andreas! Ich denke HanneS wollte auf ein generelles Problem hinweisen, daß nicht nur Dich betrifft. Es geht auch um die Art des Postings: * Dein Betreff: ATMEGA Was soll das. Etwas mehr Infos bitte! Z.B. AVR: LED mit Tasten schalten oder etwas in der Art. Ist bei manchen Problemen nicht ganz leicht, aber sollte man schon versuchen. * Deine Fehlerbeschreibung: funktioniert nicht. Toll. Damit kann man viel anfangen. * Dein Problem: LEDs über Tasten schalten Ich glaube mit ein paar Minuten Suche im Forum oder Google findest Du den Hinweis, daß Du Dir etwas zum Thema Tastenentprellen ansehen solltest. Dazu findest Du hier im Forum und in den Artikel viele Hinweise und Codebeispiele Das Du Code postest finde ich eigentlich ganz in Ordnung. Meistens muß man mehrmals nachfragen bis jemand Code postet.
@Rahul: > Übrigens kann man Taster auch per Warteschleife entprellen... Sicher kann man die Mainloop auch mit einer (Rechenzeit verschlingenden) Warteschleife 'bremsen', ich meine aber, dass man das mit einem Timer-Interrupt einfacher, präziser und berechenbarer tun kann. Das ist der Grund, dass ich Warteschleifen für solche Zwecke prinzipiell nicht vorschlage. > Aber bei spotlight.de bist du schon gut aufgehoben... gg Das mag sein... Wer Hilfe sucht, sollte seine Arroganz etwas zurück nehmen. Ich habe zu helfen versucht, indem ich ein älteres Programm gepostet habe, in dem nicht nur die Frage des T-Flipflop (LED ein/aus) realisiert ist, sondern auch die Grundlagen der Interruptprogrammierung sowie eine der besten Tastenentprellungen (die beste?), die ich je gesehen habe. Es war kein speziell für Andreas programmierter Code, es sollte ihm nur die Möglichkeit geben, durch Analysieren die Dinge herauszupicken, die ihn interessieren. Aufgrund der recht übersichtlichen Struktur des Quelltextes sollte das kein Problem sein. Dann wollte ich damit auch zeigen, dass man ASM-Quelltext auch etwas übersichtlicher und lesbarer gestalten kann als in seinem ersten Posting. Nunja, wieder ein Argument mehr, meine Hilfsbereitschaft zu überdenken und evtl. zu reduzieren... Gruß von der Elbe... ...
@ all keiner ist mit Mikrokontrollern im Hintern geboren worden. Deshalb ist es nur fair wenn diejenigen, die diese Technik beherrschen, den Anfängern unter uns helfen. Die anderen Pfeifen und Schandmäuler, die nur dumme abfällige Bemerkungen parat haben, sollte man auf der Stelle liquidieren.
@Dirk: Was du ansprichst, ist zwar richtig, hat mich aber eigentlich nicht gestört. Was mich aber gestört hat, ist die Tatsache, dass Andreas die Leute, die ihm das vorgehalten haben, beschimpft hat. Und das nenne ich Arroganz. Aber das ist ja nun kein Thema mehr, er hat ja nun "sein Board" gefunden. Soll mir aber Wurscht sein... Gruß... ...HanneS...
@Hannes: Wenn das Programm sowieso nichts anderes machen soll, kann es sich auch damit beschäftigen Schleifen / Schafe zu zählen... Simpler geht es kaum/nicht, und sollte schon anfänger-kompatibel/verständlich sein. [OT] Kann es sein, dass ich mich heute nicht entscheiden kann? [/OT]
@Hannes: Bitte überdenke _nicht_ deine Hilfsbereitschaft! Ich finde das du ein sehr kompetenter Anpsrechpartner bist und wenn du merkst, dass der Problemsteller sich mit seinem Problem beschäftigt, dann hilfst du doch eigentlich auch gerne oder? Bitte laufe mir nicht weg :)...ich brauche deine hochqualifizierte Hilfe bestimmt auch noch einmal ;) Gruß Marian
Huch, hier wird ja kräftig ans Bein gepinkelt. Ich sach mal, wer nicht gerade das erste mal überhaupt auf einem Board ist, der sollte eigentlich wissen, daß auch Boardprofis keine Götter sind und auch mal nen schlechten Tag haben können. Am einfachsten ist es, berechtigte Kritiken zu beherzigen und übertriebene Kritiken zu ignorieren. Es ist auch hilfreich, gleich zu Beginn seine Vorkenntnisse (Anfänger) offen zu legen, damit der andere einen besser einschätzen kann. Und an die Profis: Einmal zuschlagen reicht, nochmal zurückschlagen nur, wenn auch gut überlegt (hat trotzdem keinen Zweck). Und Mitmachen muß auch nicht sein, wenn auch die Versuchung groß ist. Peter
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.