Forum: Mikrocontroller und Digitale Elektronik ATmega 1284 - SD Modul - FT800CB hängt sich auf!


von Nitram E. (slexx)


Lesenswert?

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!
1
void einstellungen()
2
{
3
while(1){
4
.
5
.
6
. die Grundfunktionen vom Display lasse ich mal weg!
7
.
8
.
9
tagoption = 0;
10
            if(6 == tagval)    //Wenn Displaybutton "Zurück" gedrückt, dann...
11
            {
12
              tagoption = FT_OPT_FLAT; // Schatten für Button
13
              delay(300);
14
              writeSettingsToSD(); //gehe zum Unterprogramm
15
              delay(150);
16
              break;  //whileschleife abbrechen
17
              
18
            }
19
            FTImpl.Tag(6);     // Button auf Display erstellen!
20
            FTImpl.Cmd_Button(0,236,wbutton*2,hbutton,27,tagoption,"Abbruch");
21
22
            FTImpl.DLEnd(); //Displaylist anzeigen lassen
23
            FTImpl.Finish();
24
          }
25
}

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.
1
void writeSettingsToSD()
2
{
3
  sd.remove("PARAMETER.TXT");
4
  SdFile myFile("PARAMETER.TXT", O_RDWR);
5
  if (!myFile.open("PARAMETER.TXT", O_RDWR | O_CREAT | O_AT_END)) 
6
  {
7
    //sd.errorHalt();
8
  }
9
10
  myFile.print(Januar[0]);myFile.print(".");myFile.print(Januar[1]);myFile.print("-");myFile.print(Januar[2]);myFile.print(".");myFile.print(Januar[3]);myFile.print(" ");myFile.print(Januar[4]);myFile.print(".");myFile.print(Januar[5]);myFile.print("-");myFile.print(Januar[6]);myFile.print(".");myFile.print(Januar[7]);myFile.print(" ");myFile.print(Januar[8]);myFile.print(".");myFile.print(Januar[9]);myFile.print("-");myFile.print(Januar[10]);myFile.print(".");myFile.print(Januar[11]);myFile.print(" ");myFile.print(Januar[12]);myFile.print(".");myFile.print(Januar[13]);myFile.print("-");myFile.print(Januar[14]);myFile.print(".");myFile.println(Januar[15]);
11
  myFile.print(Februar[0]);myFile.print(".");myFile.print(Februar[1]);myFile.print("-");myFile.print(Februar[2]);myFile.print(".");myFile.print(Februar[3]);myFile.print(" ");myFile.print(Februar[4]);myFile.print(".");myFile.print(Februar[5]);myFile.print("-");myFile.print(Februar[6]);myFile.print(".");myFile.print(Februar[7]);myFile.print(" ");myFile.print(Februar[8]);myFile.print(".");myFile.print(Februar[9]);myFile.print("-");myFile.print(Februar[10]);myFile.print(".");myFile.print(Februar[11]);myFile.print(" ");myFile.print(Februar[12]);myFile.print(".");myFile.print(Februar[13]);myFile.print("-");myFile.print(Februar[14]);myFile.print(".");myFile.println(Februar[15]);
12
  myFile.print(Maerz[0]);myFile.print(".");myFile.print(Maerz[1]);myFile.print("-");myFile.print(Maerz[2]);myFile.print(".");myFile.print(Maerz[3]);myFile.print(" ");myFile.print(Maerz[4]);myFile.print(".");myFile.print(Maerz[5]);myFile.print("-");myFile.print(Maerz[6]);myFile.print(".");myFile.print(Maerz[7]);myFile.print(" ");myFile.print(Maerz[8]);myFile.print(".");myFile.print(Maerz[9]);myFile.print("-");myFile.print(Maerz[10]);myFile.print(".");myFile.print(Maerz[11]);myFile.print(" ");myFile.print(Maerz[12]);myFile.print(".");myFile.print(Maerz[13]);myFile.print("-");myFile.print(Maerz[14]);myFile.print(".");myFile.println(Maerz[15]);
13
  myFile.print(April[0]);myFile.print(".");myFile.print(April[1]);myFile.print("-");myFile.print(April[2]);myFile.print(".");myFile.print(April[3]);myFile.print(" ");myFile.print(April[4]);myFile.print(".");myFile.print(April[5]);myFile.print("-");myFile.print(April[6]);myFile.print(".");myFile.print(April[7]);myFile.print(" ");myFile.print(April[8]);myFile.print(".");myFile.print(April[9]);myFile.print("-");myFile.print(April[10]);myFile.print(".");myFile.print(April[11]);myFile.print(" ");myFile.print(April[12]);myFile.print(".");myFile.print(April[13]);myFile.print("-");myFile.print(April[14]);myFile.print(".");myFile.println(April[15]);
14
  myFile.print(Mai[0]);myFile.print(".");myFile.print(Mai[1]);myFile.print("-");myFile.print(Mai[2]);myFile.print(".");myFile.print(Mai[3]);myFile.print(" ");myFile.print(Mai[4]);myFile.print(".");myFile.print(Mai[5]);myFile.print("-");myFile.print(Mai[6]);myFile.print(".");myFile.print(Mai[7]);myFile.print(" ");myFile.print(Mai[8]);myFile.print(".");myFile.print(Mai[9]);myFile.print("-");myFile.print(Mai[10]);myFile.print(".");myFile.print(Mai[11]);myFile.print(" ");myFile.print(Mai[12]);myFile.print(".");myFile.print(Mai[13]);myFile.print("-");myFile.print(Mai[14]);myFile.print(".");myFile.println(Mai[15]);
15
  myFile.print(Juni[0]);myFile.print(".");myFile.print(Juni[1]);myFile.print("-");myFile.print(Juni[2]);myFile.print(".");myFile.print(Juni[3]);myFile.print(" ");myFile.print(Juni[4]);myFile.print(".");myFile.print(Juni[5]);myFile.print("-");myFile.print(Juni[6]);myFile.print(".");myFile.print(Juni[7]);myFile.print(" ");myFile.print(Juni[8]);myFile.print(".");myFile.print(Juni[9]);myFile.print("-");myFile.print(Juni[10]);myFile.print(".");myFile.print(Juni[11]);myFile.print(" ");myFile.print(Juni[12]);myFile.print(".");myFile.print(Juni[13]);myFile.print("-");myFile.print(Juni[14]);myFile.print(".");myFile.println(Juni[15]);
16
  myFile.print(Juli[0]);myFile.print(".");myFile.print(Juli[1]);myFile.print("-");myFile.print(Juli[2]);myFile.print(".");myFile.print(Juli[3]);myFile.print(" ");myFile.print(Juli[4]);myFile.print(".");myFile.print(Juli[5]);myFile.print("-");myFile.print(Juli[6]);myFile.print(".");myFile.print(Juli[7]);myFile.print(" ");myFile.print(Juli[8]);myFile.print(".");myFile.print(Juli[9]);myFile.print("-");myFile.print(Juli[10]);myFile.print(".");myFile.print(Juli[11]);myFile.print(" ");myFile.print(Juli[12]);myFile.print(".");myFile.print(Juli[13]);myFile.print("-");myFile.print(Juli[14]);myFile.print(".");myFile.println(Juli[15]);
17
  myFile.print(August[0]);myFile.print(".");myFile.print(August[1]);myFile.print("-");myFile.print(August[2]);myFile.print(".");myFile.print(August[3]);myFile.print(" ");myFile.print(August[4]);myFile.print(".");myFile.print(August[5]);myFile.print("-");myFile.print(August[6]);myFile.print(".");myFile.print(August[7]);myFile.print(" ");myFile.print(August[8]);myFile.print(".");myFile.print(August[9]);myFile.print("-");myFile.print(August[10]);myFile.print(".");myFile.print(August[11]);myFile.print(" ");myFile.print(August[12]);myFile.print(".");myFile.print(August[13]);myFile.print("-");myFile.print(August[14]);myFile.print(".");myFile.println(August[15]);
18
  myFile.print(September[0]);myFile.print(".");myFile.print(September[1]);myFile.print("-");myFile.print(September[2]);myFile.print(".");myFile.print(September[3]);myFile.print(" ");myFile.print(September[4]);myFile.print(".");myFile.print(September[5]);myFile.print("-");myFile.print(September[6]);myFile.print(".");myFile.print(September[7]);myFile.print(" ");myFile.print(September[8]);myFile.print(".");myFile.print(September[9]);myFile.print("-");myFile.print(September[10]);myFile.print(".");myFile.print(September[11]);myFile.print(" ");myFile.print(September[12]);myFile.print(".");myFile.print(September[13]);myFile.print("-");myFile.print(September[14]);myFile.print(".");myFile.println(September[15]);
19
  myFile.print(Oktober[0]);myFile.print(".");myFile.print(Oktober[1]);myFile.print("-");myFile.print(Oktober[2]);myFile.print(".");myFile.print(Oktober[3]);myFile.print(" ");myFile.print(Oktober[4]);myFile.print(".");myFile.print(Oktober[5]);myFile.print("-");myFile.print(Oktober[6]);myFile.print(".");myFile.print(Oktober[7]);myFile.print(" ");myFile.print(Oktober[8]);myFile.print(".");myFile.print(Oktober[9]);myFile.print("-");myFile.print(Oktober[10]);myFile.print(".");myFile.print(Oktober[11]);myFile.print(" ");myFile.print(Oktober[12]);myFile.print(".");myFile.print(Oktober[13]);myFile.print("-");myFile.print(Oktober[14]);myFile.print(".");myFile.println(Oktober[15]);
20
  myFile.print(November[0]);myFile.print(".");myFile.print(November[1]);myFile.print("-");myFile.print(November[2]);myFile.print(".");myFile.print(November[3]);myFile.print(" ");myFile.print(November[4]);myFile.print(".");myFile.print(November[5]);myFile.print("-");myFile.print(November[6]);myFile.print(".");myFile.print(November[7]);myFile.print(" ");myFile.print(November[8]);myFile.print(".");myFile.print(November[9]);myFile.print("-");myFile.print(November[10]);myFile.print(".");myFile.print(November[11]);myFile.print(" ");myFile.print(November[12]);myFile.print(".");myFile.print(November[13]);myFile.print("-");myFile.print(November[14]);myFile.print(".");myFile.println(November[15]);
21
  myFile.print(Dezember[0]);myFile.print(".");myFile.print(Dezember[1]);myFile.print("-");myFile.print(Dezember[2]);myFile.print(".");myFile.print(Dezember[3]);myFile.print(" ");myFile.print(Dezember[4]);myFile.print(".");myFile.print(Dezember[5]);myFile.print("-");myFile.print(Dezember[6]);myFile.print(".");myFile.print(Dezember[7]);myFile.print(" ");myFile.print(Dezember[8]);myFile.print(".");myFile.print(Dezember[9]);myFile.print("-");myFile.print(Dezember[10]);myFile.print(".");myFile.print(Dezember[11]);myFile.print(" ");myFile.print(Dezember[12]);myFile.print(".");myFile.print(Dezember[13]);myFile.print("-");myFile.print(Dezember[14]);myFile.print(".");myFile.println(Dezember[15]);
22
  myFile.println(vorname);
23
  myFile.println(nachname);
24
  
25
  myFile.close();
26
}

