- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Anfängerfrage, Ein und Ausgänge etc...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2005
    Beiträge
    25

    Anfängerfrage, Ein und Ausgänge etc...

    Anzeige

    Praxistest und DIY Projekte
    Erstmal wollt ich sagen, echt int. Board hier... lese nun auch schon eine Weile, aber jetzt muss ich mal was fragen. Prinzipiell hab ich schon Assembler programmiert, aber das ist so lange her, das ich irgendwie grad mal einen Denkanstoß brauche...

    Ich wollte erst mal ganz einfach anfangen und habe einen ATMEGA16, daran zwei LED's und 3 Taster. Die Taster sind an PD2, PD3 & PD4 angeschloßen, die LED's an PD5 & PD6. Die LED's zum Leuchte zu bringen ist nicht das Problem, jedoch hatte ich vor einfach erst mal per Taster die LED leuchten zu lassen.
    Daher setz ich als erstes alle Pins des Port auf "input" vergl. mit dem Wert für den Schalter und entscheide was zu tun ist, entweder ich lass das in einer Schleife laufen bis irgendwann der Taster gedrückt ist und springe dann in den Teil der die LED "anschaltet". Da setze ich alle Pins auf Ausgang und setze den, an dem die LED hängt auf "High". Sollte ja eigentlich gehen... dann lass ich die Sequenz als Schleife laufen so das die LED auf alle Ewigkeit anbleiben würde. Könnte nat. auch wieder abfragen ob der Taster noch gedrückt ist, wollt es aber erst mal ne übertreiben.
    Hab ich irgendwo nen Denkfehler, sollte ich viel. nur die Pins auf Ein- bzw. Ausgang schalten die entsprechend genutzt werden.
    Vermutl. ist es nur ein kleiner Denkfehler und wenn die Antwort hier steht, hauts mich untern Tisch, wegen meiner Dummheit...
    Mein Programmcode
    Code:
    ...
    WAIT: 
        ldi Temp, 0x00
        out DDRD, Temp
        in R1, PORTD
        ldi Temp, 0x10
        cp R1, Temp
        breq AN
        brne WAIT
    
    AN:
        ldi Temp, 0xFF
        out DDRD, Temp
        ldi Temp, 0x40
        out PORTD, Temp
        rjmp AN

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Eingänge fragt man ab über das PIND Register, über PORTD liest du nur zurück, was du selbst nach PORTD geschrieben hast.

    Wenn du alle Ports auf OUT stellst, dann auch die, an denen die Taster hängen! *AUTSCH*.
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2005
    Beiträge
    25
    Irgendsowas musste es ja sein...
    Werd ich dann entsprechend umsetzen, heute abend... hab zu Hause leider kein Inet und in der Firma kein Programmierboard...

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2005
    Beiträge
    25
    Nun habe ich die Ports zum Ausgeben auf "Out" gestellt und die an denen die Taster sind auf "In". Frage dann das PIND Register ab, "schau nach ob der Taster gedrückt ist und es passiert trotzdem nichts,
    wbei im AVR Studio funkt. es. Ich versteh die Welt nicht mehr.

    Code:
    ... 
    WAIT: 
        ldi Temp, 0b00010000
        out DDRD, Temp 
        in R1, PIND
        
        cp R1, Temp 
        breq AN 
        brne WAIT
    Die Funktionen für die Ausgabe einzeln funkt. Mein Fehler liegt also immer noch bei der Abfrage der Taster.

    Vielleicht hat noch jemand ne Idee... bzw. nen Hinweis

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen