Guten Morgen,
ich hab mir ein XC888 Starterkid Board von Infineon zugelegt.
An diesem Board habe ich an Port0 (Pin0) einen Temperatursensor vom Typ
DS1820 angeschlossen. Die Datenleitung habe ich mit einem 4,7KOhm
Widerstand an Vcc(+5V) angeschlossen.
1 | //----------------------------------------
|
2 | // Reset DS1820
|
3 | //----------------------------------------
|
4 | char ResetDS1820(void)
|
5 | {
|
6 | char a;
|
7 | P0_DIR=0xFF;
|
8 | P0_0=0;
|
9 | for(i=0;i<1000;i++) // wait
|
10 | P0_0=1;
|
11 | P0_DIR=0xFE
|
12 | for(i=0;i<1000;i++) // wait
|
13 | presence = P0_0; // get presence signal
|
14 | for(i=0;i<1000;i++) // wait
|
15 | a=presence;
|
16 | P0_DIR=0xFF;
|
17 | return a; // presence signal returned
|
18 | } // 0=presence, 1 = no part
|
Wenn ich die Funktion im Hauptprogramm ausführe erhalte ich immer als
Rückgabewert die 1.
Vielleicht hab ich noch was bei der Einstellung des Port0 was falsch
gemacht. Den Port0 habe ich in den Zustand Tristate gesetzt.
Hat jemand noch einen Vorschlag.