: Bearbeitet durch User
von Nitram E. (slexx)


Lesenswert?

Keiner weiß ne Lösung? :(

von Rudolph (Gast)


Lesenswert?

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.

von Nitram E. (slexx)


Angehängte Dateien:

Lesenswert?

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?

von Joachim B. (jar)


Lesenswert?

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

: Bearbeitet durch User
von Nitram E. (slexx)


Angehängte Dateien:

Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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

von Nitram E. (slexx)


Lesenswert?

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!

von Joachim B. (jar)


Lesenswert?

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!

von Nitram E. (slexx)


Lesenswert?

> 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!

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

: Bearbeitet durch User
von Nitram E. (slexx)


Lesenswert?

>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?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

: Bearbeitet durch User
von Nitram E. (slexx)


Lesenswert?

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. :/

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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 ?

von Joachim B. (jar)


Lesenswert?

Martin T. schrieb:
> Ach so warum eine antiparallele Diode einbauen? Habe ich noch nie
> gesehen, und wozu dient diese eigentlich? Google haut da nicht viel
> raus!

wie bitte?
google Bildersuche
diode reset avr atmel

ist eigentlich oft zu sehen und auch auf dem arduino mighty 1284p Modul
http://www.ebay.de/itm/Mighty-Mini-ATMega1284p-compatible-with-Arduino-/331463717483?hash=item4d2cc6f26b:g:36YAAOSwGYVXAaiv

dient dazu den Kondensator am Reset schneller zu entladen als über den 
10k wenn VCC wegfällt!

von Nitram E. (slexx)


Lesenswert?

> wie bitte?
> google Bildersuche
> diode reset avr atmel
>
> ist eigentlich oft zu sehen und auch auf dem arduino mighty 1284p Modul
> 
http://www.ebay.de/itm/Mighty-Mini-ATMega1284p-compatible-with-Arduino-/331463717483?hash=item4d2cc6f26b:g:36YAAOSwGYVXAaiv
>
> dient dazu den Kondensator am Reset schneller zu entladen als über den
> 10k wenn VCC wegfällt!

Jetzt vertsehe ich was du meinst, ich konnte mir nur gerade nix darunter 
vorstellen. Naja man lernt nie aus wa? ;)

