Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   729 / 1210
(#) KaiserA válasza Hp41C hozzászólására (») Nov 25, 2015 /
 
Szia!
Annyi volt csak a gond, hogy miután elküldtem az ACK-t utánna kellett egy IdleI2C1 parancs, ami azt hiszem azt jelenti, hogy várakozás amíg befejezi. ugyanez kell a NotACK után is. A működő kód:
  1. void main()
  2.                         {
  3.                
  4.                         SYSTEMConfig(SYS_FREQ, SYS_CFG_ALL); //Inicializalas
  5.                         init();
  6.                
  7.  
  8.                         while(1)
  9.                                         {
  10.                                         StartI2C1();
  11.                                         IdleI2C1();
  12.                                         MasterWriteI2C1(SLAVE_ADDRESS & 0xFE);
  13.                                         MasterWriteI2C1(0x05);
  14.                                         StartI2C1();
  15.                                         IdleI2C1();
  16.                                         MasterWriteI2C1(SLAVE_ADDRESS | 0x01);
  17.                                         IdleI2C1();
  18.                                         fogadottadat = MasterReadI2C1();
  19.                                         AckI2C1();
  20.                                         IdleI2C1();
  21.                                         fogadottadat2 = MasterReadI2C1();
  22.                                         NotAckI2C1();
  23.                                         IdleI2C1();
  24.                                         StopI2C1();
  25.                                         IdleI2C1();
  26.                                                        
  27.                                         fogadottadat = fogadottadat & 0x1F; //Clear flag bits
  28.                                         if ((fogadottadat & 0x10) == 0x10){ //TA < 0°C
  29.                                                 fogadottadat = fogadottadat & 0x0F; //Clear SIGN
  30.                                                 Temperature = 256.0 - ((float)(fogadottadat *16 + fogadottadat2) / 16.0);
  31.                                                 }else //TA >= 0°C
  32.                                                
  33.                                                 Temperature =  ( fogadottadat * 16 + (float)fogadottadat2 / 16 ) ;
  34.                                                 sprintf(felsosor,"TEMP: %2.2f    " ,Temperature);
  35.                                                 sprintf(alsosor,"TEMP: %lu     " ,fogadottadat2);
  36.                                        
  37.                                        
  38.                                                 LCDWriteString("homerseklet",1,1);
  39.                                                 LCDWriteString(felsosor ,2,1);


Köszönöm a segítséged!
(#) KaiserA válasza Hp41C hozzászólására (») Nov 25, 2015 /
 
Szia!

Azt szeretném megkérdzni, hogy nincs véletlen olyan minta kódod, ami kitesz a kijelzőre: 00:00:00
számokat, ora:perc:mp mondjuk, és megnyomok egy gombot és elkezd számlálni, mint egy stopper.
Ha szükséges bemásolhatom az egész mcp9808-os main kodomat, vagy ha igy jó. akkor oké.
A hozzászólás módosítva: Nov 25, 2015
(#) siemenstaurus válasza sonajkniz hozzászólására (») Nov 25, 2015 /
 
Tiszta! Igaz, köszönöm szépen! Valahogy szétszedem.
(#) Hp41C válasza KaiserA hozzászólására (») Nov 26, 2015 /
 
PIC32 -re nincs.
(#) KaiserA hozzászólása Nov 27, 2015 /
 
Azt szeretném emgkérdezni, hogy milyen programsort kell írjak, hogy az Rtc elkezdjen nekem számlálni. Itt tartok. Köszönöm
  1. void main()
  2.                         {
  3.                          SYSTEMConfigPerformance(72000000L);
  4.                 //      SYSTEMConfig(SYS_FREQ, SYS_CFG_ALL); //Inicializalas
  5.                         init();
  6.                         RtccInit();
  7.                         while(1)
  8.                                
  9.                                 {
  10.        
  11.                         RtccEnable();
  12.                         while(RtccGetClkStat()!=RTCC_CLK_ON);
  13.                         RtccOpen(0x10073000, 0x07011602, 0);
  14.  
  15.                        
  16.  
  17.                         rtccTime tm;
  18.                         tm.sec=0x15; tm.min=0x30; tm.hour=01;
  19.                         rtccDate dt;
  20.                         dt.wday=0;dt.mday=0x15;dt.mon=0x10;dt.year=0x07;
  21.                         RtccSetTimeDate(tm.l, dt.l);
  22.  
  23.                         mRTCCSetIntPriority(1);
  24.                         mRTCCClearIntFlag();
  25.                         INTEnableSystemSingleVectoredInt();
  26.                         mRTCCIntEnable(1);
  27.                        
  28.        
  29.                                         sprintf(felsosor,"%d     ", tm);
  30.                                         LCDWriteString(felsosor,1,1);
  31.                                         DelayMS(20);
  32.                                         }
  33.                        
  34.  
  35.                         }
(#) icserny válasza KaiserA hozzászólására (») Nov 27, 2015 /
 
A Microchip PIC32MX Peripheral Library / RTCC help szerint csupán ennyi a beindítás:

  1. RtccInit();            // init the RTCC
  2. while(RtccGetClkStat()!=RTCC_CLK_ON);    // wait for the SOSC to be actually running
  3. RtccSetTimeDate(0x10073000, 0x07011602); // time is MSb: hour, min, sec, rsvd.
  4.                                          //date is MSb: year, mon, mday, wday.
  5.                                          // please note that the rsvd field has to be 0 in the time field!
(#) KaiserA válasza icserny hozzászólására (») Nov 27, 2015 /
 
Köszönöm a segítséget!

Már csak azt nem tudom hogy hogy jelnítsem meg a kijelzön.
(#) Hp41C válasza KaiserA hozzászólására (») Nov 27, 2015 /
 
Az idő / dátum adatok az RTC -ben BCD kódolású, így nincs nehéz feladatod. pl az órát úgy tudod kiírni, hogy veszed az RTCTIME regiszter 31..28 bitjeiből (HR10) képzett 4 bites számot, hozzáadsz 0x30 - at (a '0' karakter ASCII kódját) és kiírod az LCD -re. Aztán veszed az RTCTIME regiszter 27..24 bitjeiből (HR01) képzett 4 bites számot, hozzáadsz 0x30 - at (a '0' karakter ASCII kódját) és kiírod az LCD -re. Eljátszod a percre (MIN10 a 23..20 és MIN01 a 19..16 biteken) és a másodpercre (SEC10 a 15..12 és SEC01 a 11..8 biteken). A dátumot teljesen hasontóan lehet kiíratni, az évszázad (sajnos) nincs benne a RTCDATE regiszterben.
(#) KaiserA válasza Hp41C hozzászólására (») Nov 27, 2015 /
 
Köszönöm!
Megtaláltam a PIC32referenci manueljében. Annyiban még kaphatok egy kis segítségett, hogy hogyan kell parancsokkal végrehajtani a regiszeterbitekből a kivételt.

Köszönöm szépen!
A hozzászólás módosítva: Nov 27, 2015
(#) icserny válasza KaiserA hozzászólására (») Nov 27, 2015 /
 
Ha már úgyis a Microchip perifériakönyvtárat használod, ne matasd a regisztereket, hanem használd a könyvtári függvényt!

Deklarációs részbe:
  1. rtccTime    tm;            // time structure
  2. rtccDate    dt;            // date structure


Kiolvasás:
  1. // we can read the time and date in a single operation
  2. RtccGetTimeDate(&tm, &dt);


tm.sec, tm.min, tm.hour tartalmazza az időt, dt.mday, dt.mon, dt.year pedig a dátumot. BCD kódolással vannak benne az adatok, az évszázad nincs benne...

Bővebb info: Microchip-PIC32MX-Peripheral-Library.chm RTCC szekciója.
(#) SKY hozzászólása Nov 28, 2015 /
 
Sziasztok!
A 18F4550-ben a PWM1 úgy működik, hogy a PR2 regiszterrel és a TIMER2 előosztóval meghatározom a PWM frekvenciát és utána ettől függetlenül a CCPR1L+CCP1CON 2 bitjével (10bit) szabadon választom a kitöltést 0 és 100 között, ezzel az 1024 lépéssel?
A PR2 a CCPR1L és a CCP1CON regiszter is írható anélkül, hogy kikapcsolnánk előtte a PWM-et?

18F4550 (146. oldal)

Válaszotokat köszönöm!
(#) Pali79 válasza SKY hozzászólására (») Nov 28, 2015 / 1
 
Igen és nem csak ebben a PIC-ben, a legtöbben így működik.
(#) kissattila88 hozzászólása Nov 28, 2015 /
 
Szeretném meg tanulni a pic programozási nyelvet valaki tudna nekem küldeni le írást hogy melyik utasítás mire való meg hogy épül fel egy pic-es program.
(#) cross51 válasza kissattila88 hozzászólására (») Nov 28, 2015 /
 
Idézet:
„hogy melyik utasítás mire való meg hogy épül fel egy pic-es program”


Én ebből arra gondolok, hogy assembly nyelvre gondolsz, de nem írtad le pontosan, hogy melyik nyelvre is gondolsz. A piccolo projekt-ben van C és assembly, de ha assembly-ben szeretnél programozni az összes PIC(kivéve a 32 bitesek, ott máshol található) dokumentációjában le van írva az utasítás készlet és hogy mi mit csinál.
De még létezik jó pár nyelv amikben lehet PIC-et programozni. Erről van elképzelés milyen nyelvben szeretnél programozni?
(#) icserny válasza kissattila88 hozzászólására (») Nov 28, 2015 /
 
A PIC mikrovezérlő termékcsalád sokgenerációs, melynek generációi (PIC10, PIC12/16, PIC18, PIC24/dspIC30/dsPIC33, PIC32) felépítésükben, működésükben és utasításkészletükben jelentősen különböznek. Melyikre vagy kíváncsi?
(#) Pali79 válasza kissattila88 hozzászólására (») Nov 28, 2015 /
 
(#) icserny válasza Pali79 hozzászólására (») Nov 28, 2015 /
 
Pontosabban: PIC12/16 assembly alapok!
(#) Pali79 válasza icserny hozzászólására (») Nov 28, 2015 /
 
Lehet, de a 31. oldaltól vannak benne olyan utasítások amik inkább a 18F-ekben vannak. Bár lehet, hogy a bővített architecturás 16F1xxx és 12F1xxx is tudják.
(#) icserny válasza Pali79 hozzászólására (») Nov 28, 2015 /
 
Lehet, hogy PIC18-ről is van benne vázlatosan szó (bár a fejéc végig PIC16-ról szól), de PIC18-hoz inkább a PIC18 MCU Family Reference kézikönyvet ajánlanám.

PIC24/dsPIC30/dsPIC33-hoz pedig a dsPIC30F/33F Programmer’s Reference Manual-t ajánlom (ennek a belinkeltnél van újabb kiadása is, de ebben a régiben használhatóbb a tartalomjegyzék)
(#) SKY hozzászólása Nov 28, 2015 /
 
Mi az SPI-nek az elindító mechanizmusa master módban, vagy azzal indul miután aktív a modul, hogy beleírok az SSPBUF regiszterbe?
Mi a megfelelő beállítás a CKP, CKE és SMP biteknek?
Először SSPSTAT beállítása, utána SSPCON1 és modul engedélyezés, majd írás az SSPBUF regiszterbe? Ezután már csak az SSPSTAT BF-bitjét (buffer teli?) kell figyelni, ha teli, akkor adat elvétel, majd törlés és megint írás az SSPBUF regiszterbe?
(#) Pali79 válasza icserny hozzászólására (») Nov 28, 2015 /
 
A hivatalos Microchip doksi biztos jobb, de a másik vitathatatlan előnye, hogy magyarul van.
(#) kissattila88 válasza cross51 hozzászólására (») Nov 28, 2015 /
 
Nekem a legkönnyebben meg érthető kellene.
(#) sonajkniz válasza kissattila88 hozzászólására (») Nov 28, 2015 /
 
Ojjé!
Ebből megint vita lessz!
Megpróbálok tárgyilagos lenni. Ha nem akarod tudni, mit is csinál voltaképp a processzor, csak minél előbbi sikerélményre vágysz, válaszd a C-t. Ha távlati terveidben olyasmi szerepel, hogy nagyon gyors lefutású kis hardverigényű programokat írj, akkor bizony assembly kell.
Az egyszerű programok, (ledvillogtatás, futófény) assemblyben sem bonyolultak. Viszont alapszinten már fogalmat alkodhatsz a PIC működéséről. A C és társai olyan programnyelvek, melyekben mindent elkészítettek, és könyvtárakba helyeztek profi programozók. Neked szinte annyi a dolgod, hogy kitaláld, mit akarsz csinálni, és megtanuld, ehhez milyen függvények kellenek, és ezeket hogyan kapcsold össze. Az assemly a processzor nyelve. Ezen ért. Tehát a legjobb programokat asm.-ben lehet megírni. Viszont sokkalta munkaigényesebb.
A döntés a tiéd!
(#) SKY válasza SKY hozzászólására (») Nov 28, 2015 /
 
Sziasztok! Hogyan lehetne életre kelteni a 18F4550 hardveres SPI communikációját (MCP4822-vel)? Úgy látom az alábbi programsor hatására nem mutatkozik semmilyen életjel az SPI lábakon. Van valami, amivel indítható az adat kiküldés?
  1. SSPSTAT=0b11000000; //sample bit (csak a 7. és 6. bit írható)
  2. SSPCON1=0b00100001; //ütközés, X, mssp en, clk pol, 3-0:freki
  3. LATB3_bit=0; //csip aktív
  4. delay_us(1);
  5. SSPBUF=0b10111000;      //Bdac, 1X gain, felso 4 bit= 1000
  6. if(SSPSTAT.BF!=1) //sdi nincs használatban, de beírja a bufferbe a nullát és jelzi?
  7. {SSPBUF=0;}                            //alsó 8bit=0 kuldes
  8. if(SSPSTAT.BF!=1){LATB3_bit=1;}                       //!CS off
  9. delay_us(1);
  10. LATA4_bit=0;                       //dac buffer áttöltés (!LDAC)
(#) icserny válasza SKY hozzászólására (») Nov 28, 2015 / 1
 
  1. A kiírás nálam ennyi:
  2.  
  3. /**
  4.  * Kiír egy bájtot a kimeneti bufferbe, kivárja, amíg az átvitel lezajlik
  5.  * és a bejövő adatbájttal tér vissza. A PIC18F4550 Errata szerint az átvitel
  6.  * végét jelző BF bitet nem szabad közvetlenül vizsgálni, ezért helyette a
  7.  * programmegszakítás jelzőbitet vizsgáljuk. Szintén az Errata ajánlja, hogy
  8.  * adatküldés előtt olvassuk ki az SSPBUF regisztert, ami egyúttal törli a BF bitet.
  9.  * Ha elmulasztjuk a BF bit törlését, akkor a következő beolvasott adat nem másolódik át
  10.  * az SSPBUF regiszterbe!  
  11.  * \param data a kiküldeni kívánt adat
  12.  * \return a beolvasott adat
  13.  */
  14. uint8 spi_io( uint8 data) {
  15. uint8 tmp;  
  16.   PIR1bits.SSPIF = 0;                   // törli az interrupt jelzőbitet
  17.   SSPCON1bits.WCOL = 0;                 // törli az esetleges írás ütközés hibajelzőt
  18.   tmp = SSPBUF;                         // törli a BF jelzőbitet
  19.   SSPBUF = data;                        // kirakja a kimenő adatot az SSPBUF regiszterbe
  20.   while( !PIR1bits.SSPIF );             // megvárjuk a busz ciklus végét
  21.   return (SSPBUF);                      // a vett bájttal térünk vissza
  22. }


Természetesen az spi_io() meghívása előtt az eszközkiválasztó vonalat ("chip sleect") aktiválni kell, az spi_io() után pedig inaktiválni kell.

Az inicializálás már komplikáltabb. Például:

  1. //-- Az SPI1 modul konfigurálása 3 MHz-es, Mode_00 master módba.
  2.   spi_init(CKP_ACTIVE_HIGH |                //aktív állapotban az órajel magas szintű
  3.            MASTER_FOSC_16,                  //SPI órajel FOSC/16 (3 MHz)
  4.            SPI_CKE_ON |                     //kimenet aktív/inaktív átmenetkor (CKE=1)
  5.            SPI_SMP_END);                    //Mintavételezés az adatkimeneti idő végén



A makrók és az inicializáló függvény így néz ki:

  1. /* Makrók az SSPCON1 regiszter beállításához  */
  2. #define   SSPENB           0b00100000  /* Enable serial port and configures SCK, SDO, SDI */
  3. #define   CKP_ACTIVE_LOW   0b00010000  /* Inaktív állapotban az órajel magas, aktív állapotban alacsony szintű */
  4. #define   CKP_ACTIVE_HIGH  0b00000000  /* Inaktív állapotban az órajel alacsony, aktív állapotban magas szintű */
  5.  
  6. #define   MASTER_FOSC_4    0b00000000  /* SPI Master mód, órajel = Fosc/4 */
  7. #define   MASTER_FOSC_16   0b00000001  /* SPI Master mód, órajel = Fosc/16 */
  8. #define   MASTER_FOSC_64   0b00000010  /* SPI Master mód, órajel = Fosc/64 */
  9. #define   MASTER_TMR2      0b00000011  /* SPI Master mód, órajel = TMR2 output/2 */
  10. #define   SLAVE_SSON       0b00000100  /* SPI Slave  mód, /SS bemenet engedélyezve */
  11. #define   SLAVE_SSOFF      0b00000101  /* SPI Slave  mód, /SS bemenet letiltva */
  12.  
  13.  
  14.  
  15. /* Makrók az SSPSTAT regiszter beállításához */
  16. #define  SPI_SMP_END       0b10000000  /* A bejövő adatot az adatkimeneti idő végén mintavételezzük */
  17. #define  SPI_SMP_MID       0b00000000  /* A bejövő adatot az adatkimeneti idő közepén mintavételezzük */
  18.  
  19. #define  SPI_CKE_ON        0b01000000  /* Az átvitel az órajel aktív állapotból inaktívba váltásakor történik */
  20. #define  SPI_CKE_OFF       0b00000000  /* Az átvitel az órajel inaktív állapotból aktívba váltásakor történik */
  21.  
  22. /** Az SPI modul konfigurálása és engedélyezése az spi_mode  
  23.  * paraméterrel megadott módban és adatsebességgel. A paraméterek összeállításához
  24.  * a piccolo_spi.h állományban definiált makrókat használhatjuk.
  25.  * \param spi_mode az \em SSPCON1 regiszterbe írandó adat
  26.  * \param spi_busmode az \em SSPSTAT regiszterbe írandó adat
  27.  */
  28. void spi_init(uint8 spi_mode, uint8 spi_busmode) {
  29.   SSPSTAT = spi_busmode;
  30.   SSPCON1 = spi_mode;
  31.   switch(spi_mode & 0x0F) {
  32.     case 5:                             //-- SLAVE mód, SS bemenet letiltva
  33.       SPI_SCK = 1;                      //SCK bemenet legyen
  34.       break;
  35.     case 4:                             //-- SLAVE mód, SS bemenet engedélyezve
  36.       SPI_SCK = 1;                      //SCK bemenet legyen
  37.       SPI_SS  = 1;                      //SS  bemenet legyen
  38.       break;
  39.     default:                            //-- MASTER módok
  40.       SPI_SCK = 0;                      //SCK kimenet legyen
  41.       break;
  42.   }
  43.   SPI_SDI = 1;                          //SDI legyen bemenet;
  44.   SPI_SDO = 0;                          //SDO legyen kimenet
  45.      
  46.   SSPCON1 |= SSPENB;                    // az MSSP egység engedélyezése
  47. }


Megjegyzés: SP_SCK, SPI_SDI, SPI_SDO a megfelelő adatirány beállító bitek. Nálam pl.:

  1. #define SPI_SDI             TRISBbits.TRISB0
  2. #define SPI_SCK             TRISBbits.TRISB1
  3. #define SPI_SDO             TRISCbits.TRISC7
  4. #define SPI_SS              TRISAbits.TRISA5


Remélem, kimerítő volt a válasz. Bővebb info: PICCOLO projekt, SPI soros periféria illesztő
A hozzászólás módosítva: Nov 28, 2015
(#) SKY válasza icserny hozzászólására (») Nov 28, 2015 /
 
Szia! Köszönöm a terjedelmes választ! Én mikroC környezetben próbálkozok még, de ha jól vettem ki a leírásból az alábbi soroknak már működnie kellene, sajnos a DAC még mindig nem ad semmilyen jelet, de majd holnap ránézek többcsatornás szkóppal az SPI vonalakra.
  1. //spi inicializálás
  2. SSPSTAT.CKE=1;
  3. SSPCON1=0b00000010;        //ütköz, X, mssp en, clk polarity, 3-0:mode select:0010 f/64
  4. TRISC7_bit=0;              //SDO kimenet
  5. TRISB1_bit=0;              //SCK kimenet
  6. SSPCON1.SSPEN=1;           //spi modul engedélyezés
  7.                          
  8. LATB3_bit=0;               //chip enable
  9. //spi adatküldés
  10. PIR1.SSPIF=0;                   //int. jelzőbit törlés
  11. SSPCON1.WCOL=0;            //írás ütközés törlés
  12. dc1=SSPBUF;
  13. SSPBUF=0b10111000;
  14. while(!SSPIF);             //átvitelre várás
  15. //16 bites küldés második fele
  16. PIR1.SSPIF=0;                   //int. jelzőbit törlés
  17. SSPCON1.WCOL=0;            //írás ütközés törlés
  18. dc1=SSPBUF;
  19. SSPBUF=0x00;
  20. while(!SSPIF);             //átvitelre várás
  21.  
  22.  LATB3_bit=1;                  //chip select off
  23. LATA4_bit=0;                  //!LDAC adat betölt
  24. delay_us(10);
  25. LATA4_bit=1;


Az 1011 1000 0000 0000 értéket küldeném el, ami a B csatornán 1X erősítéssel a 12 bites felbontás felére 0x800 állítaná a kimeneti jelet. !SHDN =1 Azt hiszem a csatornák függetlenül állíthatók egymástól.
A 16 bites adatküldésnél érzékel valamit az eszköz a bájtok közötti szünetből, vagy a 8 bites küldő függvény többszöri meghívásával ugyan úgy működik a 16, 24 bites küldés/olvasás is?
(#) icserny válasza SKY hozzászólására (») Nov 29, 2015 /
 
Idézet:
„A 16 bites adatküldésnél érzékel valamit az eszköz a bájtok közötti szünetből?”
Elvileg nem, hiszen az órajelek szinkronizálnak, s az eszközt csak az érdekli, hogy #CS alacsony állapotában 16 db. órajel érkezzen.

Az oszcilloszkóp elővétele helyett (vagy előtt) egy szoftveres (bitbang) küldéssel is megpróbálkozhatnál!
(#) Hp41C válasza SKY hozzászólására (») Nov 29, 2015 /
 
A CS lábat vezérled?
(#) icserny válasza Hp41C hozzászólására (») Nov 29, 2015 /
 
Idézet:
„A CS lábat vezérled?”

A kódban szerepelnek LATB3_bit=0; és LATB3_bit=1; parancsok, csak a TRSB3_bit = 0; beállítást nem látom a belinkelt kódrészletben.
(#) SKY válasza icserny hozzászólására (») Nov 29, 2015 /
 
Az adatirányok be vannak állítva, a CS is vezérelve van. Az alábbi szkópábra látható a programsor hatására.
A sárga az SDO, a lila az SCK. Az SCK jelben látható legelőször egy nagyon keskeny impulzus is, gondolom itt már valami hiba van, ennek a többire kellene hasonlítania.

Ennek az útmutatónak az 54. oldalán az MPLAB source fájlaihoz létrehoz egy lcd mappát és amit beletesz az hol található? Megvannak ezek az előre megírt függvények az MPLAB feltelepített könyvtáraiban valahol? chipcad_tutorial

*Most látom, hogy a chip select csak akkor alacsony, amikor a legelső keskeny órajelimpulzus megjelenik és az sdo egyetlen impulzusának végéig tart.
A hozzászólás módosítva: Nov 29, 2015

SDC15596.JPG
    
Következő: »»   729 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem