-         

Ergebnis 1 bis 9 von 9

Thema: Probleme mit Inputs vom Mega16; ich kann sie nicht auslesen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56

    Probleme mit Inputs vom Mega16; ich kann sie nicht auslesen

    Anzeige

    Hi,
    ich habe ein komisches Problem mit dem Mega16. Ich möchte

    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
    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.
    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112

    Re: Probleme mit Inputs vom Mega16; ich kann sie nicht ausle

    Zitat Zitat von x8r
    Config Porta.4 = Input
    Enter Alias Porta.4

    If Enter = 0 Then
    Einlesen musst du die Anschlüsse mit Pinx.y, also schreib mal

    Enter Alias Pina.4

    Dann klappt's.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    bevor ich mir alles durchlese,
    Eingägen liest man mit PinA.4 ein, nicht mit PortA.4 !

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    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:
    Code:
    • 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.
    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 an
    input regardless of the setting of DDB4."

    Habt ihr eine Idee?

    Gruß
    Jan

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    Hat keiner eine Idee woran es liegen kann?

    Gruß
    Jan

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    Hi,
    hier nochmal der Code, mit dem es immernoch nicht funktioniert.
    Alle Tasten, bis auf "plus", werden korrekt eingelesen und auf dem lcd ausgegeben.
    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
    Danke für eure Hilfe!

    Gruß
    Jan

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    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

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    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

Berechtigungen

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