Reicht eine 1N4148 SMD aus?

von holger (Gast)


Lesenswert?

>> 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.

von Rudolph R. (rudolph)


Angehängte Dateien:

Lesenswert?

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...

von c-hater (Gast)


Lesenswert?

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.

von Nitram E. (slexx)


Lesenswert?

>> 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?! :)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von Nitram E. (slexx)


Lesenswert?

>  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?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von Nitram E. (slexx)


Lesenswert?

>  VCC in Ruhe lassen,  MISO von der SD-Card nicht direkt sondern über
>  10K Widerstand verbinden.

Ach so also 10k zwischen VCC und MISO richtig?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Martin T. schrieb:
> Ach so also 10k zwischen VCC und MISO richtig?

 Falsch.

 MISO-SD -- 10K -- MISO-AVR

von Joachim B. (jar)


Lesenswert?

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.

: Bearbeitet durch User
von Nitram E. (slexx)


Lesenswert?

> 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?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

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!

von Rudolph (Gast)


Lesenswert?

Martin T. schrieb:
> Ach so und vom TFT der MISO oder MOSI auch?

Siehe Schaltplan vom FT800CB...

OE für MISO wird mit CS gesteuert beim FT800CB.

von Nitram E. (slexx)


Lesenswert?

Nochmal für die nicht-schnell-checker...

