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   1111 / 1210
(#) menyus válasza Hp41C hozzászólására (») Márc 14, 2020 /
 
Köszi, akkor törlöm a config world ok közül, bár offra van definiálva. Az Mplab ban Release re volt / van állítva.

Apropo... Új project létrehozása vagy egy régiverziós MpLab al írt project megnyitása előtt az MpLab megkérdi hogy "Absolute" vagy "Relocatable"? Én Absolute ra szoktam állítani, bár nem vágom hogy ez micsoda és miért kérdezi. Ez mi és miért van?
(#) menyus válasza Hp41C hozzászólására (») Márc 14, 2020 /
 
Na jo... a többi port sem működik. Vagy döglött ez a PIC vagy nincs órajele mert nem rezeg a quartz. Teszek bele a 12MHz es helyett 4MHz est, az tuti van. Az MCLR láb H ban van, fel van húzva tápra. Ez is kilőve. Marad a szkóp, vagy a chip csere. Lehet lejárt a PIC szavatossága a 10 év alatt vagy koronavírust kapott. Mára elegem lett belőle, köszi a segítséget mindenkinek,
(#) bbalazs_ válasza menyus hozzászólására (») Márc 14, 2020 /
 
Mekkora kondik vannak a kvarcon?
Milyen órajelforrást adtál meg a konfigban?
A reset rendesen fel van húzva?
Van másik PIC-ed?
A hozzászólás módosítva: Márc 14, 2020
(#) Hp41C válasza menyus hozzászólására (») Márc 14, 2020 /
 
4MHz -hez XT osszcillátor beállítás kell.
(#) menyus válasza bbalazs_ hozzászólására (») Márc 14, 2020 /
 
Lejjebb van a komplett kód, de 12MHz es kvarc ot használok és "_HS_OSC" nak konfigoltam. Ez szerintem rendben van. A 12MHz es kvarc lábain 22p van, de próbáltam 33p vel, 47p vel 15p vel. Semmi változás. A 4MHz eshez már XT beállítás kell ahogy Hp41C is írta. A MCLR láb most néztem, 82K val lett felhúzva. Valószínűleg benéztem, ez 8,2K akart lenni. De a 82K mellett is H ban van, 5,04V a táp és 4,75V ot mérek az MCLR lábon. Kicseréltem a 82K - t 10K ra de így sem megy. Az MCLR lábon nem változott a H szintje számottevően, 4,88V. Előtúrom a szkópot majd, csak az a padláson van dobozban valahol, most költöztem. Azt se tudom hol keressem. Másik PIC em nincsen, sőt ez a DIL40 es is a TOP oldalra lett felvarrva "SMD ként", mert lusta voltam furkálni. Vasalt "provizóre panel". De hogy ekkorát szívjak ezzel ez nonszensz... Murphy törvénye, gyorsan kell, nincs PIC másik tehát tuti hibás és hét vége van. Egy nagyfrekis (10MHz - 8GHz) frekimérővel néztem az órajelet szkóp híján de lehet az nem releváns mert ha rámérek a kavrc lábára leszakad a rezgés és nem látok semmit. Ezen a frekimérőn egy BNC s antenna van, és ezt nem erre találták ki. A BNC s szkóp mérőzsinór természetesen a szkóp mellett...
(#) Hp41C válasza menyus hozzászólására (») Márc 15, 2020 /
 
A tok minkét táp kivezetése és föld kivezetése be van kötve? Van mindkét oldalon közvetlenül a lábaknál 100nF kerámia kondenzátor? A tápfeszültség értéke meghaladja az előírt minimális értéket ill. a BOR értékét?
A fix érték kiírása mellett a B port -ra írj ki egy értéket, amit a ciklus minden lefutásánál növelsz. Így 8 eltérő periódusú négyszögjelet kellene kapnod. Ezzez a TRISB -t is 0 -val kell feltölteni.
(#) menyus válasza Hp41C hozzászólására (») Márc 15, 2020 /
 
Igen, mindkét oldali VDD és VSS lábak bekötve, a 100n sőt egy 22u is van mindkét oldalon. A tápfeszültség 5,07V nem tudom a BOR értéke mennyi, de ha jól emlékszem azt ki is kapcsoltam a konfigban. Most találtam meg a szkópot mindjárt nekiülök és talán "okosabb" leszek, legalábbis az órajel hibát ki tudom zárni. Ha van órajel akkor megpróbálok játszani a B porttal, de ha nincs akkor eleve halott az ügy. Köszi az ötletet.
(#) menyus válasza Hp41C hozzászólására (») Márc 15, 2020 /
 
Ok, egyáltalán nincs órajel. Így nem is fog menni. Cserélek kvarcot és meglátjuk. A táp viszont olyan sima mint a Balaton szélcsendben, azzal tuti nincs gond.
(#) Bakman válasza menyus hozzászólására (») Márc 15, 2020 /
 
Ritka hiba de néha megesik. Ha a tépfeszültség túl lassan fut fel, nem indul el a kontroller. Adatlapban általában le van írva, maximum mennyi idő alatt kell elérni a minimális feszültségszintet a kontroller táplábain.
(#) menyus válasza menyus hozzászólására (») Márc 15, 2020 /
 
Azt hiszem tudom mi a baj... Ezt én csesztem el. Az összes port (A - E, a PORTB is az internal pull up dacára is..)), fel van húzva 82K val VDD re, mivel hol kimenetnek hol bemenetnek lennének használva. Az F877 nél viszont a külső oszcillátor lábai nem használhatók I/O ként. Én lehet hogy azokat a lábakat is fehúztam VDD re... És ez csak akkor fog látszani ha a PIC et kiforrasztom mert az összes felhúzóellenállás a beforrasztott DIL tok alatt van. Tuti hogy ez a gáz. De mindjárt kiderül mert leszedem a tokot a panelről. Mondanom se kell, a csere (6MHz) es kvarc se rezeg... )Vajon miért..? )
(#) menyus válasza Bakman hozzászólására (») Márc 15, 2020 /
 
Köszi de szerintem nem ez lesz a baj. Sokkal egyszerűbb ennél, én voltam figyelmetlen és megszxvattam saját magam és terheltem a topicot a hülyeségem miatt. Sorry érte, már ha ez a baj. De a nyakamat teszem rá hogy igen.
(#) menyus válasza menyus hozzászólására (») Márc 15, 2020 /
 
És igen... Az OSC1 és OSC2 lábak is VDD n vannak 82k val. Ezúton elnézést kérek mindenkitől aki gondolkodott a megoldáson. Erre spec én se gondoltam és azért nem szúrtam ki kapásból mert nem látszanak a felhúzú ellenállások a tok alatt. Mindjárt lövök pár képet hogy is néz ki ez a 2 óra alatt összevart panel. Hát igen hamar munka ritkán jó, főleg ha már tervezés szinten elcseszik. De mentségemre legyen mondva a két ominózus láb mellett sorakoznak az I/O portok, én meg csak raktam befelé a pull up okat sorban és így persze nem hagytam ki a két OSC lábat sem. Még egyszer bocs.
(#) menyus válasza menyus hozzászólására (») Márc 15, 2020 /
 
A corpus delicti ami a hibát okozta.
(#) menyus hozzászólása Márc 15, 2020 / 1
 
ÉS LÁSS CSODÁT MŰKÖDIK, MÉG EGYSZER KÖSZÖNÖM MINDENKINEK.
(#) szucsistvan123 hozzászólása Márc 19, 2020 /
 
Üdv!

Ezt az 1 Bitet hogyan kellene kiküldeni I2C-n? A PIC adatlapjáben nem találok erre regisztert. Vagy hogyan lehetne ezt megoldani? 1 bitet is ki lehetne küldeni a programból?

(AD5933 és PIC24FJ256GA702)

Köszi!
(#) usane válasza szucsistvan123 hozzászólására (») Márc 19, 2020 / 1
 
Pedig nem bonyolult, csak el kellene olvasni az eszközök IIC kommunikációját. Minden slave eszközben, (régen a PIC-adatlapjában is volt, ma már nem tudom) le van írva az írás és olvasás lépésről lépésre. A 8 bites cím azzal együtt teljes, és azt a bitet attól függően állítod be, hogy írni vagy olvasni akarod a slave-t.
Tehát ha a 7 bites cím mondjuk 1100101 és írni akarod akkor 11001010-t küldesz el az alső 8 biten ami a cím plusz az írás/olvasás bit, ha olvasni akarsz akkor 11001011-t.
(#) szucsistvan123 válasza usane hozzászólására (») Márc 19, 2020 /
 
Tényleg! Köszi!
(#) enté válasza icserny hozzászólására (») Márc 24, 2020 /
 
icserni fórumtárs segítségét kérem. C nyelven szeretnék programozni. Ismerkedem a PICCOLO projekttel és megépítettem a PIC18F14K50 kísérleti áramkörét. Az élesztéshez szükséges code_examples.zip illetve a betöltőprogramok a helyi másolatok linken nem elérhetők - 404 not found. Szívességét, segítségét köszönöm!
(#) pipi válasza enté hozzászólására (») Márc 24, 2020 /
 
Hali!
Bővebben: Link Itt még tudsz mazsolázni, a weboldalba ágyazott mnták úgy látom megvannak, de a zip fájl nincs.
A hozzászólás módosítva: Márc 24, 2020
(#) benjami válasza enté hozzászólására (») Márc 24, 2020 /
 
Ha ezt keresed akkor itt van a mellékletben.
(#) szucsistvan123 hozzászólása Márc 24, 2020 /
 
Üdv!

Egy PIC24 I2C vel kommunikál egy IC-vel (AD5933) és néha lefagy a pic a küldési/fogadási folyamatkor.
Itt egy kódrészlet: (az egészet hasonlóan írtam, de ha kell kirakom az egész kódot)
  1. I2C_Write(unsigned char I2C_Address, unsigned char REG_Address, unsigned char Data){
  2.    
  3.     I2C1CONLbits.SEN = 1;                               //start allapot inditas
  4.     while(I2C1CONLbits.SEN);                            //varunk mig lezajlik
  5.     I2C1TRN = ((I2C_Address << 1) & 0xFE);              //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  6.     while(I2C1STATbits.TRSTAT);                         //varunk amig elkuldi (8 bits + ACK)
  7.     I2C1TRN = REG_Address;                              //regiszter cime
  8.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik a kuldes (8 bits + ACK)
  9.     I2C1TRN = Data;                                     //kikuldjuk az adatot
  10.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik (8 bits + ACK)
  11.     I2C1CONLbits.PEN = 1;                               //stop allapot
  12.     while(I2C1CONLbits.PEN);                            //varunk a stop feltetel vegeig
  13.      
  14. } //END i2c_Write


Néha egy ujraindítás után el sem indul. Szerintetek mit ronthatok el?

Köszi!
A hozzászólás módosítva: Márc 24, 2020
(#) icserny válasza enté hozzászólására (») Márc 24, 2020 /
 
Bocs, átraktam a saját webhelyemre (mert a régi tárhelyemet megszüntették), de még nem volt időm "honosítani" az új helyen. A 404-es hibát adó linkeket át kell szerkeszteni a böngésző URL sávjában: az esca.atomki.hu helyett cspista.hu kell, valahogy így:

Piccolo projekt, Példaprogramok, Letöltés (ZIP)
PICula projekt, Példaprogramok, Letöltés (ZIP)
PICkwik projekt, Példaprogramok, Letölés (ZIP)
(#) icserny válasza szucsistvan123 hozzászólására (») Márc 24, 2020 / 1
 
A 4. sor után ki kellene várni, amíg a SEN bit visszabillen nullába!
Lásd itt, a 00071. sorban.
(#) szucsistvan123 válasza icserny hozzászólására (») Márc 24, 2020 /
 
Üdv!

A 4 sor várja ki. Addig fut a while míg a SEN = 1.
Vagy hogy érted? Ugyan az van ott is mint amit linkeltél.
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Márc 24, 2020 /
 
Bemásolom az összes küldéssel/fogadással kapcsolatos függvényt:
  1. void I2C_Initialize(){
  2.    
  3.     I2C1BRG = 0x0030;                                   //Baud rate beallitas 100kHz
  4.     I2C1STAT = 0x0000;                                  //status register nullazas
  5.     I2C1CONL = 0x0000;
  6.     I2C1CONLbits.DISSLW = 1;                            //configuracios bitek beallitasa
  7.     I2C1CONLbits.SCLREL = 1;
  8.     I2C1CONLbits.I2CEN = 1;
  9.     I2C1CONLbits.DISSLW = 1;
  10.     I2C1CONLbits.RCEN = 0;
  11.     I2C1CONH = 0x0000;
  12.    
  13. } //END Initilalize
  14.  
  15. void I2C_Set_Address_Pointer(unsigned char I2C_Address, unsigned char Dest_Address){
  16.    
  17.     I2C1CONLbits.SEN = 1;                               //start allapot inditas
  18.     while(I2C1CONLbits.SEN);                            //varunk mig lezajlik
  19.     I2C1TRN = ((I2C_Address << 1) & 0xFE);              //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  20.     while(I2C1STATbits.TRSTAT);                         //varunk amig elkuldi (8 bits + ACK)
  21.     I2C1TRN = AddressPointer;                           //pointer command (0xB0)
  22.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik a kuldes (8 bits + ACK)
  23.     I2C1TRN = Dest_Address;                             //a cim amire mutatni kell
  24.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik a kuldes (8 bits + ACK)
  25.     I2C1CONLbits.PEN = 1;                               //stop allapot
  26.     while(I2C1CONLbits.PEN);                            //varunk a stop feltetel vegeig
  27.    
  28. }//END Set_Address_Pointer
  29.  
  30. void I2C_Write(unsigned char I2C_Address, unsigned char REG_Address, unsigned char Data){
  31.    
  32.     I2C1CONLbits.SEN = 1;                               //start allapot inditas
  33.     while(I2C1CONLbits.SEN);                            //varunk mig lezajlik
  34.     I2C1TRN = ((I2C_Address << 1) & 0xFE);              //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  35.     while(I2C1STATbits.TRSTAT);                         //varunk amig elkuldi (8 bits + ACK)
  36.     I2C1TRN = REG_Address;                              //regiszter cime
  37.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik a kuldes (8 bits + ACK)
  38.     I2C1TRN = Data;                                     //kikuldjuk az adatot
  39.     while(I2C1STATbits.TRSTAT);                         //varunk mig befejezodik (8 bits + ACK)
  40.     I2C1CONLbits.PEN = 1;                               //stop allapot
  41.     while(I2C1CONLbits.PEN);                            //varunk a stop feltetel vegeig
  42.      
  43. } //END i2c_Write
  44.  
  45. uint8_t I2C_Read(unsigned char I2C_Address, unsigned char REG_Address){  //az address pointerrel beallitott cimen levo 8 bitet olvas ki
  46.    
  47.     unsigned char Data;
  48.    
  49.     I2C_Set_Address_Pointer(I2C_Address, REG_Address);  //a kezdocim beallitasa
  50.    
  51.     I2C1CONLbits.SEN = 1;                               //start allapot inditas
  52.     while(I2C1CONLbits.SEN);                            //varunk mig lezajlik
  53.     I2C1TRN = ((I2C_Address << 1) | 0x01);              //kikuldjuk a cimet az utolso bit 1 -> olvasas utasitas
  54.     while(I2C1STATbits.TRSTAT);                         //varunk amig elkuldi (8 bits + ACK)
  55.     I2C1CONLbits.RCEN = 1;                              //Receive enable
  56.     //while(!I2C1STATbits.RBF);                         //Varunt amig a buffer ures majd ha jott adat tovabblepunk
  57.     Data = I2C1RCV;                                     //adatbuffer kiolvasas
  58.     while(I2C1CONL & 0x001F);                           //varunk amig az utolso 5 bit u nem lesz (SEN, RSEN, PEN, RCEN, ACKEN) ha 0 nincs semmilyen muvelet
  59.     I2C1CONLbits.ACKDT = 1;                             //NACK kuldes beallitva
  60.     I2C1CONLbits.ACKEN = 1;                             //NACK elküldése - torlodik
  61.     while(I2C1CONLbits.ACKEN);                          //varunk a nyugtazas vegeig
  62.     I2C1CONLbits.PEN = 1;                               //stop allapot
  63.     while(I2C1CONL & 0x001F);                           //varunk a stop feltetel vegeig
  64.    
  65.     return Data;
  66. }//end I2C_Read
  67.  
  68. void I2C_Block_Write(unsigned char I2C_Address, unsigned char Start_Reg_Address, unsigned char Num_of_Bytes, uint32_t Data){
  69.    
  70.     unsigned char index;
  71.     unsigned char shift;
  72.    
  73.     shift = 8 * (Num_of_Bytes - 1);
  74.    
  75.     I2C_Set_Address_Pointer(I2C_Address, Start_Reg_Address);    //a kezdocim beallitasa
  76.    
  77.     I2C1CONLbits.SEN = 1;                                       //start allapot inditas
  78.     while(I2C1CONLbits.SEN);                                    //varunk mig lezajlik
  79.     I2C1TRN = (I2C_Address << 1) & 0xFE;                        //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  80.     while(I2C1STATbits.TRSTAT);                                 //varunk amig elkuldi (8 bits + ACK)
  81.     I2C1TRN = BlockWrite;                                       //Block write code (0xA0)
  82.     while(I2C1STATbits.TRSTAT);                                 //varunk mig befejezodik a kuldes (8 bits + ACK)
  83.     I2C1TRN = Num_of_Bytes;                                     //a kuldeni kivant adatbajtok szama
  84.     while(I2C1STATbits.TRSTAT);                                 //varunk mig befejezodik (8 bits + ACK)
  85.    
  86.     for(index = 0; index < Num_of_Bytes; index ++){             //adatbajtok kuldese
  87.        
  88.         I2C1TRN = (Data >> shift);                              //shifteles  alacsonyabb mem. cim MSB, magasabb mem. cim LSB
  89.         shift -= 8;                                             //Eltolas csokkentese -> masik bajt kovetkezik.
  90.         while(I2C1STATbits.TRSTAT);                             //varunk mig befejezodik (8 bits + ACK)
  91.        
  92.     }//END for
  93.    
  94.     I2C1CONLbits.PEN = 1;                                       //stop allapot
  95.     while(I2C1CONLbits.PEN);                                    //varunk a stop feltetel vegeig
  96. }//END Block_Write
  97.  
  98. uint16_t I2C_Block_Read(unsigned char I2C_Address, unsigned char Start_Reg_Address, unsigned char Num_of_Bytes){
  99.    
  100.     uint16_t Data;
  101.    
  102.     I2C_Set_Address_Pointer(I2C_Address, Start_Reg_Address);    //a kezdocim beallitasa
  103.    
  104.     I2C1CONLbits.SEN = 1;                                       //start allapot inditas
  105.     while(I2C1CONLbits.SEN);                                    //varunk mig lezajlik
  106.     I2C1TRN = ((I2C_Address << 1) & 0xFE);                      //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  107.     while(I2C1STATbits.TRSTAT);                                 //varunk amig elkuldi (8 bits + ACK)
  108.     I2C1TRN = BolckRead;                                        //block read code (0xA1)
  109.     while(I2C1STATbits.TRSTAT);                                 //varunk mig befejezodik a kuldes (8 bits + ACK)
  110.     I2C1TRN = Num_of_Bytes;                                     //elkuldjuk az olvasni kivant bajtok szamt
  111.     while(I2C1STATbits.TRSTAT);                                 //varunk mig befejezodik a kuldes (8 bits + ACK)
  112.     I2C1CONLbits.RSEN = 1;                                      //restart allapot beallitasa
  113.     while(I2C1CONLbits.RSEN);                                   //varunk mig veget er a restart allapot
  114.     I2C1TRN = ((I2C_Address << 1) | 0x01);                      //az i2c cimet ujra kikuldjuk olvasas utasitassal
  115.     while(I2C1STATbits.TRSTAT);                                 //varunk amig elkuldi (8 bits + ACK)
  116.    
  117.     I2C1CONLbits.RCEN = 1;                                      //Receive enable
  118.     while(!I2C1STATbits.RBF);                                   //tovabblepunk ha a van bejovo adat
  119.     Data = I2C1RCV;                                             //beletesszuk egy tombbe
  120.     I2C1CONLbits.ACKDT = 0;                                     //NACK kuldes beallitva
  121.     I2C1CONLbits.ACKEN = 1;                                     //NACK elküldése
  122.     while(I2C1CONLbits.ACKEN);                                  //varunk mig vege a nyugtazasnak
  123.     Data = Data << 8;                                           //Elso adatot eltoljuk a felso 8 bitre
  124.     I2C1CONLbits.RCEN = 1;                                      //engedelyezzuk az adat fogadasat
  125.     while(!I2C1STATbits.RBF);                                   //varunk amig nem erkezik valami
  126.     Data |= I2C1RCV;                                            //adatot kimasoljuk a regiszterbol
  127.     while(I2C1CONL & 0x001F);                                   //varunk amig az utolso 5 bit 0 nem lesz (SEN, RSEN, PEN, RCEN, ACKEN) ha 0 nincs semmilyen muvelet
  128.     I2C1CONLbits.ACKDT = 1;                                     //NACK kuldes beallitva
  129.     I2C1CONLbits.ACKEN = 1;                                     //NACK elküldése
  130.     while(I2C1CONLbits.ACKEN);                                  //varunk a nyugtazas vegeig
  131.     I2C1CONLbits.PEN = 1;                                       //stop allapot
  132.     while(I2C1CONLbits.PEN);                                    //varunk a stop feltetel vegeig
  133.    
  134.     return Data;  
  135. }//END Block_Read
(#) Tasznka válasza szucsistvan123 hozzászólására (») Márc 24, 2020 / 1
 
Csinálj 1 gyors 10-200ms környéki timert,és együtt figyeld a statbitekkel,így nem fogsz beragadni a while-oknál.Ha még változót is beraksz,akkor még a hiba helye is meglesz.
(#) Hp41C válasza szucsistvan123 hozzászólására (») Márc 24, 2020 / 1
 
Ha a PIC elegendően magas frekvenciájú órajelről jár az is megtörténhet, hogy az olyan ciklusok, mint a SEN megszűnésére váró ciklus le sem fut. Az első kiolvasásnál még SEN bitet 0 értékkel olvassa ki, a program tovább lép, pedig a start bit kiadása még el sem kezdődött. A megszakítási állapot bitet kellene használni, azok csak akkor billennek 1 értékre, ha az indított működés véget ért. A következő indítása előtt természetesen törölni kell.
  1. IFSxbits.MI2CyIF=0;
  2.     I2C1CONLbits.SEN = 1;                               //start allapot inditas
  3.     while(IFSxbits.MI2CyIF);                             //varunk mig lezajlik
  4.     IFSxbits.MI2CyIF=0;
  5.     I2C1TRN = ((I2C_Address << 1) & 0xFE);  //kikuldjuk a cimet az utolso bit 0 -> irasi utasitas
  6.     while(IFSxbits.MI2CyIF);                             //varunk amig elkuldi (8 bits
  7. ...
(#) szucsistvan123 válasza Hp41C hozzászólására (») Márc 24, 2020 /
 
Köszönöm a válaszokat!
A PIC 20MHz kvarckristállyal megy.
Ha az utolsó nem jön be kipróbálom a Timeres megoldást.

A TRSTAT bitet is átugorhatja a program? Azt is érdemes lenne kicserélni interrupt flagre?
Erről hol lehet olvasni egyébbként? Errata?
(#) icserny válasza szucsistvan123 hozzászólására (») Márc 25, 2020 /
 
Bocs, csak figyelmetlenül olvastam.
A hozzászólás módosítva: Márc 25, 2020
(#) Hp41C válasza szucsistvan123 hozzászólására (») Márc 25, 2020 /
 
Már a PIC16, PIC18 családban is ezt a megoldást javasolják. A művelet indítása és a status bit beállása közötti maximális időről bölcsen hallgatnak az adatlapok.
Következő: »»   1111 / 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