-
-
Erfahrener Benutzer
Roboter Experte
Hmmm, alles sehr seltsam....
Ich setze die Adresse, setzt den Port auf Eingang, schreibe eine 0 nach PORTA, setze OE und lese den Eingangsport....
Und nach einem Schreibzugriff schalte ich den Port immer wieder als Eingang und schreib 0 nach Porta...
wenn ich die Reihenfolge beim Adresse anlegen (also Lowbyte zuerst und dann Highbyte) vertausche, krieg ich ohne Verzögerung immer ganz sauber das Highbyte gelesen, das gibt in meinem Bildanzeigeprogramm auf dem PC einen schicken Verlauf von Schwarz nach Grau
Also langsam dreh ich am RAD......
-
Erfahrener Benutzer
Robotik Einstein
Warum schaltest Du das Port immer wieder auf Eingang und schreibst dann auch noch eine 0 rein ?
Laß das Daten-Port nach Verlassen einer Aktion doch so wie es ist.
Die Steuerleitungen müssen natürlich so gesetzt sein, daß z.B. OE vom SRAM auf High ist, damit keine Daten auf den Bus gelangen.
WR und LE müssen ebenfalls High sein ..... LE .... High ??? NEIN; LE muß Low sein, weil bei High alles von den Latchs übernommen wird, was auf dem Bus ist. Der 573 ist nicht flanken-getriggert !!!
In meinem Assembler-Programm setze ich ein Flag, wenn Port = Ausgang ist und lösche dieses Flag, wenn Port = Eingang.
In meiner Schreib-Routine prüfe ich das Richtungs-Flag und schalte ggf. erst das Port auf Ausgang um, bei meiner Lese-Routine das Gleiche in grün.
Bei mir sind es allerdings nur 5 Adress-Leitungen auf PORTD bei einem PIC16F877; die Datenleitungen führen zu 4 x 4 x 74HC573 mit nachfolgenden LEDs und Relais, sowie zu 4 x 4 x 74HC541 zur Abfrage von (Kontakt-)Zuständen.
-
Erfahrener Benutzer
Roboter Experte
Hallo!
Hab mich evtl etwas missverständlich ausgedrückt:
Der Ablauf sieht folgendermaßen aus :
OE und WE auf high, LE1 und LE2 auf low
schreiben:
PORTA auf Ausgang schalten
Lowbyte ausgeben
LE1 high
LE1 low
Highbyte ausgeben
LE2 high
LE2 low
Daten ausgeben
WE low
WE high
PORTA auf Eingang
Null schreiben (schaltet Pullups aus)
lesen:
PORTA auf Ausgang
lowbyte ausgeben
LE1 high
LE1 low
highbyte ausgeben
LE2 high
LE2 low
PORTA als Eingang
PORTA 0 schreiben (schaltet Pullups aus)
OE low
Daten von PINA lesen
OE high
eeeigentlich sollte das doch so gehen, oder nicht??
könnten evtl. Pulldownwiderstände an PORTA helfen??
MfG Volker
-
Erfahrener Benutzer
Roboter Experte
Moin!
Ich habe bezüglich meines Problems hier mal einige Tests durchgeführt und recherchiert :
1. Selbst wenn ich den Meg32 mit 1 MHz laufen lasse und zwischen jeder (!!!) Poränderung eine ms warte habe ich immer noch Fehler....
Aber nun meine Frage : meine Latches sind 74HC573, also CMOS typen, leigt da evtl das Problem? Besser wären doch bestimmt LS oder HCT....
Oder seh ich das falsch? Leider sind meine Elektronikkenntnisse etwas beschränkt, was denn nun genau den Unterschied zwischen TTL und CMOS ausmacht, also was es für Folgen hat, wenn man mit TTL z.B. auf einen CMOS Eingang geht, der einen CMOS Ausgang schaltet, der jetzt aber wieder einen TTL Eingang schalten soll?
/edit: oder lieber gleich 74LS373 nehmen? Mir erschließt sich grad der Unterschied zwischen dem '573 und dem '373 nicht, trotz Datenblattstudium..
Fragen über Fragen....
MfG Volker
-
Erfahrener Benutzer
Robotik Einstein
CMOS sollte schon ok sein, denn der Mega32 ist sicher auch ein CMOS-Bauteil.
Zwischen 573 und 373 gibt es einen sehr wesentlichen Unterschied:
beim 573 sind die Eingänge auf der einen und die Ausgänge auf der anderen Seite, beim 373 ist es etwas 'durcheinander'.
Probier doch mal HCT und LS aus. Es wird Dich kostenmäßig sicherlich nicht ruinieren und die Erfahrung ist unbezahlbar.
Hatten wir eigentlich schon über 100nF Keramik-Kondensatoren am µC und SRAM gesprochen ? Diese 80ns-Dinger schalten recht schnell und hinterlassen 'Spuren' auf der Versorgungsspannung. Das stört schon mal die eine oder andere benachbarte Speicherstelle
-
Erfahrener Benutzer
Roboter Experte
Moin!
Müssen das unbedingt Keramikkondensatoren sein? Ich habe erstmal diese kleinen roten (Folienkondensatoren?) verbraucht...
Muß ich mal einen Schwung KerKos mitbestellen. Außerdem werd ich es mal mit den HCT probieren, die LS scheint Reichelt nicht zu haben....
Und dann werd ich ÜBERALL Kondensatoren dranfrickeln!!!!!!!
Und Danke für den Hinweis mit der Pinbelegung, das hab ich irgendwie total übersehen.
Ich werde berichten!!
MfG Volker
-
Erfahrener Benutzer
Robotik Einstein
Natürlich hat Reichelt auch 74LS-ICs, einige wenige auch in SMD.
Keramik-Vielschicht-Kondensatoren Z5U-2,5 100n solltest Du nehmen, nix mit gewickelter Folie; gewickelt = induktiv !
Nicht alles mit KerKos voll-pflastern, das bringt es nicht; 100nF am µC auf kürzestem Weg an die Versorgungsleitungen, dazu noch ein 10µF Tantal.
100nF am SRAM und an den beiden D-Latchs auf kürzestem Weg an den Versorgungsleitungen.
Eingang und Ausgang vom Spannungsregler nicht vergessen, damit der nicht anfängt zu schwingen.
-
Erfahrener Benutzer
Roboter Experte
Moin!
Ich meinte nicht, daß Reichelt generell keine LS hat 
Auch ist mir klar, daß nicht überall Kondensatoren hinsollten ...
Ich hab grad mal ein paar KerKos bestellt, dann werd ich mal schauen, ob das hilft, evtl. ja zusammen mit den HCT Latches...
Das mit den induktiven Folienkondensatoren war mir bisher gar nicht bewußt, man lernt ja nie aus. So langsam verstehe ich auch, warum auf Digitalschaltungen soooviel Gedöns drumrum drauf ist...
MfG Volker
-
Erfahrener Benutzer
Robotik Einstein
Dann überlege mal, was ohne Kondensatoren passiert, wenn so ein digitaler Gegentakt-Ausgang umschaltet. Der eine Transistor fängt an zu leiten, der andere hört auf zu leiten. Sind beide nicht schnell genug, treffen sie sich in der 'Mitte', wo sie noch nicht sperren. Die Folge: es fließt, abhängig von der Umschaltgeschwindigkeit / Flanken-Steilheit / Impuls-Frequenz, ganz kurz ein mehr oder weniger hoher Strom. Was macht die Versorgungsspannung ? Die bricht ganz kurz ein, weil die Leiterbahnen GND und Vcc einen Widerstand haben, wo Spannung abfällt.
Der Spannungsregler sackt kurz ein, bevor er nachregeln kann.
Bei hochfrequenten / steilen Impulsen entstehen zusätzlich elektro-magnetische Wellen (jeder stromdurchflossene Leiter / Leiterbahn ist von einem Magnetfeld umgeben), die sich ausbreiten. Deshalb nichts 'Gewickeltes' oder 'Spulen-Ähnliches' anschließen, daß könnte einen Super-Schwingkreis ergeben oder bei bestimmten Bauteilen die Schwingneigung begünstigen. Auch Leiterbahnen nicht als 'Windungen' überall drumherum verlegen.
Jetzt kommen die Kondensatoren ins Spiel.
KerKos blocken steile Impulse ab (je steiler / hochfrequenter der Impuls, um so niederomiger wird der kapazitive Widerstand), damit die nicht in den Baustein können und dort alles durcheinander rütteln.
Und, sie geben kurz ihre Ladung ab, wenn die Spannung am Baustein beim Umschalten einbrechen möchte.
GND-Leiterbahnen immer besonders dick ausführen, damit dieser 'Gemeinsame' niederohmig ist und wenig Spannungsabfall entsteht, was ja alle anderen Bausteine an der gleichen GND-Leiterbahn zum 'Schweben' bringen würde.
Immer nur am letzten Baustein einer Versorgungs-Reihe einen KerKo, sonst hat man eine wunderschöne Kaskade aus C ... L (Leiterbahn) ... C ... L (Leiterbahn) ...
Ja, eine Leiterbahn ist bei hohen Frequenzen / steilen Flanken auch induktiv oder wirkt als Antenne. Schau mal in einen Fernseh- oder Satelliten-Tuner rein, da sind Spulen als Leiterbahnen ausgeführt.
Kapazitiv ist eine Leiterbahn gegenüber benachbarten Leiterbahnen ebenfalls. Störimpule können somit auch kapazitiv übertragen werden.
Deshalb: Leiterbahnen immer so kurz wie möglich, GND-Verbindungen so dick wie möglich.
Versorgungen sternförmig vom Glättungs-Elko des Netzteils oder vom Ausgang des Spannungsreglers aus verlegen, weil dort die Spannungsquelle am niederohmigsten ist.
Jetzt höre ich erst mal auf.
-
Erfahrener Benutzer
Roboter Experte
Hallo!!
Vielen Dank an Kalledom, der letzte Eintrag ist sehr aufschlußreich!!
Außerdem habe ich jetzt mal wie beschrieben KerKos angeschlossen und die Latches durch HCT-Typen ersetzt! Jetzt funktioniert es!!!!!
Aber beim Lesen muß ich tatsächlich nach dem Wechsel von OE zwei NOP einbauen, damit es funktioniert, aber damit kann ich leben.
Nochmal danke!!!
MfG Volker
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen