www.mikrocontroller.net

Forum: Compiler & IDEs SDCARD Am Software SPI???


Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ist es möglich an den Ports A0-A3 eine SD card Anzuschalten???


Port A0=CLK
Port A1=CS
Port A2=DI
Port A3=DO

wie schalte ich den Software SPI ???

Am Hardware SPI PortB hängt eine Nokia Display deswegen benötige ich
ein Software SPI.

Hat jemand einen Source dafür???

danke

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Am Hardware SPI PortB hängt eine Nokia Display deswegen
> benötige ich ein Software SPI

Warum das?  SPI ist ein multi-slave bus.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bedeutet das für mich???

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass Du mehrere SPI devices an den selben Bus hängen kannst. Welches
angesprochen wird, kannst Du über die CS (chip select) Leitung(en)
bestimmen. Die einfach an normale IO pins am Controller anschliessen.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also richtig verstanden

greife ich parallel an den Port B wo das Display angeschaltet ist auch
die SD Card ab.

Den CS Port setzte ich für die SD Card  z.B an Port A0.

Habe ich das richtig verstanden????

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komme nicht weiter mit SDCARD und ATMEGA 128 und OSFT SPI.

Hard SPI fällt aus da ich ein Display 3000 Board habe und nicht and die
Ports B Hardware SPI rankomme.


habe mal von ullrich radig die mmc lib ausprobiert und dort kann man ja
den Software SPI einschalten =0

Port =A

Pins zugeordnet aber leider kommt immer wieder Karte nicht erkannt
Programm bleibt in der Schleife

while (mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein
Fehler aufgetreten
  {
Print("Karte nicht erkannt");
  }

Print("Karte erkannt");


Die mmc.c ist unverändert.
die mmc.h sieht so aus
/*###################################################################### 
#################
Connect AVR to MMC/SD

Copyright (C) 2004 Ulrich Radig
######################################################################## 
###############*/

#ifndef MMC_H
 #define MMC_H

//If use MMC-Card then set to 1
#define  USE_MMC       1       //EXPERIMENTAL NOT READY!!!!

#define SPI_Mode      0    //1 = Hardware SPI | 0 = Software SPI
//#define SPI_Mode      0

#define MMC_Write      PORTA  //Port an der die MMC/SD-Karte 
angeschlossen
ist also des SPI
#define MMC_Read      PINA
#define MMC_Direction_REG  DDRA

#if defined (_AVR_ATmega128_)
  #define SPI_DI        3    //Port Pin an dem Data Output der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_DO        2    //Port Pin an dem Data Input der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_Clock      0    //Port Pin an dem die Clock der 
MMC/SD-Karte
angeschlossen ist (clk)
  #define MMC_Chip_Select    1    //Port Pin an dem Chip Select der
MMC/SD-Karte angeschlossen ist
  #define SPI_SS        5    //Nicht Benutz muß aber definiert werden
#endif

#if defined (_AVR_ATmega32_)
  #define SPI_DI        6    //Port Pin an dem Data Output der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_DO        5    //Port Pin an dem Data Input der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_Clock      7    //Port Pin an dem die Clock der 
MMC/SD-Karte
angeschlossen ist (clk)
  #define MMC_Chip_Select    3    //Port Pin an dem Chip Select der
MMC/SD-Karte angeschlossen ist
  #define SPI_SS        4    //Nicht Benutz muß aber definiert werden
#endif

//Prototypes
inline unsigned char Read_Byte_MMC(void);

inline void Write_Byte_MMC(unsigned char);

extern void MMC_Read_Block(unsigned char *,unsigned char *,unsigned
int);

extern unsigned char mmc_init(void);

extern unsigned char mmc_read_sector (unsigned long,unsigned char *);

extern unsigned char mmc_write_sector (unsigned long,unsigned char *);

extern unsigned char Write_Command_MMC (unsigned char *);

extern unsigned char Read_CSD_MMC (unsigned char *);

extern unsigned char Read_CID_MMC (unsigned char *);

//set MMC_Chip_Select to high (MMC/SD-Karte Inaktiv)
#define MMC_Disable() MMC_Write|= (1<<MMC_Chip_Select);

//set MMC_Chip_Select to low (MMC/SD-Karte Aktiv)
#define MMC_Enable() MMC_Write&=~(1<<MMC_Chip_Select);

#define nop()  _asm__ __volatile_ ("nop" ::)

#endif //_MMC_H_


Der MEGA läuft mit externen Quarz 16MHZ.

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hans Peter,

beim Software SPI kann ich Dir keine Hilfe geben, aber warum denkst Du
nicht nochmal über das nach, was Thorsten geschrieben hat?

SPI ist ein BUS, d.h. Du kannst mehrere Slaves (das Display und die
Karte) an die selben Pins parallel anschließen. Über Chip Select wählst
Du dann den Slave aus...

Oder habe ich jetzt irgendwas falsch verstanden?!

Gruß, Nils

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die angegebene Beschaltung
>Port A0=CLK
>Port A1=CS
>Port A2=DI
>Port A3=DO
und die weiter unten angegebenen Sourcen benutzt kann das nichts
werden,
da du es falsch konfiguriert hast.
Ich verstehe aber auch nicht, warum du nicht das HardwareSPI benutzt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er schrob irgendwas, dass er nicht an den SPI-Bus rankäme.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe versucht die SD CARD an den Hardware SPI anzuschalten.
Zwei LED sollen mir sagen ob die karte erkannt wurde oder nicht.

es leuchtet kurz die nichterkannt led und geht nach ca 0,5 s aus.
danach leuchet die erkannt led.

Ich glaube jetzt gehts.

Nur kommt jetzt mein zweites Prob.

Das LCD Display was auch am SPI hängt seitdem wird es nicht
initialisiert.

Wenn ich die routine mmc_init ausklammerer dann ghet auch wieder mein
display.


while ( mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein
Fehler aufgetreten
    {
PORTLEDC &= ~(1<<LEDFAULT);

    }

PORTLEDC |= (1<<LEDFAULT);          // LED PORTPIN "1" LED LOW ACTIV
PORTLEDC &= ~(1<<LEDOK);
lcdinit();
clsdsp(weiss);



hier die display init von der nokia 6100 c +h

void lcdinit (void)
{

  SPIDDR=(1<<SDA)|(1<<CLK)|(1<<CS)|(1<<RESET); //Port-Direction Setup



  int i;

  CS0
  SDA0
  CLK1

  RESET1
  RESET0
  waitms(10);
  RESET1

  CLK1
  SDA1
  CLK1

  sendCMD(0x01);
  waitms(10);
  sendCMD(0x11);
  waitms(40);
  sendCMD(0x29);
  waitms(40);
  sendCMD(0x3a);
  sendData(0x02);
  sendCMD(0x20);
  sendCMD(0x36);
  sendData(0x00);
  sendCMD(0x2d);

//FARBTABELLE 254
unsigned char lcdinitd[]={0x00 , 0x02 , 0x04 , 0x06 , 0x09 , 0x0B ,
0x0D , 0x0F , 0x00 , 0x02 , 0x04 , 0x06 , 0x09 , 0x0B , 0x0D , 0x0F ,
0x00 , 0x04 , 0x0B , 0x0F};

for (i=0;i<20;i++)
{
sendData(lcdinitd[i]);

}
//DISPLAY LÖSCHEN
  clsdsp(weiss);

}


void clsdsp(unsigned char color)
{
lcd_box(0,131,0,131,color);
}


void lcd_box(int lx1,int lx2,int ly1,int ly2,unsigned char color)
{
Lcd_window(lx1,lx2,ly1,ly2);
int px;
int py;
int pixel;
int i;
   px = lx2 - lx1;
   px++;
   py = ly2 - ly1;
   py++;
   pixel = px * py;
   for (i= 0;i<=pixel;i++)
   {
   sendData(color);

   }



}


//Fenster AdressBereich setzen
void Lcd_window(int lx1,int lx2,int ly1,int ly2)
{  sendCMD(0x2A);
   sendData(lx1);
   sendData(lx2);
   sendCMD(0x2B);
   sendData(ly1);
   sendData(ly2);
   sendCMD(0x2C);

}


void shiftBits(byte b) {

  CLK0
  if ((b&128)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&64)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&32)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&16)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&8)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&4)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&2)!=0) SDA1 else SDA0
  CLK1

  CLK0
  if ((b&1)!=0) SDA1 else SDA0
  CLK1

}


