adrian_pic Postat Septembrie 17, 2010 Partajează Postat Septembrie 17, 2010 Am un 18F2455 si un convertor A/D ADS1210.Am urmatorul cod:#include #include #include #include #include #pragma config PLLDIV = 5 // need 1 for 4MHz xtal#pragma config FOSC = HS#pragma config WDT = OFF // no watchdog#pragma config LVP = OFF // LVP MUST be off#pragma config BOR = ON // brown out reset#pragma config MCLRE = ON // MCLR in use (so 10k to +5v essential)//#pragma config PWRT = ON // power up timer on#pragma config PBADEN = OFF // disable PORTB a/d converterunsigned char wrptr[10] = " ";void main(void){ADCON1 = 0x0F;TRISCbits.TRISC6 = 1;OpenSPI(SPI_FOSC_64, MODE_00, SMPMID); /aici nu stiu daca este bine Mode_00 sau trebuie Mode_01 si SMPMID while(1){if(PORTCbits.RC6==0) { WriteSPI(0xC0); while(PORTCbits.RC6==1); while (DataRdySPI()==0); getsSPI( wrptr,3 ); }Delay1KTCYx(50); }CloseSPI();}si nu reusesc sa citesc rezultatul conversie din A/D. ADS1210 este slave si are quartz de 10MHz iar pic-ul are quartz de 20MHz. Am rezistenta de pull_down pe prinul RB1.Orice sfat este binevenit!Multumesc Link spre comentariu
Liviu M Postat Septembrie 17, 2010 Partajează Postat Septembrie 17, 2010 Si cam ce compilator folosesti? Link spre comentariu
adrian_pic Postat Septembrie 17, 2010 Autor Partajează Postat Septembrie 17, 2010 MPLAB ver 8.33 + C18 (varianta pentru studenti 120 zile freesau ceva de genul asta, dar nu-i problema ca pe alt computer si dupa ce mi-a expirat am putut sa o folosesc). Prima problema pe care nu o pot rezolva este modul in care deschid comunicatia SPI:OpenSPI(SPI_FOSC_64, MODE_01, SMPMID);In unele parti am vazut pe net MODE_00 in altele MODE_01 si la mine nu am nimic clar care sa imi indice ce anume sa aleg, plusSMPMID sau SMPEND.Apoi in documentatie nu am gasit clar spus ca pot sa folosesc quartz in mod slave. In mode MASTER sunt citeva scheme, dar in mod SLAVE nu este o schema clara macar. Tot asa nu-mi dau seama la PIC daca doar pe CLK trebuie rezistenta de pull_down sau si pe celelate doua SDI SDO. Pe net sunt multi care au avut probleme si au cerut help dar nu am gasit macar o schema clara sa stiu ca doar la soft este o hiba. Link spre comentariu
Liviu M Postat Septembrie 18, 2010 Partajează Postat Septembrie 18, 2010 Daca am inteles bine ce scrie la uChip, C18 "free" e full functional pe perioada de test, dupa care functioneaza dar fara optimizari.Din pacate nu-l folosesc, nu stiu cu ce se mananca functiile alea pentru comunicatia prin spi, da' ma gandesc ca un manual ar trebui sa aiba. Sau un help, ceva?Pe de alta parte, nu-ti inteleg exact problemele cu partea hardware.La un PIC slave configurarea (hard) a ceasului de "sistem" se face fix ca la un PIC master (asta cu master si slave are importanta la comunicatie, nu la configurarea circuitului). Asa ca, daca vrei sa folosesti PIC-ul cu quarz, atunci il poti folosi linistit, cu conditia sa programezi corespunzator bitii de configurare (HS parca).La SPI nu stiu sa fie nevoie de vreo rezistenta de pull-up/pull-down. Esti sigur ca trebuie? Si pinul la care ai pus rezistenta e SCK, nu CLK, nu?Oricum, nu stiu de ce trebuie sa gasesti pe Internet informatiile respective. Cel mai simplu le cauti in Data-Sheet.Referitor la neclaritatea ta cu modul, in documentatia de la 18F452 (numai pe asta o am, da' nu cred ca difera prea tare), registrul SSPCON1 scrie bit 3-0 SSPM3:SSPM0: Synchronous Serial Port Mode Select bits0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled0011 = SPI Master mode, clock = TMR2 output/20010 = SPI Master mode, clock = FOSC/640001 = SPI Master mode, clock = FOSC/160000 = SPI Master mode, clock = FOSC/4 Din partea cu SPI_FOSC_64 din codul tau, OpenSPI(SPI_FOSC_64, MODE_00, SMPMID); /aici nu stiu daca este bine Mode_00 sau trebuie Mode_01 si SMPMIDeu as zice ca la mod ar trebui sa ai MODE_02, da' asta e, cum spuneam, numai o presupunere. Mai multe ar trebui sa afli din documentatiile PIC-ului si a compilerului. Inceraca sa te uiti in fisierul p18f2455.h (ala din #include - pe undeva prin subdirectorul include al C18 ) si sa incerci sa te prinzi la ce se refera MODE_xx alea si cam cu ce se potriveste din configurarile din Data Sheet. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum