Einlesen musst du die Anschlüsse mit Pinx.y, also schreib malZitat von x8r
Enter Alias Pina.4
Dann klappt's.
Gruß
Rolf
Hi,
ich habe ein komisches Problem mit dem Mega16. Ich möchte
Die dre Eingänge, die von Pull-Up-Widerständen auf 5V hoch gezogen werden, sind mit Taster nach GND verbunden. Allerdings reagiert das Programm darauf nicht, es liest nur dauerhaft 0 ein.Code:$regfile = "m16def.dat" $crystal = 8000000 ... Config Porta.4 = Input ... Config Portb.4 = Input Config Portb.6 = Input ... Config Adc = Single , Prescaler = Auto , Reference = Avcc ... Enter Alias Porta.4 Plus Alias Portb.4 Minus Alias Portb.6 Do Cls If Enter = 0 Then Locate 1 , 1 Lcd "Enter" End If If Plus = 0 Then Locate 1 , 8 Lcd "plus" endif If Minus = 0 Then Locate 2 , 1 Lcd "minus" endif Waitms 100 Loop
Wenn ich die Spannung am Pin messe, ist diese auch Null, auch wenn die Taster nicht gedrückt sind. Daher gehe ich davon aus, dass irgendweswegen eine Null am Pin ausgegeben wird.
Kann es an den ConfigBits liegen? Wenn ja, an welchen?
Oder leigt es daran, dass ich den ADC des PortA verwende?
Schonmal Danke für eure Hilfe!
Gruß
Jan
Einlesen musst du die Anschlüsse mit Pinx.y, also schreib malZitat von x8r
Enter Alias Pina.4
Dann klappt's.
Gruß
Rolf
Hallo,
bevor ich mir alles durchlese,
Eingägen liest man mit PinA.4 ein, nicht mit PortA.4 !
Hi,
ihr habt mich schon ein riesen Stück weiter gebracht! Jetzt funktioniert es bei fast allen Inputs. Nur PinB.4 funktioniert noch nicht, hier wird dauerhaft eine 0 eingelesen. Laut Datenblatt kann dieser Pin auch als Slave Select Input(SS) verwendet werden.
Auszug aus dem Datenblatt:
Da ich den SPI nicht verwende, müsste ich ihn dann doch ganz normal als Input/Output benutzen können?! Oder muss der SPI vielleicht disabled weren? Aber selbst wenn der SPI irgendweswegen enabled ist, sollte PinB.4 als Input definiert sein, denn : "When the SPI is enabled as a Slave, this pin is configured as anCode:• SS – Port B, Bit 4 SS: Slave Select input. When the SPI is enabled as a Slave, this pin is configured as an input regardless of the setting of DDB4. As a Slave, the SPI is activated when this pin is driven low. When the SPI is enabled as a Master, the data direction of this pin is controlled by DDB4. When the pin is forced by the SPI to be an input, the pull-up can still be controlled by the PORTB4 bit.
input regardless of the setting of DDB4."
Habt ihr eine Idee?
Gruß
Jan
Hat keiner eine Idee woran es liegen kann?
Gruß
Jan
Wenn du SPI nicht ausdrücklich einschaltest, ist PinB.4 genauso normal wie alle anderen.
Schau mal mit dem Multimeter (am Atmega), ob das Pull-uppen auch funktioniert. Vielleicht ist ja irgendwo ein Kontaktfehler
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi,
hier nochmal der Code, mit dem es immernoch nicht funktioniert.
Alle Tasten, bis auf "plus", werden korrekt eingelesen und auf dem lcd ausgegeben.
Danke für eure Hilfe!Code:Config Porta.4 = Input Config Portb.4 = Input Config Portb.6 = Input Config Portd.4 = Input Config Portd.5 = Input Config Portb.7 = Input Enter Alias Pina.4 'panel Plus Alias Pinb.4 Minus Alias Pinb.6 Spritze1anschlag Alias Pind.5 'spritzen Spritze2anschlag Alias Pind.4 Dampffertig Alias Pinb.7 Do Cls If Enter = 0 Then Locate 1 , 1 Lcd "Enter" End If If Plus = 0 Then Locate 1 , 7 Lcd "plus" End If If Minus = 0 Then Locate 1 , 12 Lcd "minus" End If If Spritze1anschlag = 0 Then Locate 2 , 1 Lcd "dru1" End If If Spritze2anschlag = 0 Then Locate 2 , 6 Lcd "dru2" End If If Dampffertig = 0 Then Locate 2 , 11 Lcd "dampf" End If Waitms 100 Loop
Gruß
Jan
Hi Robert,
die Hardware habe ich mehrmals überprüft. Der Controller scheint, genauso wie auch vorher bei den anderen Pins, den PinB.4 auf GND zu ziehen. Ich habe immer eine Null anliegen, der Pull-up ist aber ganz sicher verbunden.
Irgendwesewegen scheint der Controller den Pin.4 als ausgang gesetzt zu haben und gibt eine null aus.
Gruß
Jan
So, habe endlich den "Fehler" gefunden, wobei mir überhaupt nicht klar ist, ob das nen fehler von mir oder nen Bug von Bascom ist.
Nachdem ich das DDRB beschrieben habe, geht es endlich:
"DDRb = &B00101011"
Danke für eure Hilfe!
Gruß
Jan
Lesezeichen