//send data
void sendData(byte data) {

  CS0
  CLK0
  SDA1                                                 //1 for param
  CLK1

  shiftBits(data);
}

//send cmd
void sendCMD(byte data) {

  CS0
  CLK0
  SDA0                                                 //1 for cmd
  CLK1

  shiftBits(data);
}


habe bei senCMD und sendDATA ein CS0 eingesetzt Chip select ist das
richtig???


Wie muß man rangehen um das entsprechende gerät anzusteuern.

Mal die SD CARD mal das Display.


Das display ist paralel an die SDCARD angebunden.

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also nochmal ganz einfach, über die CS-Leitung des jeweiligen Gerätes
wählst du aus WELCHES gerät du ansprechen willst. Das andere CS-Leitung
sollte dabei INAKTIV sein. Dein "Code" legt sehr nahe das du die CS
Leitung des
Display's aktivierst aber nicht wieder deaktivierst. Wenn du das bei
der MMC vorher genauso gemacht hast, ist es kein Wunder das es nicht
funktioniert.
BTW: dein Code ist nichtssagend bzw. es fehlen sämtliche Teile die ein
Verständnis fördern würden,poste entweder den ganzen Code oder auch
sämtliche Makros die du verwendest.

Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So ich habe mal die ganzen sources beigelegt

Ich hoffe man kommt zurecht damit.

Mein Problem ist in der SPI init.

habe es dort dokumentiert

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schon geschrieben du kannst nicht GLEICHZEITIG auf beide Geräte
zugreifen sondern musst immer das, welches du benutzen willst, vor dem
Zugriff mit der jeweiligen CS Leitung aktivieren und danach wieder
DEAKTIVIEREN. Für das Display ist dies nicht erkennbar.
BTW: Wenn du willst das andere mit deinem Programcode ohne Schaltung
zurechtkommen,schreib hin ob das jeweilige Signal High oder Lowaktiv
ist.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Also ich komme absolut niucht weiter CS High oder LOW bringt alles
nichts.


SPCR=(1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1 << CPOL) | (1 << CPHA)  | (1 <<
SPIE);

Die Ursache liegt bei 1<<SPE   //Enable SPI.

Wenn ich es rausnehme aus SPCR dann geht das display wenn ich zuvor die
CS des Displays auf low setze.

aber wenn ich danach die CS des Displays wieder auf hight setzte und
die CS der SDCARD wird die SDCARD nicht angesprochen LEDS bleiben aus.

Wenn ich in SPCR die 1<<SPE mit eingebe und wieder das gleiche mache

dann wird das Display nicht initialisiert aber die SDCARD.

kann es sein das das Display nicht Master Slave tauglich ist???

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme nicht an das du den Code selber geschrieben hast, wenn du
schon fremden Code verwendest solltest du ihn auch verstehen. Die
Display ansteuerung ist in Software geschrieben mit "Pinwackeln"
die MMC ansteuerung die du versuchst ist über die
Hardwarespischnittstelle.
Wenn du also die Hardwarespischnittstelle anschaltest geht nur die MMC
sonst nur das Display. Du wirst dies nicht über die gleichen Pins
machen können!

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genaus das Meine ich am Anfang meiner Frage.

Deshalnb würde ich gerne die MMC über Software SPI Steuern.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit SOftware SPI gehts gar nicht auch mit dem Beispiel Source von
Ullrich Radig.

SPI Mode auf 0 für Software SPI

Port A0=CLK
Port A1=CS
Port A2=DI
Port A3=DO

Karte wird nicht gefunden.

