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.
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
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
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...
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!
Arghl... stimmt... das falsche Ding ersetzt.
Dennoch bei Inputs aber Pinx.y.
I : Input / Pinx.y
O: Output / Portx.y
#ifndef MfG
#define MfG
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
Hallo Jaecko,Zitat von 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.
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.Zitat von Sauerbruch
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
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.
Lesezeichen