-         

Ergebnis 1 bis 8 von 8

Thema: Pin einlesen --> Led einschalten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.09.2007
    Beiträge
    5

    Pin einlesen --> Led einschalten

    Anzeige

    Hy zusammen,

    ich hab nen kleines großes Problem, und zwar:

    Ich will mit meinem Atmega8 einen Port einlesen (PB0) und je nach Art des Zustandes ne LED ein und ausschalten (wenn High --> LED an; wenn Low --> Led aus.

    Die LED ist mit dem Minus Pol direkt mit Masse verbunden, der Plus Pol mit PC0. Wenn ich nun eine Verbindung von VCC 5V mit PB0 verbinde soll die LED leuchten. Wenn keine Verbindung besteht soll die LED aus sein.

    Ich benutze Winavr und Pony Prog... Einzelne Pins ein und ausschalten funktioniert aber das mit dem Einlesen nicht, hier mal der Code:

    // Test

    #include <avr/io.h>

    int main (void)
    {

    DDRB &= ~( 1 << PB0 ); //PB0 Eingang
    PORTB |= ( 1 << PB0 ); //Pull up an
    DDRC |= ( 1 << PC0 ); //PC0 Ausgang

    while(1)
    {
    if (PINB & (1 << PB0)) //wenn PB0 High ist...
    {
    PORTC |= (1 << PC0); //PC0 High
    }

    // Eine Schleife ist eigentlich unnötig
    if (!(PINB & (1 << PB0))) //wenn PB0 Low ist...
    {
    PORTC &= ~(1 << PC0); //PC0 Low
    }
    }

    return 0;
    }


    Im Moment läuft es irgendwie andersherum wenn keine Verbindung besteht ist die LED an, wenn eine Verbindung besteht ist sie aus??? Wenn ich nur eine Schleife programmiere passiert garnix, die LED ist immer an oder aus (je nach Schleife) und das Anlegen vonn VCC oder GND an PB0 bewirkt garnix?!

    Ich hoffe Ihr könnt mir helfen.

    Vielen Dank im Voraus
    Gruß Finwe09

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    24
    Beiträge
    1.641
    ich wundere mich zwar etwas darüber, dass das ein µC erledigen muss...
    aber das schon so spät ist, könnte es vielleicht am Pullup liegen? Ich hab grad ne komplette Denksperre, aber das ist doch dann eigentlich ein Inverter...
    doer vertu ich mich da grad übel?
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Moin!
    Was das Einlesen angeht : sowas wie 'keine Verbindung' ist zu vermeiden, da der Pin dann einen undefinierten Zustand hat. Dafür hat man in den AVR's die schönen Pullup-Widerstände, die den Pin auf High-Pegel ziehen, wenn nichts dran ist. Also entweder die Abfrage umkehren, also den internen Pullup aktivieren .... oh, ich seh grad, du machst das ja, dann mußt du natürlich deinen Eingabepin nach GND schalten, sonst ist der ja entweder mit Vcc verbunden -> high, oder über den internen Pullup mit Vcc verbunden, auch High..... außerdem könnte man statt der zwei if-Abfragen eine if-else Konstruktion benutzen.
    Und außerdem Code Tags :
    Code:
    // Test 
    
    #include <avr/io.h> 
    
    int main (void) 
    { 
    
    DDRB &= ~( 1 << PB0 ); //PB0 Eingang 
    PORTB |= ( 1 << PB0 ); //Pull up an 
    DDRC |= ( 1 << PC0 ); //PC0 Ausgang 
    
    while(1) 
    { 
    if (PINB & (1 << PB0)) //wenn PB0 High ist... 
    { 
    PORTC |= (1 << PC0); //PC0 High 
    } 
    else //ansonsten....
    { 
    PORTC &= ~(1 << PC0); //PC0 Low 
    } 
    } 
    
    return 0; 
    }
    und, wie gesagt, den Eingang gegen GND schalten
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    24
    Beiträge
    1.641
    hatte ich jetzt recht oder nicht? Ich will auch was lernen *lach*
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    26.09.2007
    Beiträge
    5
    edit [...Ihr beide habt wohl Recht ]


    Vielen Dank Ihr zwei,

    das Problem hat sich erledigt...

    also ich weiss, dass man für sowas keinen µC braucht, es war ja nur mal ein Test ob ich das überhaupot hinbekomme...

    es hat natürlich an dem Schalten nach GND gehangen, weil ich die Pull Ups aktiviert hatte...(es war natürlich unsinn den PB0 nach VCC zu schalten)
    ...die heissen ja nicht um sont pull UP und nicht pull DOWN

    So noch was, wie bekomm ich so ein schönes Quellcode Fenster in meine Beiträge gezaubert?

    Vielen Dank nochmal
    Gruß Finwe0815

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Moin!
    Ganz einfach : entweder beim bearbeiten oben auf Code drücken, oder im Beitrag
    [ code ]
    [ /code ]
    schreiben (ohne Leerzeichen natürlich....)
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    24
    Beiträge
    1.641
    jo... da machst du so (code) und (/code)... natürlich ist es hilfreich, die runden Klammern durch eckige zu ersetzen.

    P.S.: Sagen wirs so - wenn du das gemacht hast, um zu gucken ob dus hinkriegst... und du hast es NICHT sofort hinbekommen... dann hast du dir genau genommen zu hohe Ziele gesetzt :P

    EDIT: menno... jetzt war der auch noch schneller...
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    41
    Beiträge
    685
    Har Har! .......................
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

Berechtigungen

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