Habe wieder die SD an den Hardware SPI angeschlossen


MOSI=B2 auf Display Eingabg und SDCard Pin 2
MISO=B3 nicht auf Display nur auf SDCard pin 7
CLK=B1 auf Display und SDCard pin 5
SS = B0 nicht angeschlossen
CSDisplay = B5 auf Display
CSSDCard = A1 auf SDCard Pin1
Reset =B6 auf Display


habe mal das display ausen vor gelassen um nur die MMC anzusteuern.
CS vom Display auf High.
PORTB|=(1<<5);


Wenn ich jetzt in meinen Terminal schaue kommt folgendes


Karte nicht gefundenKarte gefundena 1f dd d1 31 e7 9b 9f 7b 9d 62 56 ce
e 4b cb
Directory

Cluster = cfd7 DirA = ab Size=    16059 FileName = çåhÿɾäM.O«
Cluster = 14f3 DirA = 2f Size=    -3829 FileName = ¹ŽÝ:ZÇÜS.Ý\<
Cluster = bf7c DirA = ee Size=     4451 FileName = ñ}¯¾ÈÅ}.CnK
Cluster = fde4 DirA = 9b Size=    -2107 FileName = 2Ûºÿ¼þý.vK‹
Cluster = f9a8 DirA = 4f Size=    24531 FileName = ­:Íy÷¾.³^^
Cluster = c700 DirA = c3 Size=      215 FileName = d[g²›~/A.~r
Cluster = 7dae DirA = 29 Size=    24377 FileName = +7šà’½øO.µØ
Cluster = 7edc DirA = 2a Size=   -14389 FileName = Zÿû†é§ÿñ.÷¸o
Cluster = 5671 DirA = f0 Size=   -16859 FileName = Ǖýÿ¥sÎ.[qC
Cluster = 3bfe DirA = d6 Size=    -6557 FileName = þä{ÁÏ.ܽK
Cluster = ffb4 DirA = fb Size=     -217 FileName = ÷Õ}ûWÛÿ.óo­
Cluster = f3dc DirA = 58 Size=   -18565 FileName = Oû¾Çž‚Ö.ޏj
Cluster = edea DirA = b0 Size=    -2058 FileName = ïsȲ³—Òî.÷?á
Cluster = d747 DirA = 65 Size=    30575 FileName = —†ìÙn~Õ.Pÿ×
Cluster = 2bf5 DirA = 60 Size=    31444 FileName = Í<;fçßì.—°‡
Cluster = be6e DirA = 2e Size=   -10083 FileName = Í<;fçßì....
Cluster = cfd7 DirA = ab Size=    16059 FileName = çåhÿɾäM.O«
Cluster = 14f3 DirA = 2f Size=    -3829 FileName = ¹ŽÝ:ZÇÜS.Ý\<
Cluster = bf7c DirA = ee Size=     4451 FileName = ñ}¯¾ÈÅ}.CnK
Cluster = fde4 DirA = 9b Size=    -2107 FileName = 2Ûºÿ¼þý.vK‹
Cluster = f9a8 DirA = 4f Size=    24531 FileName = ­:Íy÷¾.³^^

Directory Ende

FERTIG!!


