Forum: Mikrocontroller und Digitale Elektronik USB + PIC + LCD mit 2xKS0108 = Chaos?


von Florian D. (Gast)


Lesenswert?

Ich stelle mein Problem einfach mal ein wenig klarer da:

Ich benutze einen PIC18F2550, der direkt über USB gespeist wird. An
PORTA hängen Reset, CS1, CS2, Enable, R/W und D/I des Displays. An
PORTB hängt der Datenbus des Displays. An RC0 hängt über einen FET die
Hintergrundbeleuchtung des LCD.

Das ganze hängt an einem USB-Hub. Laut USB-Doku soll jeweils ein
Einheitsstrom von 100mA pro Anschluss zur Verfügung stehen. Die
Beleuchtung zieht zwar ~150mA, scheint aber tadellos zu funktionieren,
ohne dass die Versorgungsspannung einbricht.

Ein einfaches Programm, dass das Display blinken lässt, funktioniert
erstklassig.

Wenn ich nun auf die Idee komme, das Display nach dem Busy-Zustand
abzufragen, scheint sich der PIC selbst zu resetten (Watchdog,
Brown-Out, MCLR ausgeschaltet). Mir ist absolut schleierhaft, weshalb
das passiert. In der Versorgungsspannung sehe ich keine Spitzen; der
Oszillator scheint einzubrechen. Ich habe versucht, einen externen 40
MHz-Oszillator zu verwenden. Dabei sprang der PIC schlecht an. Mit einem
4 MHz-Quarz war das Ergebnis ähnlich. Jetzt nun, mit einem 16 MHz-Quarz
läuft der PIC sauber, bis man das Display ansprechen möchte; auch erst
dann, wenn man eine der beiden Chip-Select-Leitungen des Displays
setzt.

Gibt es vielleicht von Eurer Seite Tips, wie man soetwas am besten
entstört? Ich denke mal, dass der DC/DC-Wandler des Displays und die
Taktung des Displays selbst irgendwelche Störungen ausstrahlen. Kann es
sein, dass man dies vielleicht noch zusätzlich extern speisen sollte?

Vielen Dank im Voraus!

von Hannes L. (hannes)


Lesenswert?

Genügend Abblock-Kondensatoren vorhanden?

von Thorsten (Gast)


Lesenswert?

Sicher, das sich der PIC resetet und nicht nur die USB-Verbindung
unterbrochen wird? Eventuell dauert dein busy polling zu lange, hast du
die USB-Firmware selbst geschrieben oder benutzt du was fertiges von
Microchip?

Versuche mal, die Beleuchtung auf 100mA zu reduzieren. Wie hoch ist die
Gesamtkapazität, die an den +5V vom USB hängen? Bei mehr als 10µF kann
es Probleme geben.

Thorsten

von Florian D. (Gast)


Lesenswert?

Der USB-Transceiver ist sogar ausgeschaltet. Es sieht so aus, als würde
den PIC immer dann wegfliegen, wenn ich die Enable-Leitung hochziehe
und Chip-Select gesetzt ist. Ohne CS auch kein Reset. In genau diesem
Moment soll das Display die Daten an den Datenbus anlegen. Alles, was
ich noch sehe, ist ein kurzer Spike auf der Enable-Leitung. Der Port
ist aber auf jeden Fall als Input geschaltet.

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.