-
        

Ergebnis 1 bis 9 von 9

Thema: Sehr dringend - Programmablauf anders als gedacht?

  1. #1
    dasisch
    Gast

    Sehr dringend - Programmablauf anders als gedacht?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi Leutz,

    ich habe die Grundschaltung aus dem AVR-Tutorial im Wiki gebastelt und einen Quarz mit 8MHz verbaut. Danach wollte ich die LED an Pin22 an uns ausschalten - und zwar so, dass sie eine Sekunde an bleibt und danach 3 Sekunden aus ist. Also habe ich folgendes Programm geschrieben:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000
    
    Config Portc.0 = Output                                      
    
    Do
      Portc.0 = 0                                                 
      Waitms 1000
      Portc.0 = 1                                                 
      Waitms 3000
    Loop
    
    End
    Soweit so gut, denn eigentlich sollte das Ergebnis das oben beschriebene sein. Allerdings macht mein Controller etwas ganz anderes: Er schaltet die LED für 3 Sekunden an und danach für eine Sekunde aus. Erst wenn ich die 1000 ms durch 3000 ersetze und die 3000ms durch 1000, dann erreiche ich das richtige Ergebnis.

    Warum ist das so und was mache ich falsch? Wäre sehr sehr dankbar für eine schnelle Antwort, da ich meine Jahresarbeit für's Abi fertig schreiben muss und nun auf dieses unerklärliche Problem gestoßen bin.

    Vielen Dank im Voraus!
    Sven - Oliver

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Kommt wohl drauf an ob die LED bei
    Portc.0 = 0 oder bei
    Portc.0 = 1 leuchtet

    wie ist sie denn angeschlossen ?

    EDIT: die Wiki-schaltung hast du genau nachgebaut ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    dasisch
    Gast
    eigentlich so, wie in dem schaltplan (http://www.roboternetz.de/wissen/ind...ung_mitled.gif) - Die Kathode ist an den Widerstand angeschlossen, die Anode an VCC.

    Ich dachte, wenn ich Portc.0 = 0 schreibe, dass dort dann 0 V anliegen - folglich dürfte die LED doch dann nicht leuchten, oder?

  4. #4
    dasisch
    Gast
    kann es sein, dass das an der Potentialdifferenz liegt, sodass, wenn ich den Portc.0 = 0 schalte, die Potientialdifferenz 5V beträgt und die LED deshalb leuchtet?

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    In der Schaltung isses so, dass die LED leuchtet, wenn Portc.0 = 0
    Probier's einfach:
    Testprogramm
    Code:
    Config Portc.0 = Output                                      
      Portc.0 = 0                        ' leucht' sie nu oder nicht ?                          
    END
    Gegencheck
    Code:
    --
      Portc.0 = 1                        ' leucht' sie nu oder nicht ?                          
    END
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    dasisch
    Gast
    ja, gut, dass sie bei Portc.0 = 0 leuchtet, das habe ich ja schon festgestellt. Ich müsste nur wissen, warum das in der Schaltung so ist. Stimmt meine obige Vermutung oder liegt das an etwas anderem?

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ohne Umschweife: Deine Vermutung ist richtig
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    ja, gut, dass sie bei Portc.0 = 0 leuchtet, das habe ich ja schon festgestellt. Ich müsste nur wissen, warum das in der Schaltung so ist. Stimmt meine obige Vermutung oder liegt das an etwas anderem?
    Guck dir die Schaltung mal genau an: http://www.roboternetz.de/wissen/ind...ung_mitled.gif


    Die LED hängt zwischen 5V und Controllerpin. also geht sie an, wenn der Controller sie auf GND schaltet und das macht er wenn man den PIN auf 0 schaltet.

    Wenn du den Pin auf 1 schaltest liegt er auf "high"-Pegel. Das heisst die LED hängt zwischen 5V und 5V und dann fliesst kein Strom der sie zum leuchten motivieren könnte.

    Wenn du die LED (richtigherum) zwischen Controlerpin und GND hängst, leuchtet sie, sobald du den Pin auf 1 schaltest.
    Das wird aber meist nicht so gemacht, weil der Controlerpin "angeblich" mehr Strom gegen Masse schalten als selber liefern kann.

    "Angeblich" habe ich hier geschrieben, weil ich nicht sicher bin, ob das bei den aktuellen Controllern immer noch der Fall ist oder ob man es inzwischen nur noch aus Gewohnheit so macht.

  9. #9
    dasisch
    Gast
    alles klar - ich danke euch für eure Hilfe! Dann war meine Vermutung mit der Potentialdifferenz doch richtig und ich kann denen das jetzt auch plausibel erklären werde euch demnächst sicherlich noch mit weiteren fragen quälen - es gibt noch viel zu tun

    Viele Grüße,
    Sven

Berechtigungen

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