...den Eingang musste über PIND.0 abfragen!
(Also Taster_plus Alias PIND.0)
Gruß & Co!
Hallo...
hab folgendes Problem...
will nen ganz normalen Taster an nen Atmega8 anschliessen, aber der will nicht so wie ich.
Der Taster verbindet den Port mit GND und ist mit 100R gepullupt..
der code ist folgendermassen:
Wenn ich den Taster drücke passiert rein gar nichts.. Beleuchtung bleibt immer auf 1 also an.Code:$regfile = "m8def.dat" $crystal = 8000000 Config Pinb.2 = Output Beleucht Alias Portb.2 Config Pind.0 = Input Taster_plus Alias Portd.0 Portd.0 = 1 Do If Taster_plus = 1 Then Beleucht = 1 Else Beleucht = 0 End If Loop
wo is der Fehler ??
meine projekte: robotik.dyyyh
...den Eingang musste über PIND.0 abfragen!
(Also Taster_plus Alias PIND.0)
Gruß & Co!
Danke...
den Fehler mach ich irgdnwie immer... wozu gibt es überhaupt die unterscheidung ??
meine projekte: robotik.dyyyh
100R als Pullup? ist das nicht ein bisschen wenig? da fliessen ja 50mA wenn der Taster gedrückt ist....
gruss Bluesmash
Meine Homepage:
www.bluesmash.roboterbastler.de
Ganz einfach: Weil PORTX.Y den PullUp-Widerstand aktiviert, wenn der Anschluss als Eingang konfiguriert ist. Von daher wäre der (in der Tat etwas rustikal gewählte) externe Widerstand überflüssig, weil Du das mit PORTD.0=1 schon erledigt hast.wozu gibt es überhaupt die unterscheidung ??
MfG,
Daniel
GEnau wie Sauerbruch sagt, gibt es im Falle von Inputs 2 Nutzungen der Register.
Wenn man auf Output stellt, gibt es nur an/aus, aber wenn man auf input stellt gibt es an/aus (von außen), und es gibt pullUp-an/aus, so dass Atmel das Port-Register in diesem Fall doppelt nutzt. Clever, wie ich finde.
Edit: Es heißt natürlich input...
@ wulf .. danke für die erklärung, dann versteh ich das jetzt auch mal, konnt mir das bis jetzt nie merken...
meine projekte: robotik.dyyyh
...wobei mit dem 2. "output" eigentlich "Input" gemeint sein dürfte. Das nur am Rande, um nicht neue Verwirrung zu stiften![]()
Danke, ich habs mal korrigiert.Zitat von Sauerbruch
ok, dann noch eine Frage.. wenn ich will dass man den Taster z.b. 5 sekunden Drücken muss um eine Funktion auszulösen, wie kann ich das dann machen?
geht das so:
oder wie würdet ihr das lösen.Code:$regfile = "m8def.dat" $crystal = 8000000 '-----Timer----- Config Timer0 = Timer , Prescale = 256 Enable Timer0 On Timer1 blablubb Enable Interrupts Timer0 = 0 do .... if taster = 1 then timer0 = 0 end if .... loop blablubb: if taster = 1 then ...'funktion ausführen end if return
@ thewulf.. du hast nen Pinguin als avatar und kennst dich mit Bascom aus...
Hast du das unter wine laufen ??
meine projekte: robotik.dyyyh
Lesezeichen