Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Pullup / Pulldown Kategorie: Programmierung C (von Montelucon - 10.06.2009 13:14)
Als Antwort auf Re: Pullup / Pulldown von Endress - 10.06.2009 10:14

Hallo Endress,

also ganz grundsätzlich kannst Du auch den internen PullUp aktivieren.
Bei manchen Anwendungen ist das jedoch nicht so gut, z.B. bei einem Inkrementalgeber.
Da solltest Du einen externen PullUp verwenden und den internen abschalten.

So jetzt aber zu deinem Fehler.
Die Anweisung "Port_DataDir" setzt den GESAMT Port auf Ein- oder Ausgang.
Hier kann Du nicht den PortPin angeben! (Das machst Du).

Die richtige Anweisung (in deinem Fall) wäre "Port_DataDirBit".
Hier wird nur EIN PortPin angesprochen.

Ein Beispiel mit internen PullUp, bei dem EIN Portpin auf Eingang gesetzt wird.
Code nicht geprüft, da ich normalerweise in Basic programmiere.

void main(void)
{
   
   Port_DataDirBit(16,0);   // PortPin 16 (C.0) auf Eingang
   Port_WriteBit(16,1);      // PullUp C.0 an

   int test;                       // Variable zum cachen der Werte

   while(true)
   {
         test = Port_ReadBit(PortC0);   // Port einlesen
         
         Msg_WriteInt(test);                 // Wert im Debugger im IDE Fenster ausgeben
         Msg_WriteChar(13);                // Zeilenumbruch
   }

}


GruÃ?

Monte

> > Hallo,
> >
> > ich versuche Port C 0 mittels eines Relais auszuwerten.
> > Nun habe ich schon etwas über die Pullup/Down Widerstände gelesen, aber das bringt mich nicht wirklich
> > weiter. Nur wenn ich den Port über einen 10K Widerstand auf GND ziehe, steht das Ding auf Null, floatet
> > aber sonst immer vor sich hin, auch wenn ich 5 Volt anlege.
> >
> > Was mach ich falsch ?
> >
> > Source:
> >
> >
> > #define PortC0 16
> > #define PortA0 0
> >
> > char zeile1[8];
> >
> > void main(void)
> > {
> >     LCD_Init();
> >     LCD_ClearLCD();
> >
> >     Port_DataDir(PortC0,0);
> >     ADC_Set(ADC_VREF_VCC,0);
> >
> >     Port_WriteBit(16,1);
> >
> >     while(true)
> >     {
> >         if(Port_ReadBit(PortC0)==1)
> >         {
> >             zeile1="1";
> >         }
> >         if(Port_ReadBit(PortC0)==0)
> >         {
> >             zeile1="0";
> >         }
> >         LCD_Ausgabe();
> >     }
> > }
> >
> > void LCD_Ausgabe(void)
> > {
> >     LCD_CursorPos(0x00);
> >     LCD_WriteText(zeile1);
> > }
> >
> >
> > Danke und Gruss, Endress
>
> Zusatzfrage: Ich hole die 5 V über VREF vom Port A0 ist das am Ende ein Problem ?
> Oder gibt es grundsätzlich einen Pin der die 5 Volt liefert auf dem Board ?


    Antwort schreiben


Antworten:

Re: Pullup / Pulldown (von Endress - 10.06.2009 13:27)
    Re: Pullup / Pulldown (von GEMINI1606 - 10.06.2009 13:35)
        Re: Pullup / Pulldown (von Endress - 10.06.2009 15:05)
            Re: Pullup / Pulldown (von Montelucon - 11.06.2009 2:25)
                Re: Pullup / Pulldown (von Endress - 15.06.2009 10:12)
                    Re: Pullup / Pulldown (von Montelucon - 15.06.2009 23:44)