Guten morgen,
erstmal vorweg: Ich bin kein Pro, deswegen bitte ein wenig Verständnis
wegen meinem Code. :)
Jetzt zum Problem:
Ich habe ein Atmega1284P Board, ein SD Kartenmodul und verwende das
FT800CB display.
Mit dem Display ist alles okay auch das lesen von der SD Karte klappt
und auch das schreiben. ABER-> nach dem schreiben auf der SD-Karte
bleibt das FT800 einfach hängen...sobald ich das SD Modul löse läuft das
Display weiter. Beide arbeiten ja über SPI-Bus....ich habe keine
PullUp-Widertände am SPI-Bus!
hier mal ein Ausschnitt von meinem Unterprorgamm!
Bei dem "writeSettingsToSD();" geht er in das weitere Unterprogramm und
schreibt auch die Daten auf die SD-Karte. dannach ist er fertig und
bricht die Whileschleife mit "break" ab. Danach zeigt er das Menü ganz
normal wieder an aber es lässt sich nix mehr drücken. Erst wenn ich das
SD-Kartenmodul abtrenne, funktionert es wieder....mir scheint es als
wenn er sich irgendwie aufhängt.
hier mal das unterprogramm zum schreiben auf die SD-Karte....vor dem
Schreiben wird die parameter.txt gelöscht, das ist gewollt.
Zeigt das FT800 denn noch was an?
Bau mal was dynamisches ein, lass mal einen Zähler auf dem Display
laufen.
Es könnte sein, dass der Chip-Select der SD-Karte nicht abgewählt wird,
dann kann man zwar immer noch auf das FT800 schreiben, aber nicht mehr
davon lesen weil ja auf MISO nur Datenmüll ankommt.
Ich hatte so was ähnliches gerade mit einer 8x AD-Platine mit
Pegel-Wandler bei der ich übersehen hatte, dass ich den Ausgangs-Treiber
für MISO auch besser abschalten sollte, wenn mehr als ein Teilnehmer am
SPI ist.
Sobald ich den AD-Wandler angeschlossen habe ging Touch nicht mehr.
Ansonsten kann man nur schlecht raten, die Informationen bisher sind
etwas dünn und die Software-Schicht in der Du Dich gerade bewegst ist
etwas weit weg von den Pins.
Und quasi Null Informationen zur Hardware.
Martin T. schrieb:> tagoption = FT_OPT_FLAT; // Schatten für Button> delay(300);> writeSettingsToSD(); //gehe zum Unterprogramm> delay(150);> break; //whileschleife abbrechen
Wofür auch immer das gut sein soll, den Controller hier anzuhalten, Du
hast auf jeden Fall auch grundsätzlich ein Architektur-Problem.
Ok danke erstmal. Ok da es ja weiterläuft wenn ich das SD Modul
herausziehe, muss es ja irgendwas an der hardware sein.
Hier mal mein ein Schaltplan. Platine funktioniert einwandfrei.
Aber vlt findet jemand ein Hardwareproblem.
Hilft ein PullUp am CS vom TFT?
Martin T. schrieb:> Hier mal mein ein Schaltplan
ich verweigere schwarze Schaltpläne (gibt nur Augenkrebs)
sorry
bin ja sonst aber auch arduino mighty oder m1284p Fan
Joachim B. schrieb:> Martin T. schrieb:>> Hier mal mein ein Schaltplan>> ich verweigere schwarze Schaltpläne (gibt nur Augenkrebs)>> sorry>> bin ja sonst aber auch arduino mighty oder m1284p Fan
sorry warte
Ich sehe keine Pegelanpassung zur SD! die mit 3,3V arbeitet.
Ich sehe keine antiparallele Diode am Reset R6
Ich mag mitllerweile lieber 220n-470nF Abblockkondis Keramik weil die
Chips gegen früher leistungfähiger sind und mehr Strom brauchen auch
sind durch weniger Chips weniger Kondensatoren nötig, die höhere
kapazitive LAst ist deswegen kein Thema mehr und ein paar nanoF mehr
kosten nicht die Welt.
R3 180 Ohm Wahnsinn ist das eine 20mA Dunkel LED, da nehme ich lieber uh
LEDs und 1k-4,7k Ohm
Das wars erst mal in Kürze
Die Pegelanpassung ist doch auf dem Modul?
http://www.ebay.de/itm/311575381645
Die 180Ohm stimmen nicht. Ich hatte den Widerstand nur übernommen. Alles
gut!
Martin T. schrieb:> Die Pegelanpassung ist doch auf dem Modul?
da fehlt mir der Schaltplan und das mit dem Modul hattest du geschickt
versteckt oder verschwiegen :)
alles gut, entweder Hardware- oder Softwareprobleme in Zeile 42!
> da fehlt mir der Schaltplan und das mit dem Modul hattest du geschickt> versteckt oder verschwiegen :)>> alles gut, entweder Hardware- oder Softwareprobleme in Zeile 42!
Ich weiß aber gerade nicht genau ob aus dem SD Modul 3.3V herauskommen
und das TFT 5v output hat, kann das möglich?
In Zeile 42? Ironie? :D
Ach so warum eine antiparallele Diode einbauen? Habe ich noch nie
gesehen, und wozu dient diese eigentlich? Google haut da nicht viel
raus!
Martin T. schrieb:> normal wieder an aber es lässt sich nix mehr drücken. Erst wenn ich das> SD-Kartenmodul abtrenne, funktionert es wieder....mir scheint es als> wenn er sich irgendwie aufhängt.
SD-Modul mit Steckkabeln verbinden, nach dem schreiben auf die Karte
zuerst CS_SD abtrennen, wenn es trotzdem nicht geht, MISO abtrennen.
Danach bist du schon mal klüger.
EDIT:
SCK natürlich auch abtrennen, wenn es nicht geht.
>SD-Modul mit Steckkabeln verbinden, nach dem schreiben auf die Karte>zuerst CS_SD abtrennen, wenn es trotzdem nicht geht, MISO abtrennen.
Achso, gute Idee, dann müsste das Programm weiter laufen.
Kann ich den CS Pin Softwaretechnisch abtrennen?
Martin T. schrieb:> Kann ich den CS Pin Softwaretechnisch abtrennen?
Nein, aber als Eingang schalten geht immer, kommt auf dasselbe hinaus.
CS ist aber sehr wahrscheinlich nicht die Ursache, eher MISO oder
SCK.
Und MISO oder SCK kannst du ohne Probleme abtrennen, andersrum ist
es nicht immer klug.
EDIT:
Was ich meine ist:
*VCC Ein*:
Ausser GND und VCC kann ich alles rausziehen.
*VCC Aus*:
Kann alles rein und rausziehen.
Ahhh okay!
Nochmal zum Verständnis.
Wenn ich den VCC pin vom SD Modul nicht an die VCC hänge sondern an den
Pin vom uC und diesen nur HIGH schalte wenn ich lesen oder schreiben
will....müsste es dann gehen?
Bin gerade in Schule daher kann ich es nicht ausprobieren aber jede
Hilfe nehem ich an um das Problem zu beheben....ich möcht unbedingt KEIN
EEprom nutzen müssen. :/
Martin T. schrieb:> Wenn ich den VCC pin vom SD Modul nicht an die VCC hänge sondern an den> Pin vom uC und diesen nur HIGH schalte wenn ich lesen oder schreiben> will....müsste es dann gehen?
Ja, vorausgesetzt dein Modul braucht nicht mehr als 20mA Strom.
Dann muss man aber jedesmal einen neuen SD_Init machen - ob das
unbedingt klug ist ?
>> Wenn ich den VCC pin vom SD Modul nicht an die VCC hänge sondern an den>> Pin vom uC und diesen nur HIGH schalte wenn ich lesen oder schreiben>> will....müsste es dann gehen?> Ja, vorausgesetzt dein Modul braucht nicht mehr als 20mA Strom.
Das wage ich zu bezweifeln. Wenn Vcc weg ist und an SCK und MOSI noch
Daten laufen wird die Karte u.U. parasitär darüber gespeist.
Keine gute Idee das ganze.
Also manchmal... :-)
Das SD-Modul ist dummer Schrott.
Pin 13, Output-Enable für MISO müsste von GND getrenntn und mit Pin 8,
CS_Card verbunden werden damit MISO automatisch hochohmig wird wenn CS
High wird.
So wie das jetzt beschaltet ist macht das Modul den MISO platt.
Also genau was ich oben als Problem mit meiner ADC-Platine beschrieben
habe...
Martin T. schrieb:> Keiner weiß ne Lösung? :(
Doch klar. Die Lösung ist: verwende nur Libs und Hardware, die du
begreifst.
Dann kannst du jederzeit selber rausbekommen, wo die Säge klemmt.
>> Keiner weiß ne Lösung? :(>> Doch klar. Die Lösung ist: verwende nur Libs und Hardware, die du> begreifst.>> Dann kannst du jederzeit selber rausbekommen, wo die Säge klemmt.
Sehr geistreicher Beitrag! Wenn es nur Leute wie dich gäbe, wäre das
Forum glaube leer. Wahrscheinlich hast du selber keine Ahnung...
_______________________________________________________________>Also manchmal... :-)>>Das SD-Modul ist dummer Schrott.>Pin 13, Output-Enable für MISO müsste von GND getrenntn und mit Pin 8,>CS_Card verbunden werden damit MISO automatisch hochohmig wird wenn CS>High wird.>>So wie das jetzt beschaltet ist macht das Modul den MISO platt.>>Also genau was ich oben als Problem mit meiner ADC-Platine beschrieben>habe...
Also ich habe gestern Abend nochmal alles umgebaut. Der VCC Pin vom
SD-Modul wird jetzt per Software abgeschaltet und eingeschaltet wenn die
SD-Karte gebraucht wird. Natürlich muss man jedes mal die Karte wieder
initialisieren. Funktioniert wunderbar, auch die Störungen sind weg. Ob
das jetzt die sicherste Lösung ist weiß ich nicht genau, aber ich denke
mal - wenn am Modul keine Spannung anliegt kann der LVC125A auch nicht
arbeiten, oder?! :)
Martin T. schrieb:> initialisieren. Funktioniert wunderbar, auch die Störungen sind weg. Ob> das jetzt die sicherste Lösung ist weiß ich nicht genau, aber ich denke> mal - wenn am Modul keine Spannung anliegt kann der LVC125A auch nicht> arbeiten, oder?! :)
Haben schon andere vor dir gedacht und lagen daneben.
Aber im Prinzip kann ja nichts schlimmes passieren, wenn es jetzt
in Ordnung ist, dann lass es so.
> Haben schon andere vor dir gedacht und lagen daneben.>> Aber im Prinzip kann ja nichts schlimmes passieren, wenn es jetzt> in Ordnung ist, dann lass es so.
Naja würde schon gern wissen ob es eine sichere Lösung ist!? :/
Was für Möglichkeiten hat man noch?
Martin T. schrieb:> Naja würde schon gern wissen ob es eine sichere Lösung ist!? :/> Was für Möglichkeiten hat man noch?
VCC in Ruhe lassen, MISO von der SD-Card nicht direkt sondern über
10K Widerstand verbinden.
Martin T. schrieb:> Ach so also 10k zwischen VCC und MISO richtig?
nein
ich lese das anders!
Marc V. schrieb:> MISO von der SD-Card nicht direkt sondern über> 10K Widerstand verbinden.
nicht direkt heisst Serienwiderstand!
Ich entkoppel imme genutzte ISP Leitungen mit 470 Ohm.
AVR <-> ISP 1:1 verdrahtet
alle ISP Pins die anderweitig genutzt werden kommen über 470 Ohm zu
ihren Aufgaben.
also
AVR Mosi ISP Stecker direkt!
AVR Mosi über 470 Ohm an SD (Pegelanpassung)
usw.
GND 1:1
VCC mit BAT42 zur Entkopplung damit Fremdspeisung nicht zurück zum
ungespeisten Prommer wirkt.
> Marc V. schrieb:>> MISO von der SD-Card nicht direkt sondern über>> 10K Widerstand verbinden.>> nicht direkt heisst Serienwiderstand!>> Ich entkoppel imme genutzte ISP Leitungen mit 470 Ohm.>> AVR <-> ISP 1:1 verdrahtet> alle ISP Pins die anderweitig genutzt werden kommen über 470 Ohm zu> ihren Aufgaben.>> also> AVR Mosi ISP Stecker direkt!> AVR Mosi über 470 Ohm an SD (Pegelanpassung)> usw.
MISO oder MOSI?
> GND 1:1> VCC mit BAT42 zur Entkopplung damit Fremdspeisung nicht zurück zum> ungespeisten Prommer wirkt.
Ahhh alles klar, habe es verstanden. :) Besser hätte man es nicht sagen
können. Werde es heute Abend mal ausprobieren ob es auch ohne die
Abtrennung von VCC des Moduls klappt.
Ach so und vom TFT der MISO oder MOSI auch?
Joachim B. schrieb:> AVR Mosi über 470 Ohm an SD (Pegelanpassung)
MOSI ist unkritisch in diesem Fall.
___
SD_MISO --| 10K |--> SPI_BUS ( AVR_MISO + FT800_MISO)
Natürlich kann 10K auch kleiner sein.
Marc V. schrieb:> Natürlich kann 10K auch kleiner sein.
also alle ISP Pins mit 470 Ohm hat bei mir immer gut funktioniert.
Auch mit 470 Ohm ist ein low noch gut, mit 10k nicht überall wegen
möglicher pullups.
mit 470 Ohm ist der Strom auch hinreichend begrenzt bei 5V Versorgung,
da brennt noch kein AVR Port ab!
Marc V. schrieb:> Nein.
wieso den TFT nicht mit R entkoppelt? (ich persönlich habe immer alle
entkoppelt ausser man merkt Störungen!
ausserdem
Miso auf Miso klingt falsch
was dem einen sein
MISO
Master In Serial Out
ist
muss dem anderen sein
MOSI sein
Master Out Serial In
da muss man genau schauen was die Bezeichnungen bedeuten welche
Guckrichtung!
Joachim B. schrieb:> Miso auf Miso klingt falsch
Auweia.
Immer nur ein MASTER auf dem Bus, demzufolge ist MISO immer MISO.
Heisst auch deswegen MasterInSlaveOut.
TFT oder SD_Card können niemals MASTER werden, auch deswegen.
Will aber nicht wieder eine Streiterei anfangen, lese mal die
entsprechende Literatur durch.
Marc V. schrieb:> Auweia.
nix auweia.....
ich denke da liegt wieder das Missverständnis vor
Ist doch nix anderes als Rx auf Tx und Tx auf Rx
Ich glaube ich bin diesmal falsch abgebogen
Der Master sendet an Slave
also MOSI auf MOSI
Master Out auf Seriell In
OK hast Recht, war mein Irrtum deswegen wie ich schrieb immer die
Guckrichtung beachten!
Nervt wenn irgendwo beiderseits Tx mit Tx verbunden werden soll ob nicht
wirklich gekreuzt gemeint ist und auch stattfindet.
Das hatte ich ganz überlesen! Was hat es auf sich mit der BAT42?
>Joachim B. schrieb:> GND 1:1 VCC mit BAT42 zur Entkopplung damit >Fremdspeisung nicht zurück> zum ungespeisten Prommer wirkt.
Und dann habe ich doch nochmal eine frage zum ft800cb und dem sd Modul.
SCK, Miso, Mosi, CS immer mit R470 entkoppeln?
Also AVR --- 470 ---SD modul
Und nochmal
AVR --- 470 --- FT800cb
???????
Martin T. schrieb:> SCK, Miso, Mosi, CS immer mit R470 entkoppeln?
ich mache es so und komme gut damit klar, noch nie hatte ich Probleme
trotz angeschlossener Bauteile den Atmel über ISP zu flashen.
Im Einzelfall mag das anders aussehen, nur 10k wäre mir zuviel auch wenn
das im Einzelfall funktionieren mag.
Mit den 470 Ohm hat der ISP direkt angeschlossen den AVR zu
programmieren und 470 Ohm sind auch ein akzeptables low aber groß genug
um Ströme am AVR so zu begrenzen das normal nichts sterben dürfte.
Martin T. schrieb:> Aber die ISP wird nicht enkoppelt ja?
Das ist ja der Witz, darum macht man das doch mit den anderen Leitungen,
damit das Programmieren funktioniert obwohl da noch mehr dran hängt.
Martin T. schrieb:> Okay danke :) Aber die ISP wird nicht enkoppelt ja?
das ist ja der Witz dabei der ISP Prommer darf nicht zum AVR gestört
werden, deswegen hängt der 1:1 ohne R dran
Martin T. schrieb:> Und die Diode "BAT" parallel zu VCC/GND vom SD-Modul? :)
parallel? ich blicke grad nicht wovon du schreibst, versuchs mal mit
einem Plan statt prosa, erklärt hatte ich das schon mal, wenn es nicht
ankommt, dann sorry!
BAT42 nur wenn keine große Last am Atmel hängt 200mA max, sonst eine
1N5819 o.ä.
die dient zur Entkopplung damit der ISP keine Fremdspeisung zurück auf
den ausgeschalten PC USB bekommt
Genauso würde ich Fremd 5V am AVR nur über eine Diode einspeisen, z.B.
5A Netzteil weil vielleicht noch richtige Last versorgt wird!
Es ist doch logisch das ein ISP aus dem USB keine 5A treiben kann aber
die sollen nur zum Programmieren den AVR versorgen und keine LED Stripes