Probleme mit 8-Bit Datenbus

Gast #339719
Lesenswert?

Geschätztes Forum...

Ich hab ein Problem bei dem ich einfach nicht weiter weiss.

An einem mega 32 hängen eine Compact Flash Karte und noch ein ADC/DAC
Modul.
8 Bidirektionale Datenleitungen vom AVR zu beiden Busteilnehmern.
3 Adressleitungen zu beiden Busteilnehmern.
Chip Select je für Busteilnehmer.
Busy-Leitung der CF zum mega 32 (um Bereitschaft der CF auszuwerten).
Datentransfer ca. 100 kB/s.
5V für alle, Leiterbahnbreite 0.8mm, Abblock C 1uF Folie, 10uF Kerko
bei allen Komponenten. 5V ist sauber.

Das Auslesen von Daten der CF und Ausgabe an DAC funktioniert mit der
einten CF Karte immer perfekt, mit einer 2. Baugleichen auch, mit einer
3. Baugleichen aber leider nicht immer, manchmal kommen fehlerhafte
Daten von der Karte.
Mit einer Karte eines anderen Herstellers geht es gar nicht oder es
kommt fast nur Datenmüll.

Ich kann Software Fehler ausschliessen. Es scheint mir als ob es ein
Frequenzproblem ist, quasi HF-Effekte, welche für einige CF kritisch
sind. Das ganze läuft auf einem Print, 0.2 mm Leiterbahnbreite.
Die Leiterbahnen sind ungefähr gleich lang. Leider habe ich keine
Ahnung wie ich das Problem lösen kann.
Die Signale sehen auf dem KO meist okay aus, manchmal aber auch
wirklich hässlich, Sägezahn mit nur halber Spannung :(

Weiss jemand was dazu ?
#339720
Lesenswert?

Hallo Busy,

sieht wie ein Hardware-Problem aus.

Könnte es sein, dass die CF-Karte sehr hochohmige Ausgänge hat?

Die internen Pull-UPs Deines µC auch deaktiviert?

Wenn Du alles niedriger taktest, wie sieht dann das Fehlerbild aus?

Lässt Du allen Busteilnehmern genügend Zeit, wenn Du von Read auf Write
und umgekehrt umschaltest?

Ich weiß, Fragen über Fragen  ;)


Bernhard
Gast #339722
Lesenswert?

Hi Bernhard!

Danke für dein Interesse!

Laut CF-Spezifikationen kann jeder Ausgang (wenn die CF Daten liefert)
mind. 8mA treiben.
Interne Pullups des AVR sind deaktiviert. Alle Read, Write etc. Zyklen
werden nach Datenblatt eingehalten. Ich werde es baldmöglichst mit
einem niedrigerem Takt versuchen (16 Mhz Quarz tauschen).

Spasseshalber hat ein Kollege 470? Ohm Widerstände in Serie! der
Datenleitungen bei der CF gelegt und es funktioniert nun auch mit einer
CF welche vorher nur Datenmüll lieferte.

Wie gesagt, ich kann es mir nicht erklären. Die Widerstandslösung
Lösung funktioniert im Moment zwar, aber beruhigt mich nicht.

Leider habe ich wehnig Ahnung von HF-Effekten.
Gast #339723
Lesenswert?

@ Hauke

Tut mir leid, leider darf ich das von der Firma aus nicht.
Beschreibung;
0.2mm Leiterbahndicke. Alle Signalleitungen ca. +- 7 cm gleich lang.
Der Bus geht zwar vom AVR noch an andere Komponenten, diese sind aber
zur Zeit noch gar nicht bestückt. Ich würde schätzen die jeweiligen
Signalleitungen sind max. 70 cm lang.
Gast #339725
Lesenswert?

KO = Osziloskop.

Es werden 100 kB/s über den Bus ausgetauscht. Natürlich "asynchron"
wegen der Ladezeiten der Sektoren; Nach dem Sektor x Lesebefehl an die
CF dauert es eine Zeit bis diese parat ist und dann werden ziemlich fix
die 512 Bytes ausgelesen.

Wie ermittle analysiere ich Reflexion, besser wie wirke ich dem
entgegen  :) ?
Gast #339726
Lesenswert?

Achso schade aber achte drauf, keine rechten winkel in den
datenleitungen zu haben, da kommts zu reflexionen. Wie siehts mit
masseflächen aus? irgendwelche anderen hochfrequenten leitungen in der
nähe? (oder z.b. auf der unterseite)
Das es mit Widerständen besser geht lässt darauf schließen, dass der
avr  zu niederohmig für die karte ist. Probier ruhig mal verschiedene
werte durch(auch höhere)
#339727
Lesenswert?

Es kann auch sein, dass der Bus zu hochohmig im Read-Modus ist,
somit wirken parasitäre Kapazitäten und verfälschen die Signale.

Vielleicht mal Widerstände zwischen +5V und den Busleitungen
schalten(1...10k),
aber die Seriellen R der CF dabei beachten, dass der Pegel auch
stimmt.


 Bernhard
Gast #339728
Lesenswert?

Jo wir haben keine 90 Grad Leitungen ausser bei den Vias. Diverse
Leitungen kreuzen sich auf der Unterseite. Ausser dem Bus und dessen
Signale sind keine Hochfrequenten Signale vorhanden.
Mit Pullup / down ("Abschlusswiderständen")diverser Werte der
Leitungen bringen kein Erfolg.
AVR zu niederohmig wenn als Eingang geschaltet, kann ich mir nicht
vorstellen. Reflexionen schon eher... uch das wird schwierig wenn man
keine Erfahrung damit hat.
Gast #339730
Lesenswert?

Okay, ich werde baldmöglichst die Wartezyklen hochschrauben und den
Quarz runter, mal sehen was passiert. Würdet ihr mir Pullups oder downs
empfehlen und vorallem an welchem Ort / Teilnehmer soll ich sie setzen
?
Ich denke da die CF nur mind. 8 mA bringen muss nach spec. werde ich es
mal mit 3k3 Ohm probieren.
Aber warum funktionierts mit serie R? Dadurch werden ja nur die
parasitären Kapazitäten noch langsamer geladen? Wie kann es passieren
das "zufällig" die Pegel am Arsch sind :) ?

Fragen über Fragen...

Danke an die Helfenden!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren