Hallo RCO,
nein, DDRD = &B00000000 setzt alle Ports als Eingänge.DDRD = 11111111 würde doch alle PDs als Eingänge setzen, oder?
DDRD = &B00100000 setzt z.B. PortD.5 als Ausgang.
Gruß, Michael
Ich habe ein kleines I/O-Problem mit meinen AT90S2313. Ich habe auf dem AVR das unten stehende Programm, aber wie ich den PD5 auch verschalte, er liefert mir entweder keine Werte, oder die die ich durch Reset oder Set setze. Daher einige Fragen:
DDRD = 11111111 würde doch alle PDs als Eingänge setzen, oder?
Set/Reset damit können Pullups/downs eingestellt werde.
Was ist am Code Falsch?
MFG MoritzCode:' LCD-KRAM steht hier ddrd = 00111100 'portd.5 fällt noch unter eingänge Rein Alias Portd.5 Do Home If Rein = 1 Then Lcd "Ein" End If If Rein = 0 Then Lcd "Aus" End If Waitms 200 'kleine Pause, sonst erkennt man aufm LCd nix Loop
Hallo RCO,
nein, DDRD = &B00000000 setzt alle Ports als Eingänge.DDRD = 11111111 würde doch alle PDs als Eingänge setzen, oder?
DDRD = &B00100000 setzt z.B. PortD.5 als Ausgang.
Gruß, Michael
OK, das hab ich jetzt auch ruasgefunden, neues Script:
Ich hab jetzt mal das Set weggelassen, es tut sich nix!Code:Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portb.3 , Rs = Portb.4 ' Natürlich so wie es wirklich angeschlossen ist (4-Bit-Modus) Config Lcd = 16 * 2 Initlcd Display On Cursor Off Cls '0 = Eingang Ddrd = &B01000000 '&B D7.......D0 Rein Alias Portd.2 Do Home If Rein = 1 Then Lcd "Ein" End If If Rein = 0 Then Lcd "Aus" End If Waitms 200 Loop
MFG Moritz
Hallo RCO,
erstens muß es heißen:
Rein Alias Pind.2
und dann solltest du den Pullup einschalten:
Portd.2 = 1
und dann mit
Do
weiter.
Gruß, Michael
Ich verzweifel, nicht mal das klappt:
MFG MoritzCode:Ddrd = 00100000 Portd.5 = 0 Do Portd.5 = Portd.4 loop
Ich schliesse mich Michael an, es muss zuerst mal der Pullup eingeschaltet werden mit Portd.5=1 dann grundsätzlich bei Eingängen an einzelnen Ports mit "Pind.5" abfragen:
Config Portd = Output
Config Pind.5 = Input
if pind.5=0 then
LCD "Ein"
end if
Also Eingang immer mit "PINx.y"
Gruss Clemens
OK habs jetzt so gemacht:
Es muss irgendwas grundsetzliches sein, ich denke nicht, dass es sonst nie klappen würde, aber es muss och ausreichen, wenn ich den Pin über ein Kabel an +5V bzw. GND lege, oder?Code:Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portb.3 , Rs = Portb.4 Config Lcd = 16 * 2 Initlcd Display On Cursor Off Cls Config Portd = Output Config Pind.5 = Input Portd.5 = 1 '####### 'Loop '####### Do Home If Portd.5 = 1 Then Lcd "Ein" Else Lcd "Aus" End If Waitms 200 Loop End
MFG Moritz
Do
Home
If Pind.5 = 0 Then ' ganz wichtig PIN nicht PORT !!!
Lcd "Ein"
Else
Lcd "Aus"
End If
Waitms 200
Loop
EDIT: es muss ja Pind.5=0 heissen du schaltest ja gegen gnd
NNNNNNNNNNEEEEEEEEEEEIIIIIIIIIIIINNNNNNNNN
Danke [-o<If Pind.5 = 0 Then ' ganz wichtig PIN nicht PORT !!!
MFG Moritz
Lesezeichen