www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA


Autor: Andreas Bode (Gast)
Datum:

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

Autor: coderX (Gast)
Datum:

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

Autor: Jens Ry*acke (dij)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seit wann ist "funktioniert nicht" 'ne Fehlerbeschreibung?

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal nach den interrupts ... falling rising etc.

flankensteuerung ?¿

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach so, wenn du schon dabei bist ... schau auch mal
nacht tastenentprellung

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

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

...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes, du bist viel zu nett.

Autor: Andreas Bode (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: Andreas Bode (Gast)
Datum:

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens kann man Taster auch per Warteschleife entprellen...
Aber bei spotlight.de bist du schon gut aufgehoben...

Autor: Dirk Doerr (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

Autor: Adolf (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

Autor: Rahul (Gast)
Datum:

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

Autor: Marian (Gast)
Datum:

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

Autor: peter dannegger (Gast)
Datum:

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

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.