-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Ansprechen der Eingangports

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13

    Ansprechen der Eingangports

    Anzeige

    Hallo,

    habe mal eine Anfängerfrage:

    Ich habe mich zwar durch das Handbuch hoch und runter gelesen finde aber nichts passendes. Ich habe ein Mega32 Board Ver 1.22 und möchte die Eingangsports (wie sie auf dem Board an sich betitelt sind) ansprechen bzw. auslesen.
    Da es sich um Eingangsport handelt, muss ich sie mit PinX ansprechen wobei X für a,b,c,d steht. Soviel habe ich schon mitbekommen, aber ich weiß eben nicht ob es a,b,c oder d ist. Habe auch schon alle getestet (habe Port 1 und 2 der Eingangsports) eine 3V Spannung angelegt und weggenommen, aber kein Zustand hat sich geändert.

    Mein Program

    Code:
    Dim X1 as Byte
    .
    .
    .
    Dim X8 as Byte
    
    X1 = pina.0
    X2 = pina.1
    .
    .
    .
    x8 = pina.7
    
    Print X1; 
    Print X2;
    .
    .
    .
    Print X8
    Habe danach Pina durch bin Pinb,c und d ersetzten lassen und die Spannung immer wieder angelegt und weggenommen, aber es änderte sich nichts in der Ausgabe... Woran kann das liegen, bzw. was habe ich falsch gemacht?

    Gruß
    it03

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    30
    Beiträge
    373
    Hallo
    hast du die Eingänge deklariert (dim porta = input)
    normal musst du am Eingang nicht 3 sondern 5 Volt anlegen.
    Du hast doch einen Atmega 32 oder?
    3 Volt wird der wohl nicht erkennen.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    48
    Beiträge
    310
    Hallo it03,
    vermute mal du meinst das rnbfra 1.22 von robotikhardware.
    Da sind doch schon einige Beispiel auf der CD-ROM mit geliefert.
    Ein direktes Ansprechen ist da auch nicht möglich. Die Ein- und Ausgänge sind über I2C mit dem PCF verbunden.
    So müssen die Eingänge über eine I2C Routine abgefragt werden.
    --- Testprgramm 6 ---
    ### Silvio ###

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13
    Hallo zusammen!
    Richtig, ich habe das rnbfra 1.22 mit Atmega32.
    Mein Problem ist jetzt: ich will von einem externen Gerät (Avisaro WLAN-Modul) Signale empfangen. An den Ports des WLAN-Moduls liegen entweder 0,5V(aus) oder 3V(an) an (sogn. I/O Ports die ich per Web-interfaces setzen kann). Davon gibts es 8 Stück welche ich mit den Eingangsports auf dem Board verbinden möchte. Wenn ich allerdings dann das Testprogram laufen lasse, wird weiterhin der Wert 255 ausgegeben (was ja auch logisch ist, da kein Port mit GND verbunden ist).
    Meine Frage:
    Kann ich die Eingangsports irgendwie "umswitchen", so dass sie direkt auf die anliegende Voltzahl reagiert? D.h. ich lege an meinen I/O Port vom Modul eine 1 (3V) an und der entsprechende Port auf dem Board ist dadurch auch auf 1 gesetzt. Das müsste doch möglich sein, oder?

    Danke für die Hilfe

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von franzl
    Hallo
    hast du die Eingänge deklariert (dim porta = input)
    normal musst du am Eingang nicht 3 sondern 5 Volt anlegen.
    Du hast doch einen Atmega 32 oder?
    3 Volt wird der wohl nicht erkennen.
    Datenblatt Seite 287 ...

    Dort steht was dazu, was der Mega32 als L / H erkennt ...

    Grüße,

    da Hanni.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13
    Danke für die schnelle Antwort Hanni!
    Ich habe was vergessen: "dim porta = input" hatte ich probiert, Bascom hat vorgeschlagen "as" anstatt "=" zu verwenden. Aber wenn ich "Dim porta as input" eingebe sagt er, dass Input kein DATA TYPE ist und ich bekomme es nicht compiliert. Dann ist mir der Befehl Config eingefallen und ich habe " Config porta = Input" angegeben. Das hat er gefressen allerdings ohne Erfolg. Es liegt immernoch 5V auf den Eingängen...

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    In Bascom gibt es auch noch den feinen Unterschied:

    Ports Setzen
    Ausgänge kann man definieren was man will,
    wenn Du einen Pin aus Ausgang deklariert hast,
    kannst Du den mittels Pin setzen was Du willst, der wird nicht HI
    (z.B. Set PinB.3 )
    Du musst diesen mit Set portB.3 ansprechen
    oder PortB = %00000100.

    Abfragen muss man ihn mit Pin (x = PinB.3)


    Da hab ich mich auch schon dumm gesucht.

    Zusammenfasung:

    Verwende PIN zum einslesen und
    verwende PORT zum ausgeben.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von darwin.nuernberg
    In Bascom gibt es auch noch den feinen Unterschied:

    Ports Setzen
    Ausgänge kann man definieren was man will,
    wenn Du einen Pin aus Ausgang deklariert hast,
    kannst Du den mittels Pin setzen was Du willst, der wird nicht HI
    (z.B. Set PinB.3 )
    Du musst diesen mit Set portB.3 ansprechen
    oder PortB = %00000100.

    Abfragen muss man ihn mit Pin (x = PinB.3)


    Da hab ich mich auch schon dumm gesucht.

    Zusammenfasung:

    Verwende PIN zum einslesen und
    verwende PORT zum ausgeben.
    Hmm .. das steht aber auch im Datenblatt *grübel*

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    26.10.2005
    Ort
    BaWue
    Beiträge
    13
    mmh ja... ok Pin zum auslesen Port zum setzen. Soweit so gut aber es klappt nicht

    Egal welchen Wert ich PortA (PortA ist doch für die Eingangsports, oder?) geben, am Board liegen immer 5V
    Habe es auch mit DDRA = 0 versucht und die Werte habe ich auch schon in Binär (&B00000000) eingegeben. Hier mal mein Program:

    Code:
    '###################################################
    'Testprogramm 6
    'für
    'RoboterNetz Standard-Roboter Board RBNFRA 1.1
    '
    'Aufgabe:
    'Testet Eingangsport indem Wert über RS232
    'übermittelt wird (9600 Baud einstellen)
    '
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de
    '###################################################
    
    
    $regfile = "m32def.dat"
    
    Const Writeeingabeport_adr = &H7E                           'I2C Adr PCF 2
    Const Readeingabeport_adr = &H7F                            'I2C Adr PCF 2
    
    Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574
    
    
    Dim I As Byte
    
    $baud = 9600
    $crystal = 8000000                                          'Quarzfrequenz
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Set Porta = 0
    
    
    Portd.6 = 0                                                 'Schrittmotoren erst mal ausschalten
    I2cinit
    
    I = 0
    I2cdaten = 1
    Do
       I2cstart
       I2cwbyte Readeingabeport_adr                             'Lesebefehl an PCF schicken
       I2crbyte I2cdaten , Nack                                 'Datenbyte von PCF lesen
       I2cstop
       Waitms 50
       Print I ; " Eingangsport Wert" ; I2cdaten
       Print I ; " Pin1 " ; Pina.0
       Print I ; " Pin2 " ; Pina.1
       Print I ; " Pin3 " ; Pina.2
       Print I ; " Pin4 " ; Pina.3
       Incr I
    Loop
    
    
    
    
    End
    Aber das kann doch nciht so schwer sein... Irgenwie muss ich da nen dicken Denkfehler haben.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von it03
    mmh ja... ok Pin zum auslesen Port zum setzen. Soweit so gut aber es klappt nicht

    Egal welchen Wert ich PortA (PortA ist doch für die Eingangsports, oder?) geben, am Board liegen immer 5V
    Mögliche Denkfehler:
    1. Pullupwiderstände (egal ob intern oder extern) und "offener" PIN -> Messbar: 5V
    2. eine externe Beschaltung, die diesen Pin auf einen 5V Pegel zieht

    (Grundlagen Digitaltechnik ...)

    Mal so als Ansatz ... ob und inwiefern der Code stimmt oder nicht, kann ich nicht sagen ... Bascom liegt mir nicht so ...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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