Forum: Mikrocontroller und Digitale Elektronik Bit banging open drain


von Sebastian W. (sebastian_w29)


Lesenswert?

Liebe Leute,

ich betreibe mit einem Atmega Bit Banging auf vier Open Drain Ausgängen 
und beobachte eine seltsame Kapazität.

Hintergrund: Ich möchte ein 5110 LCD mit einem 5V-Arduino betreiben. Das 
Datenblatt des 5110 LCD (oder vielmehr des PCD8544-Controllers, 
http://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf) sieht 
eine maximale Versorgungs- und IO-Spannung von 3.3V vor. Der Arduino hat 
einen 3.3V-Ausgang. Für die IO-Pins (CLK, DIN, D/C, RST) möchte ich 
einen Level-Shifter vermeiden. Meine Idee war also, die IO-Pins über 
einen Pullup zu den 3.3V zu ziehen, und auf dem Atmega über DDR zwischen 
Input-Hochohmig und Output-Low hin-und-herzuschalten.

Das funktioniert mit dem LCD-Display aber nur bei einem Pullup von 
4.7kΩ. Schon ein 10kΩ-Pullup verschmiert die 250kHz-CLK-Signale bis zur 
Unkenntlichkeit.

Was ich beobachte ist folgendes: Schalte ich auf Output-Low, so fällt 
die Spannung sehr schnell auf 0V ab. Schalte ich aber auf 
Input-Hochohmig um, so braucht die Spannung bei 4.7kΩ ganze 2μs um auf 
die 3.3V anzusteigen! Dasselbe passiert wenn das LCD gar nicht 
angeschlossen ist, und auch bei Pullup zu 5V!

Wie kommt das? Wo ist diese Kapazität von so etwa 100pf versteckt?

LG, Sebastian

von c-hater (Gast)


Lesenswert?

Sebastian W. schrieb:

> Wie kommt das? Wo ist diese Kapazität von so etwa 100pf versteckt?

100p ist nicht wirklich viel, die kommen schnell mal allein durch 
Leiterzüge zustande. Und die Eingangskapazität der angeschlossenen 
Schaltung gibt's ja auch noch.

von Anja (Gast)


Lesenswert?

Sebastian W. schrieb:
> Wie kommt das? Wo ist diese Kapazität von so etwa 100pf versteckt?

1:1 Tastkopf verwendet?

c-hater schrieb:
> 100p ist nicht wirklich viel, die kommen schnell mal allein durch
> Leiterzüge zustande.
bei 33-66pf/m Leitung für "normale" Wellenwiderstände brauchts da schon 
so 1-2 meter.

Gruß Anja

von besupreme (Gast)


Lesenswert?

Gaanz dumme Querfrage - Wie lange braucht denn der Pin allein, um von 
Aktiv auf Passiv zu schalten? Das hat ja nichts mit einer von außen 
messbaren Kapazität zu tun.

von Sebastian W. (sebastian_w29)


Angehängte Dateien:

Lesenswert?

Anja schrieb:
> 1:1 Tastkopf verwendet?

Ja. Kann das bei 250kHz schon so viel ausmachen?

besupreme schrieb:
> Gaanz dumme Querfrage - Wie lange braucht denn der Pin allein, um
> von Aktiv auf Passiv zu schalten? Das hat ja nichts mit einer von außen
> messbaren Kapazität zu tun.

Es scheint, als würde der Pin nicht sofort hochohmig, sondern würde erst 
noch ein wenig Strom aufnehmen um eine innere Kapazität zu laden.

Ich habe mal einen minimalen Aufbau versucht und Pin PB1 eines 
Atmega328P bei 8MHz mit 2μs Output-Low 2μs Input-Hochohmig gepulst und 
mit 10kΩ zu VCC 5V gezogen:
1
#include <avr/io.h>
2
3
int main(void) {  
4
    while(1) {
5
        DDRB |= 1<<DDB1; 
6
        __asm__("NOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP");
7
        __asm__("NOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP");
8
        DDRB &= ~(1<<DDB1);
9
        __asm__("NOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP");
10
        __asm__("NOP\n\tNOP\n\tNOP\n\tNOP\n\tNOP");
11
    }
12
}

Das Oszilloskop ist das DS1052E, laut Datenblatt "Input Impedance 
1MΩ±2%, the input capacity is 18pF±3pF". Der Tastkopf steht jetzt auf 
10:1 und ist neu kompensiert.

Im Anhang ein Bild des Versuchsaufbau und die Wellenform. Kein schönes 
Rechteck, wirklich nicht. Nach meiner Schätzung werden 2.5V nach 1.9μs 
erreicht, die Zeitkonstante ist also 2.75μs und bei 10kΩ damit die 
Kapazität sogar 275pF!

Was geht hier vor ???

LG, Sebastian

von Daniel V. (danvet)


Lesenswert?

Naja, die Displayeingänge wollen sicher auch ein bischen Strom sehen, 
sprich sind Kapazitiv. Bei 3,3V und 4k7 fliessen maximal 0,7mA. Damit 
machst du keine grossen Sprünge.

von Peter D. (peda)


Lesenswert?

Sebastian W. schrieb:
> mit 10kΩ zu VCC 5V gezogen:

Also für mich sieht der 3. Ring gelb aus, d.h. 100k bzw. 27pF.

von Sebastian W. (sebastian_w29)


Lesenswert?

Peter Dannegger schrieb:
> Sebastian W. schrieb:
>> mit 10kΩ zu VCC 5V gezogen:
>
> Also für mich sieht der 3. Ring gelb aus, d.h. 100k bzw. 27pF.

Uh, oh. Tatsächlich. Mit 10kΩ werden 2.5V nach 180ns erreicht -> 28pF. 
Danke, und Asche auf mein Haupt.

LG, Sebastian

von Gerhard W. (gerhard86)


Lesenswert?

Sebastian W. schrieb:
> Ja. Kann das bei 250kHz schon so viel ausmachen?

Ja, weil die Anstiegszeit ja mit der Grundfrequenz nur indirekt zu tun 
hat. Am besten gleich angewöhnen für Digitalzeugs einen 1:10 Tastkopf zu 
verwenden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.