Normalerweise ist die SDcard leer(frisch foramtiert mit FAT16.

was hat das zu bedeuten.

Source ist die von Ullrich radig 2.5 1:1 übernommen. Nur die Ports
Angepasst.


#ifndef MMC_H
 #define MMC_H

#include "typedefs.h"
#include "main.h"

#define SPI_Mode      1    //1 = Hardware SPI | 0 = Software SPI
//#define SPI_Mode      0

#define MMC_Write      PORTB  //Port an der die MMC/SD-Karte 
angeschlossen
ist also des SPI
#define MMC_Write1      PORTA  //Port an der die MMC/SD-Karte 
angeschlossen
ist also des SPI

#define MMC_Read      PINB
#define MMC_Direction_REG  DDRB
#define MMC_Direction_REG1  DDRA

#if defined (_AVR_ATmega128_)
  #define SPI_DI        3    //Port Pin an dem Data Output der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_DO        2    //Port Pin an dem Data Input der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_Clock      1    //Port Pin an dem die Clock der 
MMC/SD-Karte
angeschlossen ist (clk)
  #define MMC_Chip_Select    1    //Port Pin an dem Chip Select der
MMC/SD-Karte angeschlossen ist
  #define SPI_SS        0    //Nicht Benutz muß aber definiert werden
#endif

#if defined (_AVR_ATmega32_)
  #define SPI_DI        6    //Port Pin an dem Data Output der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_DO        5    //Port Pin an dem Data Input der 
MMC/SD-Karte
angeschlossen ist
  #define SPI_Clock      7    //Port Pin an dem die Clock der 
MMC/SD-Karte
angeschlossen ist (clk)
  #define MMC_Chip_Select    3    //Port Pin an dem Chip Select der
MMC/SD-Karte angeschlossen ist
  #define SPI_SS        4    //Nicht Benutz muß aber definiert werden
#endif

//Prototypes
inline U08 mmc_read_byte(void);

inline void mmc_write_byte(U08);

extern void mmc_read_block(U08 *,U08 *,U16);

extern U08 mmc_init(void);

extern U08 mmc_read_sector (U32,U08 *);

extern U08 mmc_write_sector (U32,U08 *);

extern U08 mmc_write_command (U08 *);

extern U08 mmc_read_csd (U08 *);

extern U08 mmc_read_cid (U08 *);

//set MMC_Chip_Select to high (MMC/SD-Karte Inaktiv)
#define MMC_Disable() MMC_Write1|= (1<<MMC_Chip_Select);

//set MMC_Chip_Select to low (MMC/SD-Karte Aktiv)
#define MMC_Enable() MMC_Write1&=~(1<<MMC_Chip_Select);

#define nop()  _asm__ __volatile_ ("nop" ::)

#endif //_MMC_H_


SPI buslänge ca 3cm.(SDCARD->ATMEGA128.

Warum zeigt er mir nicht im Terminal das es keine Verzeichnisse gibt???

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Deshalnb würde ich gerne die MMC über Software SPI Steuern.
dann mach es doch...
Wenn du fremden Code benutzt, musst du dich auch damit
auseinandersetzen und ihn verstehen und richtig konfigurieren. So wie
du es gemacht hast
ist es falsch konfiguriert. Ich würde vorschlagen du zeichnest dir
einen Schaltplan und gehst die konfigurationsdatei Schritt für Schritt
durch
und setzt die Parameter richtig. Wenn du willst das dir jemand hilft
setze den Schaltplan ins Forum. Lies dir die Dokumentation durch und
wenn du da Verständnisprobleme hast lies noch andere Dokumentation.
Wenn es dann immer noch Probleme gibt, stell die Fragen im Forum.
Eine Frage wie
Was bedeutet das für mich???
zeigt sehr deutlich das du dich mit der Problematik noch nicht
auseinandergesetzt hast. Der Thread erweckt sehr den Anschein das du
fremden Code genommen hast, diesen zusammengestöpselt hast,es nicht
funktioniert hat und du jetzt erwartest das irgendjemand es zum
funktionieren bringt.
DU bist dieser irgendjemand, es ist natürlich sehr ungünstig wenn du
die Antworten nicht verstehst.

Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wieso falsch konfiguriert???

Auf der Seite von AVR DOS gibt es eine Shematic die Zeigt wo dei SDCARd
angeschaltet wird dieses habe ich auch gemacht.

Mein Mega 128 ist ein Board von Display 3000 D62.

Dort hängt am SPI PortB standartmäßig ein Display dran.

Parallel dazu habe ich die SDCARD so wie es im Netzt zu finden ist.

Ich habe die Schaltung geprüft und stimmt mit dem von AVR DOS überein.

Das Board besitz einen Levelshifter (5V>3V 3V>5V). das heist ich kann
direkt ohne Spannungsteiler an die Pins.

MOSI habe ich direkt an das Beinchen des 128Mega gelötet B3.

Wenn man schon schreibt das es falsch konfiguriert ist dann bitte auch
warum.

Wenn ich die Source von Ullrich Radig nehme steht ja man muß nur die
Ports anpassen was kann daran verkehrt sein.

Beim Display genau das gleiche.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach endlich mal einen Schaltplan, schau dir an an welche Pins du das
einzelne angeschlossen hast und welche Pins in der Konfigurationsdatei
angegeben sind für clk di do.

Das was du aus dem Netz ziehst ist jeweils Code für diesen Schaltplan.
Dein Display mit GPIO Pins angesteuert deine MMC mit SPI das wird
nichts zusammen!!!

Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal so wie es angeschlossen ist.

Der Levelshifter ist nicht eingezeichnet.

Pin B3 ist direkt mit dem Pin 7 der SD angeschlossen.

So wie im Schaltplan von Ullrich radig der mit dem Spannungsteilern
ohne Transistoren.

Ich hoffe es hilft.

Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube du hast recht das Display wird mit Software angesteuert und
ist aber am SPI Hardware Ports angeschlossen.

Nur habe ich auch die Lib von APATECH probiert nur da geht das display
nicht wird nicht initialisiert.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum probierst du noch weitere Libs aus statt das was du hast auf
deinen Fall anzupassen?
1. Display und MMC am gleichen Port Hardware SPI
dazu müsstest du die Ansteuerung des Displays und der MMC verstehen
sowie SPI und mindestens die Ansteuerung des Displays neuschreiben.
2. MMC an HardwareSPI Display in Software
Dazu muestest du das Display an andere Pins anhängen die MMC an den SPI
Port den das fkt. ja schon. Änderungen an der Displayansteuerung sind
notwendeig halten sich aber im Rahmen.
3. Display bleibt wo es ist MMC an andere Portpins, anpassung der
Software von der MMC. Das hast du zwar schon probiert allerdings falsch
konfiguriert.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Display lässt sich nicht an andere Ports anschalten da es ein Fertiges
Modul ist.


Warum habe ich dei Ports falsch konfiguriert wo steht das???

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau dir mal in der Konfigurationsdatei des mmc codes DI und DO an.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du das meinst das DO und DI vertauscht seien könnte habe ich schon
probiert bringt nichts.

Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal die Anschaltung


Ist vieleicht der MISO der Fehler weil er direkt am Port B3 hängt 5Volt
LEvel.Muß er etwa auch 3 Volt Level haben????

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum hängt die MMC am SPI Port? Ich denke du hast dort das Display und
wir haben doch schon festgestellt das das Display und MMC nicht auf den
gleichen PINs liegen können. Mach doch bitte mal einen kompletten
Schaltplan so wie du es beschaltet hast und sag welche Variante du
haben willst.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der Hardware SPI und MMC funktionieren jetzt prima das Ergebnis aus
dem Hyperterminal

Karte gefunden0 2d 0 32 13 59 83 c9 f6 d9 cf 80 16 40 0 33
Directory

Cluster =    3 DirA = 20 Size=       10 FileName = MMC.TXT

Directory Ende


File Found!!

test hallo


das sieht soweit gut aus.

Jetzt muß nur noch das Display in den Hardware SPI versetzt werden.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jetzt muß nur noch das Display in den Hardware SPI versetzt werden.
viel spass beim umschreiben des Programmcodes des Displays.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe es geschafft das Dispaly über SPI Anzusteuern leiderist ein
Hacken dran es ist ziemlich lahm ich kann zuschauen wie es pixel für
pixel setzt oder löscht.Mit der Software Routine gings blitzschnell
hatz das Auge nicht bemerkt.

Kann es mit dem SPI Timing zusammenhängen?????

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hans Peter,

ich weiß das Thema ist schon Uralt, vielleicht schaust du ja aber doch 
ab und zu rein. Ich habe das selbe Problem mit dem D62 Board vom selben 
Hersteller.
Wie hast du es schlussendlich gelößt?

Beste Grüße
Markus

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.