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   1145 / 1203
(#) vladcepes hozzászólása Jan 4, 2021 /
 
Sziasztok!
Van egy Pic12F629 hozzá a hex file(ilyen hó esést imitáló),egy nyomógombbal állítható milyen formában fussanak a led fények. Van benne vagy 20 program.Nekem csak vagy 4 tetszik belőle,hogyan tudnám megcsinálni hogy csak az a 4 maradjon? A többit kitörölni? Megnyitni meg nyitottam egy (Hex Editor-ral) de nem tudom melyikeket kéne törölni,vagy nem ilyen egyszerű?
Válaszokat köszönöm!
(#) Bakman válasza vladcepes hozzászólására (») Jan 4, 2021 /
 
Ettől jóval összetettebb a feladat. Az eredeti forráskód nincs meg?
(#) vladcepes válasza Bakman hozzászólására (») Jan 4, 2021 /
 
De meg van.
(#) Bakman válasza vladcepes hozzászólására (») Jan 4, 2021 /
 
Remek! Hol?
(#) vladcepes válasza Bakman hozzászólására (») Jan 4, 2021 /
 
(#) Bakman válasza vladcepes hozzászólására (») Jan 4, 2021 /
 
Ez nem a forrásfájl, csak az abból készült hex. Anélkül enyhén szólva is igen nehéz dolgot kérsz, ráadásul nem sok fórumozó tudja véghezvinni a feladatot.
(#) nedudgi válasza vladcepes hozzászólására (») Jan 4, 2021 /
 
Ha megépítetted a hardvert, és működik mind a húsz effekt, add meg a sorszámát azoknak, amelyek kellenek. 5 percem van rá, garancia nélkül.
Szerintem 15 körül van a programok száma.
A hozzászólás módosítva: Jan 4, 2021
(#) vladcepes válasza nedudgi hozzászólására (») Jan 4, 2021 /
 
Megépítettem még karácsonykor.Most meg néztem vagy tízszer(szerintem neked van igazad-csak mire végig mentem rajta,hogy melyik tetszik és melyik nem már nem bírtam követni) úgy néz ki tényleg 15 van. 1-3-8-11-14-15 annyira nem sürgős,majd ha ráérsz.
Előre is köszönöm!
(#) vladcepes válasza Bakman hozzászólására (») Jan 4, 2021 /
 
Én azt hittem ez a forrásfájl.Akkor a készült hex,böl kivehető e az amit szeretnék?. Nyilván nekem nem ,mivel nem értek hozzá. Ha egyáltalán megoldható ez ,nem tudom mennyi időbe telhet mivel nem vágom.Azért köszönöm!
(#) nedudgi válasza vladcepes hozzászólására (») Jan 4, 2021 / 1
 
Bár a nikked miatt nem érdemled meg, a következő módosításokat csináld meg:
4e: 2861
4F: 286B
50: 286F
51: 2845
52: 2845
A programot nem értelmeztem, a címek, és adatok a PICKIT szerkesztőjével értlmezendők, 16bit módban. A többi program definiálatlan.
(#) vladcepes válasza nedudgi hozzászólására (») Jan 4, 2021 / 1
 
Hát ez most már így marad sajna (mármint a nikk-anno próbáltam egy párat és foglalt volt aztán ezt elfogadta,nem a kedvencem és karót sem használtam ,na de most ez nem ide tartozik.
Meg próbálok boldogulni azzal amit küldtél! Köszönöm!
(#) Marko Ramiusz hozzászólása Jan 5, 2021 /
 
Jó szerencsét! Valószínűleg a hiányos mikrokontrolleres tudásom miatt teszem fel a kérdést, de szeretnék többet tudni. MikroE EasyPIC6-oshoz vásároltam egy mp3 lejátszót, amin van SD-kártya olvasó is. Ezt a kártyát lehet-e használni mérsésadatgyűjtésre, pl. analóg jelek értékének tárolására, vízóraállások rögzítésére. Köszönöm a válaszokat, Joe.000000
A hozzászólás módosítva: Jan 5, 2021
(#) Bakman válasza Marko Ramiusz hozzászólására (») Jan 5, 2021 /
 
Ha az egy MP3 lejátszó, akkor nagy valószínűséggel nem, a típus nem derült ki. Adatrögzítéshez ezt keresd: OpenLog.

OpenLog.png
    
(#) whalaky válasza Bakman hozzászólására (») Jan 6, 2021 /
 
OK!
Akkor a kérdést/kérést átfogalmazom....
Van valakinek egy MŰKÖDŐ i2c projectje az mplab-x 5.35 generál i2c-t használja amit hajlandó megosztani? Nem tudom melyik libet cseréljem a régire (és hogy melyikre) hogy visszakapjam ami egyszer már működött. (túl van bonyolítva és bevallottan nincs dokumentálva az új i2c)
Bár a legjobb megoldás az lenne ha az aktuálisat tudnám használni, de erről lassan már leteszek...
Bármilyen i2c programocska érdekel legyen az hőmárő eprom rtc akármi .....
A hozzászólás módosítva: Jan 6, 2021
(#) whalaky válasza whalaky hozzászólására (») Jan 7, 2021 /
 
Nos hosszú debugolás után (egyszer véletlen elindult, mosmár biztos hogy az mcc által generált kód a hunyó) odáig értem hogy az i2c bezárásával van a bibi.
  1. i2c1_error_t I2C1_Close(void)
  2. {
  3.     i2c1_error_t returnValue = I2C1_BUSY;
  4.     if(!I2C1_Status.busy)
  5.     {
  6.         I2C1_Status.inUse = 0;
  7.         I2C1_Status.address = 0xff;
  8.         I2C1_MasterClearIrq();
  9.         I2C1_MasterDisableIrq();
  10.         I2C1_MasterClose();
  11.         returnValue = I2C1_Status.error;
  12.     }
  13.     return returnValue;
  14. }


az i2c_simple_example.c itt keveredik végtelen ciklusba...

Valaki találkozott már a jelenséggel?
(#) eSDi válasza whalaky hozzászólására (») Jan 7, 2021 / 2
 
Hali!

Miért kínlódsz az MCC-vel, ami valaki elfajzott agyszüleményét generálja le neked? Szerintem még egy alap port beállításokat is túlbonyolít. Úgy látom ebben a PIC-ben MSSP van és megegyezik bármelyik másik PIC-ben lévő MSSP-vel. Írd meg magad az adatlap alapján, vagy keress a neten. Tuti van kismillió találat rá.
Tipp: Tegyél megszakításba LED bekapcsolást I2C Buszhibára. Akkor látod, hogy ott van a gond, vagy a program téved el.
(#) Taki33 válasza whalaky hozzászólására (») Jan 7, 2021 /
 
Szia!

Ennél jobb anyagot magyar nyelven nem igen találsz: PICCOLO I2C soros I/O
(#) whalaky válasza Taki33 hozzászólására (») Jan 8, 2021 /
 
Ez valóban igéretes, de most épp a PLIB és az MCC-XC8 összeházasításával küzdök.....
(#) vladcepes válasza nedudgi hozzászólására (») Jan 8, 2021 /
 
Szia!
Ezeket a módosításokat milyen programban csináljam? Köszönöm!
(#) nedudgi válasza vladcepes hozzászólására (») Jan 8, 2021 /
 
Visszakérdezek: Milyen programozóval, milyen programmal égetsz?
(#) vladcepes válasza nedudgi hozzászólására (») Jan 8, 2021 /
 
Pickit2 és a Pickit2 Programmal.
(#) Hp41C válasza whalaky hozzászólására (») Jan 8, 2021 / 1
 
Miért kínlódsz napokat azzal a "driverrel"? Elkészíteni a sajátot nem töltene ki egy délutánt sem...

Csak mintának...

PIC18F2550 -re készült XC8 -cal (de a régebbi változattal) 24FC512 -vel működött:
  1. /******************************************************************************
  2.  * Function:        void I2CReadBytes(unsigned char SlaveAddress, unsigned char WordAddress, unsigned char NumberOfBytes)
  3.  *
  4.  * Overview:        Reads NumberOfBytes bytes from slave with address SlaveAddress starting from WordAddress
  5.  *
  6.  * PreCondition:    None
  7.  *
  8.  * Input:           None
  9.  *
  10.  * Output:          None
  11.  *
  12.  * Side Effects:    Aborts if no ACK
  13.  *
  14.  * Note:                        Does nothing if Flags2.I2CBusError
  15.  *****************************************************************************/
  16. void I2CReadBytes(unsigned char SlaveAddress, unsigned char WordAddress, unsigned char NumberOfBytes)
  17. {
  18.         unsigned char num = 0;
  19.  
  20.         if (!Flags2.I2CBusError)
  21.         {
  22.                 // Send start bit
  23.             SSPCON2bits.SEN = 1;
  24.             while (SSPCON2bits.SEN);                    //wait for start
  25.        
  26.             // Send I2C Control Code
  27.             PIR1bits.SSPIF = 0;
  28.             SSPBUF = SlaveAddress & 0xFE;
  29.             // wait for it to transmit
  30.             while (!PIR1bits.SSPIF);
  31.             if (SSPCON2bits.ACKSTAT)
  32.             {  // no acknowledge - abort
  33.                 goto I2CReadBytesAborted;               //abort
  34.             };
  35.             // Send I2C Control Code
  36.             PIR1bits.SSPIF = 0;
  37.             SSPBUF = WordAddress;
  38.             // wait for it to transmit
  39.             while (!PIR1bits.SSPIF);
  40.             if (SSPCON2bits.ACKSTAT)
  41.             {  // no acknowledge - abort
  42.                 goto I2CReadBytesAborted;               //abort
  43.             };
  44.        
  45.             // Send Restart
  46.             SSPCON2bits.RSEN = 1;
  47.             while (SSPCON2bits.RSEN);                   //wait for restart
  48.        
  49.             // Send I2C Address Read
  50.             PIR1bits.SSPIF = 0;
  51.             SSPBUF = SlaveAddress | 0x01;
  52.             // wait for it to transmit
  53.             while (!PIR1bits.SSPIF);
  54.             if (SSPCON2bits.ACKSTAT)
  55.             {  // no acknowledge - abort
  56.                 goto I2CReadBytesAborted;               //abort
  57.             };
  58.        
  59.             do
  60.             {
  61.                 PIR1bits.SSPIF = 0;
  62.                 SSPCON2bits.RCEN = 1;           // start byte reception
  63.                 while (!PIR1bits.SSPIF);        // wait for byte to come in.
  64.                 I2CBuffer[num++] = SSPBUF;          //read byte into USB buffer
  65.                 if (num == NumberOfBytes)               // last byte
  66.                     SSPCON2bits.ACKDT = 1;      // NACK last byte
  67.                 else
  68.                     SSPCON2bits.ACKDT = 0;      // ACK
  69.                 SSPCON2bits.ACKEN = 1;          // acknowledge sequence
  70.                 while(SSPCON2bits.ACKEN);       // wait for end ack sequence
  71.             } while (num < NumberOfBytes);
  72.           I2CReadBytesAborted: 
  73.             SSPCON2bits.PEN = 1;                                //send stop
  74.             while (SSPCON2bits.PEN);                    //wait for stop
  75.         }
  76.         else
  77.         {
  78.                 ClearI2CBuffer();
  79.         }
  80. }
  81.  
  82. /******************************************************************************
  83.  * Function:        void I2CWriteBytes(unsigned char SlaveAddress, unsigned char WordAddress, unsigned char NumberOfBytes)
  84.  *
  85.  * Overview:        Writess NumberOfBytes bytes to slave with address SlaveAddress starting from WordAddress
  86.  *
  87.  * PreCondition:    I2CBuffer[] filled with data
  88.  *
  89.  * Input:           None
  90.  *
  91.  * Output:          None
  92.  *
  93.  * Side Effects:    Aborts if no ACK
  94.  *
  95.  * Note:                        Does nothing if Flags2.I2CBusError
  96.  *****************************************************************************/
  97. void I2CWriteBytes(unsigned char SlaveAddress, unsigned char WordAddress, unsigned char NumberOfBytes)
  98. {
  99.         unsigned char num = 0;
  100.  
  101.         if (!Flags2.I2CBusError)
  102.         {
  103.            // Send start bit
  104.             SSPCON2bits.SEN = 1;
  105.             while (SSPCON2bits.SEN);                    //wait for start
  106.        
  107.             // Send I2C Control Code
  108.             PIR1bits.SSPIF = 0;
  109.             SSPBUF = SlaveAddress & 0xFE;
  110.             // wait for it to transmit
  111.             while (!PIR1bits.SSPIF);
  112.             if (SSPCON2bits.ACKSTAT)
  113.             {  // no acknowledge - abort
  114.                 goto I2CWriteBytesAborted;              //abort
  115.             };
  116.             // Send I2C Control Code
  117.             PIR1bits.SSPIF = 0;
  118.             SSPBUF = WordAddress;
  119.             // wait for it to transmit
  120.             while (!PIR1bits.SSPIF);
  121.             if (SSPCON2bits.ACKSTAT)
  122.             {  // no acknowledge - abort
  123.                 goto I2CWriteBytesAborted;              //abort
  124.             };
  125.        
  126.             do
  127.             {
  128.                     PIR1bits.SSPIF = 0;
  129.                     SSPBUF = I2CBuffer[num++];
  130.                     // wait for it to transmit
  131.                     while (!PIR1bits.SSPIF);
  132.                     if (SSPCON2bits.ACKSTAT)
  133.                     {  // no acknowledge - abort
  134.                         goto I2CWriteBytesAborted;      //abort
  135.                     }
  136.                 } while (num < NumberOfBytes);
  137.  
  138.         I2CWriteBytesAborted:
  139.             SSPCON2bits.PEN = 1;                                //send stop
  140.             while (SSPCON2bits.PEN);                    //wait for stop
  141.         };
  142. }


Komment: A Flags2.I2CBusError akkor 1, ha inicializáláskor a SCL és SDA vonalak szintje nem magas.
A hozzászólás módosítva: Jan 8, 2021
(#) nedudgi válasza vladcepes hozzászólására (») Jan 8, 2021 /
 
Ezekkel meg lehet oldani.
Betöltöd az eredeti .hex fájlt átírod ezeket a címeket, és beégeted. Ha elmented, másik névre mentsd!
(#) vladcepes válasza nedudgi hozzászólására (») Jan 9, 2021 /
 
Köszönöm! A táblázatban nem is találok ilyen címeket :
4e: 2861
4F: 286B
50: 286F
51: 2845
52: 2845 vagy rossz helyen keresem?

3.jpg
    
(#) Bakman válasza vladcepes hozzászólására (») Jan 9, 2021 /
 
Nézzük a kijelölt sort: 050

  1. 050: 2863
  2. 051: 2865
  3. 052: 2867
  4. 053: 2869
  5. 054: 286B
  6. 055: 286D
  7. 056: 286F
  8. 057: 2871
  9. 058: 2873 (ez már a következő sorban van)
  10. 059: 2845
  11. 05A: 2845
  12. 05B: 2845
  13. 05C: 2845
  14. 05D: 2135
  15. 05E: 2874
  16. 05F: 213D
  17. 060: 2874 (ez is a következő sorban van)
Stb.
(#) vladcepes válasza Bakman hozzászólására (») Jan 9, 2021 /
 
Köszönöm!
Kezdem kapiskálni,jobbra haladva megyünk sorba. A 4e illetve 4F -et azt merre keressem? Ahol bejelöltem? Meg a mellette lévő jobbra?

4.jpg
    
(#) Bakman válasza vladcepes hozzászólására (») Jan 9, 2021 /
 
Nem, a felső mezőben görgess lejjebb. A képeden az EEPROM terület van kijelölve.
(#) vladcepes válasza Bakman hozzászólására (») Jan 9, 2021 /
 
Nem találok olyat, a 4e az lehet 04E ? mer olyan van. A 4F-et sem találom csak 04F-et.
(#) Bakman válasza vladcepes hozzászólására (») Jan 9, 2021 /
 
Igen, az az. Mindegy, hogy egy szám elé, illetve tizedes mögéé hány nullát írunk, az érték nem változik.

00000004,5600000 = 4,56
(#) vladcepes válasza Bakman hozzászólására (») Jan 9, 2021 /
 
Rendben, köszöntem! Át írom ezeket. Kíváncsi leszek, majd jelzem.
Következő: »»   1145 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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