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!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.