- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Taster abfragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    41
    Beiträge
    90

    Taster abfragen

    Hallo zusammen,

    ich versuche drei Taster (STK500) mit einem ATmega8@16MHz abzufragen!

    Ich bin grad wirklich am verzweifeln, ich habe das schon öffter gemacht, doch hier kann ich keinen Fehler finden! Trotzdem tut es nicht?!

    Kann mir jemand einen Tipp geben, was ich hier noch ändern könnte?

    Danke schon mal...

    Gruß der EagleStar

    Code:
    $regfile = "m8def.dat"
    $crystal = 16000000
    
    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
    Config Lcdbus = 4
    Config Lcd = 16 * 2
    Cursor Off Noblink
    
    Taminus Alias Portd.0
    Tamenu Alias Portd.1
    Taplus Alias Portd.2
    
    Config Taminus = Input
    Config Tamenu = Input
    Config Taplus = Input
    
    Taminus = 1
    Tamenu = 1
    Taplus = 1
    
    Dim Modi As Byte
    
    Modi = 0
    
    Cls
    Lcd "Starte"
    Lowerline
    Lcd "DDS V1.0"
    Wait 3
    Cls
    
    Do
    
    Debounce Taminus , 0 , Klein , Sub
    Debounce Tamenu , 0 , Modus , Sub
    Debounce Taplus , 0 , Gross , Sub
    
    Loop
    
    Klein:
          Cls
          Lcd "Taster -"
          Lowerline
          Lcd "aktiv"
    Return
    
    Modus:
          Cls
          Lcd "Taster M"
          Lowerline
          Lcd "aktiv"
    Return
    
    Gross:
          Cls
          Lcd "Taster +"
          Lowerline
          Lcd "aktiv"
    Return
    
    End

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Du musst beim Config für Inputs Pinx.y verwenden.
    So wie's im Code steht, wird Portx.y verwendet.

    Also statt "Config Taminus = Input" einfach "Config Taminus = Pind.0" verwenden.
    #ifndef MfG
    #define MfG

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    41
    Beiträge
    90
    Danke für die schnelle Antwort!

    Aber meintest du nicht eher:
    Statt config taminus = input
    so config portx.y = input?

    Ich habe jetzt die ganzen Alias mal entfernt.
    Funzt aber immer noch nicht...

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    15.11.2006
    Ort
    Bayern
    Alter
    41
    Beiträge
    90
    OK ich hab´s!
    Du hast mir grad einen guten Denkanstoß geliefert!

    im Debounce muss ich natürlich PIND und nicht PORTD verwenden!

    Danke nochmal jetzt läufts!

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Arghl... stimmt... das falsche Ding ersetzt.
    Dennoch bei Inputs aber Pinx.y.
    I : Input / Pinx.y
    O: Output / Portx.y
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Und um´s noch ein wenig einfacher zu machen: Beim Einschalten eines Mikrocontrollers sind die I/O-Ports ganz von alleine Eingänge (weil in den DDR-Registern beim Power-On-Reset &B00000000 steht). Um einen Anschluss als Eingang zu nutzen, braucht man also gar nix zu konfigurieren

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Jaecko
    Dennoch bei Inputs aber Pinx.y.
    I : Input / Pinx.y
    O: Output / Portx.y
    Hallo Jaecko,
    dies schreibst du immer wieder, es ist aber nicht richtig.
    Laut Bascom Hilfe sind nur die Versionen
    Config PinX.Y = state (state={Input,Output}) und
    Config PortX = state
    richtig.
    Config PortX.Y = state
    funktioniert sowohl für Input und Output ebenfalls.
    Config PINX = state
    geht garnicht und wird auch vom Compiler verworfen.

    Zitat Zitat von Sauerbruch
    Um einen Anschluss als Eingang zu nutzen, braucht man also gar nix zu konfigurieren
    Braucht man nicht, ist aber meines Erachtens schlechter Stil. Ich mag keine impliziten Vereinbarungen. besser ist es, seine Absicht deutlich hinzuschreiben, dass man sozusagen drauf gestoßen wird, wenn was falsch läuft.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Dann ist das anscheinend mittlerweile geändert worden; wieder was gelernt *g*

    Als ich Bascom noch verwendet hab, wars (leider) noch so. Weiss ich noch recht gut, dass ich mir da mal nen Wolf gesucht hab, warum ein Taster einfach nicht als gedrückt erkannt werden wollte. Problem war da noch genau das, dass PortX.y statt PinX.y beim Eingang verwendet wurde.

    Da ist mir die direkte Angabe in C schon lieber, wo ich halt das jeweilige Register anspreche: DDRx oder PORTx oder PINx; da ist dann klar, was gemeint ist. Aber das müsste ja in Bascom auch gehen.
    #ifndef MfG
    #define MfG

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Jaecko,
    mein Hinweis bezog sich nur auf den Config Befehl.
    Wenn du eine Taste einlesen willst, musst du natürlich das PinX Register abfragen. Da geht kein PortX.

Berechtigungen

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

Labornetzteil AliExpress