- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: Anfänger: Port lässt sich nicht auslesen?

  1. #1

    Anfänger: Port lässt sich nicht auslesen?

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich bin Anfänger in der uC-Programmierung (zumindest, was Mega8 betrifft) und möchte mit folgendem Programm den Pin 7 auslesen und diesen auf Pin 1 "ausgeben".

    (1) Leider messe ich eine Leerlaufspannung von 1.5 V, obwohl lt. Datenblatt mit internem Vorwiderstand 5 V an Pin 7 anliegen sollten. Was kann falsch sein?

    (2) Kann ich aus diesem Grund den Taster ("Schalten" = auf Masse ziehen) nicht detektieren?

    Hier das Programm:

    int main()
    {
    // LED-Port auf IN und OUT
    DDR_LED = 0x0F ; // Port 7 = Eingang, Port 1 = Ausgang //
    PORT_LED = 0xF0 ; // Pull-up Widerstand Port 7 = EIN //

    // Endlosschleife
    while (1)
    {
    if (PIN_LED & 0x80) // Taster nicht gedrückt --> Port 7 = High //
    {
    PORT_LED &= ~(0x02) ; // Port 1 = nicht gesetzt (LED off) //
    }
    else // Taster gedrückt --> Port 7 = Low (Gnd) //
    {
    PORT_LED |= 0x02; // Port 1 = gesetzt (LED on)
    }
    }
    // main braucht keine return-Anweisung, weil wir nie hier hin kommen
    }


    Vielen Dank für Antworten!

    Christian

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    47
    Beiträge
    685
    Hallo!
    'Blöde' Frage : an welchen Port hast Du denn Deine LED und Deinen Taster angeschlossen? Ich kenne DDR_LED, PORT_LED und PIN_LED nämlich nicht... Ansonsten sieht es aber richtig aus, da werden die unteren vier Bit als Ausgang geschaltet, die oberen als Eingang und dann die Pullups für die oberen vier Bits angeschaltet. Allerdings schaltest Du Deine LED über Bit2 vom Port, da 0x02 binär 00000010 ist. Ich hoffe, Du hast nicht tatsächlich Pin 1 und Pin 7 gemeint, das ist nämlich Vcc und Reset

    MfG Volker

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    hallo!

    du übst bestimmt auf einen Evoluation-Board, ist das etwa die von POLLIN?
    dann mußt du den Schaltplan genau angucken wie die pull up's gesetzt sind wenn der Taster nicht gedruckt ist,denn in solche Boards sind sie meistens auf low gesetzt.

  4. #4
    Hallo,

    vielen Dank für die schnellen Antworten! Jetzt noch einige Infos:

    Die Ports habe ich folgendermaßen definiert:

    #define PORT_LED PORTB
    #define DDR_LED DDRB
    #define PIN_LED PINB

    Das sind die normalen digitalen 8 Pins (1 Port). Auch fange ich bei 0 an zu zählen, daher 0x02 als Pin 1 (entspricht nicht dem Standard?) und 0x80 als Pin 7.

    Das Entwicklungsboard ist von Embedit und hat keinen speziellen Namen. Die Ports sind direkt aus dem uC geführt, sind also nicht auf low gesetzt. Auch sind Reset und Vcc andere Anschlüsse.

    Über weitere Vorschläge würde ich mich sehr freuen!

    Viele Grüße

    Christian

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad