Sari la conținut
ELFORUM - Forumul electronistilor

Mcu pic16f877a si Card Sd (MMC)


Drk_alien

Postări Recomandate

Salutare....

Am inceput sa imi fac licenta si am ajuns la partea in care vreau sa creez un fisier txt pe un card sd.

Folosesc un Mcu PIC16F877a si un modul dinacesta: Posted Image , in care folosesc un card de 16 mb Panasonic .

Ca si compilator folosesc MicroC pro v5.4.0 .

 

Am nevoie de un cod cat mai simplu ca sa initializez cardul, sa scriu si sa citesc date.

Am gasit in help-ul programului un exemplu, dar e pt pic 18f4525 , deci nu se impaca librariile.

 

Ma poate ajuta cineva care a folosit un astfel de modul?....va multumesc.

Link spre comentariu
  • Răspunsuri 30
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Drk_alien

    16

  • Liviu M

    10

  • deejay2k1

    1

  • nooob64

    1

Top autori în acest subiect

Imagini postate

  • 2 săptămâni mai târziu...

Bun, mi-am cumparat un pic18f4550 si l-am montat pe aceeasi placa de dezvoltare avand in vedere ca are aceeasi configuratie de pini cu 877a.Am schimbat in proiect modelul pic-ului si am recompilat programul.Din pacate nu se intampla nimik :jytuiyu .Am testat pic-ul si se pare ca merge daca ii fac un simplu test pe porti, dar nu merge daca incerc sa afisez ceva pe display-ul de nokia 5510 .O alta problema ar fi ca uneori imi da eroare de scriere la adresa 0X0000. L-am cuparat fiindca doresc sa folosesc modulul pt card de mai sus, dar mai intai doream sa testez programul pe care deja il am.Daca schimb microcontrollerul si il pun inapoi pe 877a si recompilez, merge.Intrebarea mea este...care ar fi problema pt care nu merge?...configurarea bitilor?Sunt configurati asa: 0C000 1E1F 8300 0081 C00F E00F 400F.(18f4550) 2fcf. (877a)

Link spre comentariu

Cand am zis ca aceeasi pini m-am referit la aceeasi configuratie a pinilor...pe babeste: al treilea pin de pe partea stanga e A4 si la un MCU si la celalalt.Apoi la configuratia cuvantului de biti ma refeream la aceasta poza.Eu cred ca am explicat destul de bine....e posibil sa fi citit tu printre randuri.Sper sa imi dai un raspuns daca il ai.Mersi.

post-64462-139829554288_thumb.png

Link spre comentariu

Din cate stiu eu, nu e suficient ce ai facut. Mai sunt si alti parametri care se configureaza diferit (alti registrii pentru controlul porturilor analogice, de exemplu).

Link spre comentariu

Stai ca nu inteleg.E posibil sa spui tu ceva bine...dar ideea e ca, chiar daca as face o alta placa de dezvoltare tot asa as configura pinii.Pt ca se potrivesc.Cand am recompilat programul, in setare am specificat modelul noului microcontroller...deci nu vad de ce nu ar merge.E posibil configuratia cuvantului de biti...dar daca e asta problema...cum o rezolv?Pentru ca pana acum am testat pe 877a si cand vad ca acesta are neajunsuri...am trecut pe 4550 .Chiar asa de dificila sa fie trecerea?

Link spre comentariu

Descarca si tu data-sheeturile ambelor si compara, de exemplu, ADCON1. Cum porturile, cand e cazul, sunt configurate la reset ca analog, configurarea pentru 877 nu se potriveste la 4550.Si cred ca sunt mai multe locuri care trebuie adaptate - iei codul la mana si, pentru porturile folosite compari data-sheeturile si modifici unde e cazul.Si ca sa fie treaba mai interesanta, poti folosi directivele #if defined /#endif ca sa mearga cu ambele tipuri de procesoare.

Link spre comentariu
  • 1 lună mai târziu...

Salutare,

AM revenit cu problema mea. :jytuiyu . Am rezolvat-o si m-am lovit de alta. :rade:

Cum am rezolvat-o? Simplu...am folosit Latch. Adica in loc de sbit sce at RB7_bit; am sbit sce at LATB7_bit;. Bun pana aici.

 

Acum am incercat sa scriu un fisier txt pe un card sd Panasonic de 16 mb.Dar nu reusesc nicicum.

Am urmat exemplul de aici http://www.mikroe.com/download/eng/documents/compilers/mikrobasic/pro/pic/help/mmc_library.htm , chiar daca am folosit codul interg nu reusesc nicicum, am simplificat codul si am ramas cu codul de mai jos, tot nu merge.

 

// MMC module connectionssbit Mmc_Chip_Select           at LATC0_bit;  // for writing to output pin always use latch (PIC18 family)sbit Mmc_Chip_Select_Direction at TRISC0_bit;// eof MMC module connectionsconst LINE_LEN = 43;char err_txt[20]       = "FAT16 not found";char file_contents[LINE_LEN] = "XX MMC/SD FAT16 library by Anton Rieckertn";char           filename[14] = "MIKRO00x.TXT";          // File namesunsigned short loop, loop2;unsigned long  i, size;char           Buffer[512];// Creates new file and writes some data to itvoid M_Create_New_File() {  filename[7] = 'A';  Mmc_Fat_Set_File_Date(2010, 4, 19, 9, 0, 0); // Set file date & time info  Mmc_Fat_Assign(&filename, 0xA0);          // Find existing file or create a new one  Mmc_Fat_Rewrite();                        // To clear file and start with new data  for(loop = 1; loop <= 99; loop++) {    UART1_Write('.');    file_contents[0] = loop / 10 + 48;    file_contents[1] = loop % 10 + 48;    Mmc_Fat_Write(file_contents, LINE_LEN-1);   // write data to the assigned file  }}// Main. Uncomment the function(s) to test the desired operation(s)void main() {  ADCON1 |= 0x0F;                  // Configure AN pins as digital  CMCON  |= 7;                     // Turn off comparators  UART1_Init(19200);  Delay_ms(10);  SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);  if (Mmc_Fat_Init() == 0)   {    // reinitialize spi at higher speed    SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);    //--- Test routines. Uncomment them one-by-one to test certain features    M_Create_New_File();  }}
M-as bucura daca cineva si-ar face un pic de timp sa se uite putin peste chestia asta si poate primesc niste sfaturi care ma pot ajuta...legaturile cu modulul cumparat de pe ebay de care am zis in primul post le-am facut asa: ( acum folosesc pic 18F 4550).

Posted Image

Link spre comentariu

Mai controleaza pinii, ca eu cred ca nu ai conectat bine cardul la pic.Pinii SPI sunt RC7, RB0 & RB1.Daca te uiti in SPI library support la mikroc, o sa vezi ca mentioneaza portul SPI hard al PICului.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări