Hallo an alle!!! habe mich hier gerade neu angemeldet weil ich mir das STK500 zugelegt habe und mich mit der Programmierung beschäftigen will!!! ich habe schon einiges hinbekommen mit dem Bord nur eins verstehe ich absolut nicht!!!! Ich will eine einfache und-verknüpfung herstellen zwischen zwei tastern die mir wenn ich beide zugleich drücke eine Diode aum ausgang schalten!!! Ich werd auch aus dem Tut.nicht schlau!!!! Habe schon gegooglet und hier im Forum gelesen auch den querverweis auf die andere avr seite ich kapier es einfach nicht!!!! ich hab auch kein bsp. wo das einfach erklärt ist!!! Ich danke euch!!!! Bitte helft mir!!!!!!!
Beide Taster in Reihe schalten. Beispiel: Pull Up-Widerstand an einen Portpin, der als Eingang deklariert wurde. Portpin Taster 1 Pin 1 verbinden Taster 1 Pin 2 an Taster 2 Pin 1 Taster 2 Pin 2 auf Gnd Wenn kein oder ein Taster gedrückt Portpin high wenn beide gedrückt Portpin low MW
Danke für die schnelle Antwort, habe die Taster und dioden auf dem Bord!!! ich bräuchte die Hilfe im bezug auf die programmierung, wie ich es Programmieren muss wenn Taster1 auf Pin1 geht und Taster2 auf pin2!!! Bitte helft mir!!!!!!!!!!!!
aber, aber... Hier gehts doch um Software und die Taster auf dem STK500, oder? @Uwe: welche Sprache, und was hast du schon gemacht?
Ich habe das experimentierBord STK500 da sind dioden und Taster fest verlötet!!! Ich bräuchte die Lösung bitte anhand eines Programms, da ich auf dem bord nix verändern kann!!!
Wenn du auf die Fragen antworten würdest, würdest du mit Sicherheit eine Antwort bekommen...
An crazy horse !!!!!!!! Danke!!!! Also ich habe bereits Dioden über Taster ein ,aus geschaltet, alle oder einzeln!!!! alles in assambler mit avr studio 4!!!!!!! und jetzt will ich halt weiter gehen und da hab ich ein Problem, das mit der logic verknüpfung!!!! Hab das bord erst vor 2 h ausgepackt also absoluter Anfänger!! Danke im voraus
@ES verwirr ihn doch nicht... Hier gehts um die Software @Uwe Programmiersprache? Welche IDE? (AVR Studio? WinAVR?,...)
Jungs, der Mann will einfach nur wissen, über welchen Programmschnipsel er mit zwei Tastern am Eingang mit ner Software UND Verknüpfung ne LED ansteuern kann. Und Uwe welche ProgSprache verwendest du?
Uwe Leibiger wrote: > Ich verwende assambler Das AVR Tutorial auf dieser Site kennst du? http://www.mikrocontroller.net/articles/AVR-Tutorial
> Welchen AVR?
ändert das so viel am Code?
Er will doch nur wissen, wie er ein logisches Und in Assembler
realisiert...
Uwe Leibiger wrote: > ich habe schon einiges hinbekommen mit dem Bord nur eins verstehe ich > absolut nicht!!!! > > Ich will eine einfache und-verknüpfung herstellen zwischen zwei tastern > die mir wenn ich beide zugleich drücke eine Diode aum ausgang > schalten!!! Dein Ausrufezeichen klemmt! Was hast Du schon hinbekommen? Machs erstmal mit einer Taste. Wenn Du es nicht schaffst, zeig mal Deinen Code, wie Du es probiert hast. Und wenn das geht, eben mit 2 Tasten. Wenn Du es nicht schaffst, zeig mal Deinen Code, wie Du es probiert hast. Einfach nur fertigen Code geben, hilft Dir ja kein bischen weiter. Peter
Ich geb dir mal ein Flussdiagramm, das dich weiterbringen sollte (ein fertiges Programm dazu wäre zu trivial, da lernst du nichts dabei) +---------------------------+ | Hardware initialisieren: | | die benötigten Portpins | | auf Ein bzw. Ausgabe | | schalten | | | +---------------------------+ | +---------------------------+ | An den Eingängen die Pull | | up Widerstände einschalten| | damit die Taster saubere | | Pegel liefern | +---------------------------+ | | <------------------------------+ v | +---------------------------+ | | LED ausschalten | | +---------------------------+ | | | +-------------> | | | v | | +---------------------------+ | | | Taster 1 abfragen | | | +---------------------------+ | | | | | /-----------\ | | / \ Nein | | | gedrückt ? | -------------------------+ | \ / ^ | \----------/ | | | | | | Ja | | v | | +---------------------------+ | | | Taster 2 abfragen | | | +---------------------------+ | | | | | /-----------\ | | / \ Nein | | | gedrückt ? | -------------------------+ | \ / | \----------/ | | | | Ja | v | +---------------------------+ | | LED einschalten | | +---------------------------+ | | +-------------+ Das realisiert, dass die LED nur dann leuchtet, wenn beide Taster gedrückt sind. Details zu jeder Stufe, findest du im Tutorial. Im Speziellen findest du alles was du für diese Aufgabe brauchst auf der Seite http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
hier der Code wie weit ich bin: .include "m8515def.inc" ldi r16, 0xFF out DDRB, r16 ; Port B ist Ausgang ldi r16, 0x00 out DDRD, r16 ; Port D ist Eingang ldi r16, 0xFF out PORTB, r16 ; alle LEDs aus ende: loop: sbic PIND, 0 ; nächsten Befehl überspringen, ; (Taste 0 gedrückt) rjmp loop ; Sprung zu "loop:" -> Endlosschleife cbi PORTB, 3 ; Bit 3 im IO-Register PORTB auf 0 setzen -> 4. LED an loop1: sbic PIND, 1 rjmp loop1 sbi PORTB,3 rjmp ende ; Endlosschleife
Uwe Leibiger wrote: > loop: sbic PIND, 0 ; nächsten Befehl überspringen, > ; (Taste 0 gedrückt) > rjmp loop ; Sprung zu "loop:" -> Endlosschleife Hier wirst du wohl eingreifen mussen, du willst ja nicht warten bis eine Taste gedrückt wurde, sondern du willst nur wissen ob die Taste gedrückt wurde. Wenn die Taste nicht gedrückt ist, dann gehts (laut Flussdiagramm von oben) damit weiter, dass die LED gelöscht werden. Um den Code dort anspringen zu können, brauchst du dort ein Label:
1 | LED_aus: |
2 | ldi r16, 0xFF |
3 | out PORTB, r16 ; alle LEDs aus |
4 | |
5 | Taste1: sbic PIND, 0 ; nächsten Befehl überspringen, |
6 | ; wenn Taste gedrückt |
7 | rjmp LED_aus ; Taste war nicht gedrückt, LEDs ausschalten |
8 | |
9 | ; Soweit, so gut. AN diese Stelle kommt das Programm nur |
10 | ; wenn Taste 1 gedrückt ist. Das reicht aber noch nicht |
11 | ; AUch Taste 2 muss gedrückt sein. Ergo |
12 | |
13 | Taste2: sbic PIND, 1 ; Ist sie gedrückt? |
14 | rjmp LED_aus ; nein, ist sie nicht, -> LEDs ausschalten |
15 | |
16 | ; Um hier her zu kommen, musste sowohl Taster 1 als auch |
17 | ; Taster 2 gedrückt sein. Daher wird die LED eingeschaltet |
18 | |
19 | ldi r16, 0x00 |
20 | out PORTB, r16 |
21 | |
22 | ; das wars, die Abfragerei kann von vorne anfangen |
23 | |
24 | rjmp Taste1 |
hey habs hinbekommen :) .include "m8515def.inc" ldi r16, 0xFF out DDRB, r16 ; Port B ist Ausgang ldi r16, 0x00 out DDRD, r16 ; Port D ist Eingang ldi r16, 0xFF out PORTB, r16 ; alle LEDs aus ende: loop: sbic PIND, 0 ; nächsten Befehl überspringen, ; (Taste 0 gedrückt) rjmp loop ; Sprung zu "loop:" -> Endlosschleife taste1: sbic PIND, 1 ; Abfrage Taste1 rjmp taste1 ; cbi PORTB, 3 ; setzen -> 4. LED an loop1: sbic PIND, 2 ; ausschalten, wenn taste2 gedrückt rjmp loop1 sbi PORTB,3 rjmp ende ; Endlosschleife
Danke euch allen!!!!! an Karl heinz Buchegger !!! Also soll ich das Programm immer wieder von oben anfangen lassen???
Uwe Leibiger wrote: > hey habs hinbekommen :) Teste das ganze noch mal gründlich. Dein Programm macht was anderes: Zuerst muss Taste1 gedrückt werden. Die kannst du dann auch wieder loslassen Danach muss Taste2 gedrückt werden. Dadurch schaltet sich die LED ein (und Taste2 kann losgelassen werden) Um die LED wieder auszuschalten muss dann Taste 3 gedrückt werden. Das ist aber was anderes als: Eine LED soll dann und nur dann leuchten, wenn beide Tasten zugleich gedrückt sind. zb. Grundzustand Taste2 drücken -> nichts passiert, LED aus Taste2 gedrückt halten Taste1 drücken und gedrückt halten -> LED leuchtet auf Taste2 loslassen -> LED verlischt Taste2 drücken -> LED leuchtet Taste 1 loslassen -> LED verlischt Taste 2 loslassen -> nichts passiert, LED aus Grundzustand Das versteht man unter: Eine LED leuchtet nur dann, wenn beide Tasten gedrückt sind. Egal in welcher Reihenfolge die Tasten gedrückt oder losgelassen werden, in dem Moment in dem beide gedrückt sind, soll die LED leuchten und ansonsten aus sein.
Stimmt hast recht, zu früh gefreut genau so wie du sagst solls sein!!!!! Danke sehr!!!
hab jetzt bei beiden Abfragen die Schleife ende ausgewählt und den Prozess einstiegspunkt für die Schleife vor "Alle Leds aus " gesetzt und jetzt gehts!!!! ich bedanke mich nochmal bei euch allen und speziel bei dir Karl heinz Buchegger !!!
Hi!!!!!!!!!!!!! Ich würde mich freuen, wenn du deine Tastatur reparierst!!!!?!?!?!?! -->Das nervt "ultra" Danke und MfG und3rt4ker
Hatte mir das ganze nochmal 2h durch den Kopf gehen lassen und festgestellt das ich noch SPS versaut bin!! War falsch an die theorie schon rangegangen!!! Gedanken: Hatte gedacht ich muss den Eingang gleich mit nem Ausgang verknüpfen!!! (wie bei SPS-Programmierung) Danke nochmal!
die ist nich kaputt habe nur 7 Finger an jeder Hand und da es ja nur ein zehn-finger-system gibt hab ich da schon probleme!!! Is ja gut ich lass es sein!
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.