SD-MISO --|10k/470|--------*
                           |----*----|1284P_MISO |
TFT-MISO--|10k/470|--------*    |    |           |
                                |    |           |
TFT-CS----|10k/470|-------------|----|1284_TFT_CS|
                                |
ISP_MISO------------------------*


Richtig?

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Martin T. schrieb:
> SD-MISO --|10k/470|--------*
>                            |----*----|1284P_MISO |
> TFT-MISO--|10k/470|--------*    |    |           |
>                                 |    |           |
> TFT-CS----|10k/470|-------------|----|1284_TFT_CS|
>                                 |
> ISP_MISO------------------------*
>
> Richtig?


 Nein.
 SD-MISO --|10k/470|--------*--------|1284P_MISO |
 TFT-MISO-------------------|

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

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!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

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.

von Nitram E. (slexx)


Lesenswert?

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
???????

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

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.

von Nitram E. (slexx)


Lesenswert?

Okay danke :) Aber die ISP wird nicht enkoppelt ja?

Und die Diode "BAT" parallel zu VCC/GND vom SD-Modul? :)

von Rudolph R. (rudolph)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

hier wird es auch so erklärt
Beitrag "Re: gekilltes Nano-Board wiederbeleben"

Carl D. schrieb:
> Diese Diode soll die Rückspeisung in den USB-Anschluß verhindern,

eine Diode vom ISP nach VCC AVR
eine Diode von Fremdeinspeisung nach VCC AVR

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.