Re: Pullup / Pulldown Kategorie: Programmierung C (von GEMINI1606 - 10.06.2009 13:35) | ||
Als Antwort auf Re: Pullup / Pulldown von Endress - 10.06.2009 13:27 | ||
| ||
> > 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 ? > > Hallo Monte, > > vielen Dank für die Antwort, ich hab zu Testzwecken den gesamten PortC auf Input gesetzt. > > Ich habe es vorhin nochmal getestet und es funktioniert jetzt folgendermassen : > > Bei aktiviertem internen Pullup ist der Port High im Ruhezustand. > Zieh ich ihn auf GND geht er auf LOW. ( ich kann ihn doch direkt auf GND ziehen ? ) > Ist das so korrekt ? > > Externer Pullup sähe so aus : > > 10 K Widerstand vom Port direkt auf GND. > 5 V beim Schaltvorgang auch direkt auf den Port ? > > Gibt es auf dem Applicationboard PINs für GND ? Ich find in der gesamten Portbelegung irgendwie nichts. > > Danke und Gruss, Endress Hallo Endress, wenn du das App.Board so vor dich legst, das die USB-Buchse links ist, dann ist die oberste Reihe auf dem Lötfeld +5V und die unterste Reihe GND. Gru� GEMINI1606 | ||
Antwort schreiben Antworten: 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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum