Siro
15.03.2011, 14:21
Hallo,
ich habe eben folgendes beim LPC1768 festgestellt:
Nach einem Reset sind normalerweise die IO Pins auf Input geschaltet, zudem ist laut Datenblatt auch ein interner Pullup aktiviert. Wenn ich mir die Pins ansehe, ohne daß ich überhaupt eine Software gestartet habe, ich halte den ResetPin auf LOW, messe ich 2,3 Volt. Das scheint auf fast allen Portpins so zu sein. Meine Versorgung ist 3,3 Volt.
Dann habe ich mittels Software die Pins konfiguriert. Input, Normal IO kein Open Drain und den internen Pullup eingeschaltet. Auch wieder 2,3 Volt zu messen. Nach meinen Berechnungen, muß da in der CPU ein zusätzlicher interner Pulldown von ca. 130 Kilo sein, sonst würde ich nicht auf solche Werte kommen, oder die Pullups hängen irgendwie intern an 2,3 Volt. Kann mir viellicht jemand etwas dazu sagen ?
Laut Datenblatt gibt es für die IO-Leitungen separate Versorgungspins, die sind bei mir alle an 3,3 Volt. ...Ich hoffe mal, mein Innenwiderstand des Messgerätes ist es auch nicht....:-)
Fluke 87, auch das zweite Instrument zeigt identische Werte. Mit einem zusätzlichen 1M Widerstand nach 3,3Volt bekomme ich den Portin auf ca. 3,0 Volt hoch gezogen. Da muss irgendwo intern noch Strom wegfließen.
Oder messe ich tatsächlich etwas verkehrt ? Oder ist der interne Pullup tatsächlich > 4 MOhm, dann wäre es tatsächlich ein Messfehler.
Hier der Code:
int main(void)
{
LPC_PINSEL3.bits.P1_29 = 0; /* GPIO Mode RESET-STATE = 00 */
/* 00 = GPIO-Port */
/* 01 = MCOB2 */
/* 10 = PCAP.1.1 */
/* 11 = MAT0.1 */
LPC_PINMODE3.bits.P1_29 = 0; /* pin mode select RESET-STATE = 00 */
/* 00 = Pin has an on-chip pull-up resistor enabled. */
/* 01 = Repeater mode (see text below). */
/* 10 = Pin has neither pull-up nor pull-down resistor enabled. */
/* 11 = Pin has an on-chip pull-down resistor enabled. */
LPC_PINMODE_OD1.bits.P1_29 = 0; /* open drain mode RESET = 0 */
/* 0 = Pin is in the normal (not open drain) mode. */
/* 1 = Pin is in the open drain mode. */
LPC_FIO1DIR.bits.P1_29 = 0; /* direction RESET-STATE = 0 */
/* 0 = input */
/* 1 = output */
/* normaly the pin must set to High = VCC = 3,3 Volt */
/* because of input-mode with internal pull up in GPIO-mode */
/* the measured pin value is 2,3 Volt */
/* i think there must be an additional internal pulldown in the range of 130K */
/* i have short circuit the pin to ground an a current flows from 58 mikro Ampere */
/* this is identical to the the datashett "internal pullup current" */
/* if i measure with a 20MOhm input impeadance Voltmeter to ground, i see 2,3 Volt */
/* this is on all GPIO-Pins. */
/* to ensure, there is no software problem, i holds the Resetpin of the processor */
/* at low. All GPIOs have 2,3 Volt. */
Danke Euch,
Bei einem zusätzlichen, externen Pulldown von 1K, messe ich 58mV, bei 10K 580mV.bei 22K 1,26V
Also hat der interne Pullup, irgendetwas zwischen 35 und 60 K, entspricht auch dem Datenblatt mit I-Pullup-Current von typisch 50 mikro Ampere, gemessen hab ich 58 mikro Ampere wenn ich den Pin dirket nach Masse ziehe.
Siro
ich habe eben folgendes beim LPC1768 festgestellt:
Nach einem Reset sind normalerweise die IO Pins auf Input geschaltet, zudem ist laut Datenblatt auch ein interner Pullup aktiviert. Wenn ich mir die Pins ansehe, ohne daß ich überhaupt eine Software gestartet habe, ich halte den ResetPin auf LOW, messe ich 2,3 Volt. Das scheint auf fast allen Portpins so zu sein. Meine Versorgung ist 3,3 Volt.
Dann habe ich mittels Software die Pins konfiguriert. Input, Normal IO kein Open Drain und den internen Pullup eingeschaltet. Auch wieder 2,3 Volt zu messen. Nach meinen Berechnungen, muß da in der CPU ein zusätzlicher interner Pulldown von ca. 130 Kilo sein, sonst würde ich nicht auf solche Werte kommen, oder die Pullups hängen irgendwie intern an 2,3 Volt. Kann mir viellicht jemand etwas dazu sagen ?
Laut Datenblatt gibt es für die IO-Leitungen separate Versorgungspins, die sind bei mir alle an 3,3 Volt. ...Ich hoffe mal, mein Innenwiderstand des Messgerätes ist es auch nicht....:-)
Fluke 87, auch das zweite Instrument zeigt identische Werte. Mit einem zusätzlichen 1M Widerstand nach 3,3Volt bekomme ich den Portin auf ca. 3,0 Volt hoch gezogen. Da muss irgendwo intern noch Strom wegfließen.
Oder messe ich tatsächlich etwas verkehrt ? Oder ist der interne Pullup tatsächlich > 4 MOhm, dann wäre es tatsächlich ein Messfehler.
Hier der Code:
int main(void)
{
LPC_PINSEL3.bits.P1_29 = 0; /* GPIO Mode RESET-STATE = 00 */
/* 00 = GPIO-Port */
/* 01 = MCOB2 */
/* 10 = PCAP.1.1 */
/* 11 = MAT0.1 */
LPC_PINMODE3.bits.P1_29 = 0; /* pin mode select RESET-STATE = 00 */
/* 00 = Pin has an on-chip pull-up resistor enabled. */
/* 01 = Repeater mode (see text below). */
/* 10 = Pin has neither pull-up nor pull-down resistor enabled. */
/* 11 = Pin has an on-chip pull-down resistor enabled. */
LPC_PINMODE_OD1.bits.P1_29 = 0; /* open drain mode RESET = 0 */
/* 0 = Pin is in the normal (not open drain) mode. */
/* 1 = Pin is in the open drain mode. */
LPC_FIO1DIR.bits.P1_29 = 0; /* direction RESET-STATE = 0 */
/* 0 = input */
/* 1 = output */
/* normaly the pin must set to High = VCC = 3,3 Volt */
/* because of input-mode with internal pull up in GPIO-mode */
/* the measured pin value is 2,3 Volt */
/* i think there must be an additional internal pulldown in the range of 130K */
/* i have short circuit the pin to ground an a current flows from 58 mikro Ampere */
/* this is identical to the the datashett "internal pullup current" */
/* if i measure with a 20MOhm input impeadance Voltmeter to ground, i see 2,3 Volt */
/* this is on all GPIO-Pins. */
/* to ensure, there is no software problem, i holds the Resetpin of the processor */
/* at low. All GPIOs have 2,3 Volt. */
Danke Euch,
Bei einem zusätzlichen, externen Pulldown von 1K, messe ich 58mV, bei 10K 580mV.bei 22K 1,26V
Also hat der interne Pullup, irgendetwas zwischen 35 und 60 K, entspricht auch dem Datenblatt mit I-Pullup-Current von typisch 50 mikro Ampere, gemessen hab ich 58 mikro Ampere wenn ich den Pin dirket nach Masse ziehe.
Siro