www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit 8-Bit Datenbus


Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nen bild vom layout wäre auch hilfreich:)

Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H.joachim Seifert (crazy_horse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in dem Fall könnten es Reflexionen sein, bei moderaten 100kb dürfte das
aber eigentlich noch nicht so das grosse Problem sein, korrektes
Programm vorausgesetzt.

PS: was ist ein KO?

Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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  :) ?

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manchmal ist es günstiger, diverse Wartezeiten im Programm-Code zu
vereinbaren.

Nach dem Motto: Weniger ist manchmal mehr

Bernhard

Autor: Busy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.