-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Ports einlesen, aber wie ??

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106

    Ports einlesen, aber wie ??

    Hi ich möchte jetzt nach den ersten tests mit meinem Mega8 nun mal Servos für den Antrieb drann schrauben, mein Problem ist jetzt das wenn ich denn an einen Transistor schliesse das der dann sau Lahm ist. Was ich dann noch als Hauptproblem habe ist wie mach ich das, dass wenn ich Portd als Input deklariere und dann an Portd.1 5V anlege das ich das abfragen kann vielleicht irgendwie:

    Code:
    crystal 4000000
    dim i as integer 
    
    config portd as input 
    config portb as output
    
    do
          portb.1 = 1
          if portd.1 == 1
            Portb.1 = 0    
    loop
    Kann das so Funktionieren ??
    würd mich über nen Codeschnipsel freuen

    mfg Maik

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Config portd = input
    Config portb = output
    muss es heißen.
    Außerdem bei einzlenen eingängen Pin und nicht port, und die schleife...:
    if pind.1 = 1 then
    Portb.1 = 0
    end if

    und
    $crystal= 4000000
    du solltest aber noch die Pullups aktivieren:
    portd = &HFF

    MFG Moritz

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106
    Aber wenn ich da die PullUps aktiviere dann lieg doch sowieso an den pins 1 an oder irre ich mich da ?? dann müsste die if anweisung doch so heissen oder? if pind.1 = 0 then
    Portb.1 = 0
    end if

    und dann reicht es aus wenn ich PD1 auf gnd ziehe ?? also einfach überbrücke ?? sry wegen den anfängerfragen

    mfg Maik

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Ja, genau!
    Ne, im Ernst du hast recht, wenn du auf ne 1 wartest, musst du die Pulldowns aktivieren, also:
    portd = 0
    Hab ich wohl übersehen

    MFG Moritz

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106
    Hi leider funzt der Input bei mir immer noch nicht ich weiss langsam echt nicht mehr was ich machen soll

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Portb = Output
    Config Portd = Input
    Dim I As Integer
    Enable Interrupts
    
    Portd = 0
    
    
    Do
       Portb.1 = 1
       I = Portd.7
       If I = 1 Then
         Portb.1 = 0
       End If
    
    Loop
    aber wenn ich jetzt Portd.7 auf Vcc Lege passiert nüx und wenn ich mich nicht teusche ist Pord.7 auf der linken seite der 2. von unten oder nicht ? ?


    Mfg Maik

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    01.01.2004
    Beiträge
    96
    I = Pind.7

    zum Einlesen muss Pin verwendet werden, wenn Du Port verwendest bekommst Du als Antwort ob der eingebaute PullUp-Widerstand aktiv oder inaktiv ist bzw. wenn der Port als Ausgang definiert wurde, welchen Wert Du ihm als letztes zugewiesen hast.
    Typischer Fehler

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106
    Super danke Jetzt gehts mit diesem Code

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Portb = Output
    Config Portd = Input
    Dim I As Integer
    Enable Interrupts
    
    Portd = 0
    
    
    Do
    
       I = Pind.7
       If I = 1 Then
         Portb.1 = 0
         Else
          Portb.1 = 1
       End If
    
    Loop
    Leider dauert es jetzt bestimmt 1-3 sekunden wenn ich den port nicht mehr auf Vcc ziehe bis Portb.1 wieder auf 1 gesetzt wird gibt es da nen trick damit das schneller geht ??

    Aber schon mal vielen danke für eure Hilfe

    mfg Maik[/code]

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Hängt da irgendwie nen Kondensator dazwischen/neben? Denn normalerweise sollte es schneller gehen.

    Eigentlich müsste auch dieser Code gehen:

    Code:
    do
    Portb.1 = not Pind.7 
    loop
    Halt ohne if und Else.

    Der Fehler den ich oben genacht habe ist klar, wenn es einmal gessetzt ist, wird es nicht zurückgesetzt, da felhte halt die Else-Anweisung .

    MFG Moritz

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106
    ich habe nur eines Transistor in der Ganzen schaltung und zwar 100nF zwischen Vcc und Gnd kann das vllt an der LED liegen die ich benutze ??

    Mfg Maik

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    30
    Beiträge
    106
    So hab jezt pind.7 mit einem 100K ohm Pulldown wiederstand versehen jeztt geht die LED sofort wieder an wenn ich die brücke weg nehme leider geht sie auch wieder an wenn die Brücke drann bleibt also irgend was ist da noch nicht richtig habt ihr ne idee ? ?

    Mfg Maik

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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