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   1133 / 1203
(#) gabilow válasza Marko Ramiusz hozzászólására (») Szept 26, 2020 /
 
Szia! Akkor inkább erre keress rá:"PIC projects". Nekem 666 millió találatot dobott.
(#) Marko Ramiusz válasza gabilow hozzászólására (») Szept 26, 2020 /
 
Köszönöm. Most már megtaláltam a helyes irányt.
(#) gyoran válasza Marko Ramiusz hozzászólására (») Szept 27, 2020 /
 
Még két dolog a gyakorlati tapasztalatomból: Távvezérlő javítás gőzkamrához. Az eredeti az előző tulaj elemeinek savjában kimúlt. Másik: karácsonyi harangocska világít, a PIC-kel viszont este hattól 6 órán keresztül tudom bekapcsolni, nappal nem fogyaszt áramot. Játék, de otthon az ember szívének ilyen kell.
(#) Marko Ramiusz válasza gyoran hozzászólására (») Szept 27, 2020 /
 
Az ilyen játékokból tanul az ember.
(#) Balagemann2031 hozzászólása Szept 28, 2020 /
 
Sziasztok! Van egy 128x64-es monokróm kijelzőm, amivel pár napja bajlódom, nem tudom elindítani. Az adatlap elég szűkszavúan tárgyalja az indítást. Kijelző adatlap
Valaki találkozott már vele? Tanácsokat előre is köszönöm!
(#) Bakman válasza Balagemann2031 hozzászólására (») Szept 28, 2020 /
 
Ránézésre KS0108 vezérlő. Ha így keresel, több találatot kapsz. Pl.: Bővebben: Link, Bővebben: Link.
(#) slimcolt válasza Bakman hozzászólására (») Szept 28, 2020 /
 
Szia!

Köszi! Összehoztam az SPI-t egy PIC32MM és egy PIC16F között. A PIC32 a mester.
Viszont a mester valamiért nem olvassa be az SPIxBUF regisztert, egyszerűen nem értem miért. Szkóppal megnéztem, ott a byte, de nem olvassa be. Mindig 0-t olvas. Megnéztem, a PIC SDI lába le van forradva. Az SPI2 modult használom rajta. Hol vérezhet el a dolog?

A mester kódja:

  1. // I/O beállítások
  2.     TRISBbits.TRISB7 = 0; // RB7 (RP12) kimenet (SCLK)
  3.     TRISBbits.TRISB8 = 0; // RB8 (RP13) kimenet (SS)
  4.     SS_PIN = 1;
  5.     TRISBbits.TRISB9 = 0; // RB9 (RP14) kimenet (SDO)
  6.     TRISBbits.TRISB5 = 1; // RB5 (RP11) bemenet (SDI)
  7.     RPINR11bits.SDI2R = 0xB; // SDI2 mapped to RP11
  8.     RPOR2bits.RP12R = 0x9; // SCK2 mapped to RP12
  9.     RPOR3bits.RP13R = 0xA; // SS2 mapped to RP13
  10.     RPOR3bits.RP14R = 0x8; // SDO2 mapped to RP14
  11.  
  12. void SPI_init() // spi beállítása
  13. {
  14.     SPI2CONbits.ON = 0;
  15.     SPI2CON2bits.AUDEN = 0; // I2S audio protocol disabled
  16.     SPI2CONbits.FRMEN = 0; // framed mode disabled
  17.     SPI2CONbits.SIDL = 1; // stop in idle mode
  18.     SPI2CONbits.ENHBUF = 0; // enhanced buffer mód kikapcsolva
  19.     SPI2CONbits.MCLKSEL = 0; // PBCLK used for baudrate generator
  20.     SPI2CONbits.MSSEN = 0; // disable HW Slave select control
  21.     SPI2CONbits.FRMPOL = 0; // ss active low
  22.     SPI2CONbits.MSTEN = 1; // Enable Master mode
  23.     SPI2CONbits.DISSDI = 0; // enable sdi
  24.     SPI2CONbits.DISSDO = 0; // enable sdo
  25.     SPI2CONbits.CKP = 0; // Clock idle state = LOW
  26.     SPI2CONbits.CKE = 0; // Adatléptetés a felfutóélnél.
  27.     SPI2CONbits.SMP = 0; // Lefutóélnél beolvasás.
  28.     SPI2CONbits.MODE16 = 0; // nem 16bit mód, hanem 8bit mód
  29.     SPI2CONbits.MODE32 = 0; // nem 32bit mód, hanem 8bit mód
  30.     SPI2BRG = ( (CPU_FREQ / (2 * SPI_FREQ) ) - 1); // clock kalkuláció
  31.     SPI2CONbits.ON = 1; // SPI2 modul bekapcsolása
  32. }
  33.  
  34. void SET_SPI(uint8_t s) // spi engedélyező rutin, az ss 2 clk ciklust késleltetve van
  35. {
  36.     if (s == ENABLE)
  37.     {
  38.         SS_PIN = 0;
  39.         DELAY_SS();
  40.     }
  41.     if (s == DISABLE)
  42.     {
  43.         DELAY_SS();
  44.         SS_PIN = 1;
  45.     }
  46. }
  47.  
  48. uint8_t SPI_WR(uint8_t cmd) // bidirekcionális funkció, írás, olvasás...
  49. {
  50.     SPI2BUF = cmd;
  51.     while (!SPI2STATbits.SPIRBF);
  52.     return SPI2BUF;
  53. }
  54.  
  55. //////********************
  56.  
  57. int16_t SPI_READ_1BYTE(uint8_t cmd) // egy byte kiolvasása, egyszerű hiba ellenőrzéssel
  58. {
  59.     uint8_t dummy = 0xAA;
  60.     SET_SPI(ENABLE);
  61.     SPI_WR(cmd); // parancs írása
  62.     DELAY_1BYTE(); // 1 byte késleltetés
  63.     SPI_CC = cmd;
  64.     SPI_CC += SPI_C_MASK;
  65.     if(SPI_WR(dummy) == SPI_CC) // Sajna már itt nem olvas be semmit
  66.     {
  67.         SPI_RPL[0] = SPI_WR(dummy); // data beolvasás
  68.         SPI_CC = SPI_RPL[0];
  69.         SPI_CC += SPI_C_MASK;
  70.         if(SPI_WR(dummy) == SPI_CC)
  71.         {
  72.             SET_SPI(DISABLE);
  73.             return SPI_RPL[0];
  74.         }
  75.         else
  76.         {
  77.             SET_SPI(DISABLE);
  78.             return -1;
  79.         }
  80.     }
  81.     else
  82.     {
  83.         SET_SPI(DISABLE);
  84.         return -1;
  85.     }
  86. }
(#) Bakman válasza slimcolt hozzászólására (») Szept 28, 2020 /
 
Mit értesz azon, hogy "a lába le van forradva"? PIC32MM-bennem tudok segíteni, majd jönnek a nagyok.
(#) slimcolt válasza Bakman hozzászólására (») Szept 29, 2020 /
 
Ja azt elfelejtettem írni, hogy PIC32MM0256GPM048 a pontos típus.
Ez TQFP-48 tokozású. "Mit értesz azon, hogy "a lába le van forradva"?"
Azt, hogy be van forrasztva az áramkörbe, nem lóg a levegőbe véletlenül.
(#) cross51 válasza slimcolt hozzászólására (») Szept 29, 2020 /
 
A debug láb jól van beállítva?
Vagy amit meg lehet még próbálni, mert nekem volt gondom a STAT bitjeinek vizsgálásával USART/SPI/I2C valamelyikén próbáld meg azzal, hogy törlöd az elején az IFS majd arra pollingolsz.
(IFS1 14. bitje az SPI2_RX flag-je)
(#) slimcolt válasza cross51 hozzászólására (») Szept 29, 2020 /
 
Szia!

Köszi a tippet, de sajnos úgy sem jó.
Az SDI láb a PGED3 is, gondolom azért kérdezted. Én a PGED2 és PGEC2-t használom, és be is van állítva a konfigurációs byte-ban. Kellene még mást is állítanom?
(#) cross51 válasza slimcolt hozzászólására (») Szept 30, 2020 /
 
Még három dolog jutott eszembe,
SIDL = 0
Valamint a TRIS piszkálást vedd ki emlékeim szerint a PPS állítja és ha hozzányúlsz explicit problémát okoz.
(de ez nagyon régi emlék lehet a PIC16 I2C PPS input remap output remap szükségességével keverem)
Configba USBID le van tiltva?
(#) slimcolt válasza cross51 hozzászólására (») Okt 1, 2020 /
 
Kipróbáltam mindent, de még mindig nem jó.
Mi a franc lehet a baj? Nem tudok már mire gondolni.
(#) aroxol hozzászólása Okt 2, 2020 /
 
Sziasztok!

Szeretnék egy hex-et dec re váltani assemblyben. Pl. 0XFF = 0x2 0x05 0x05
Van esetleg valakinek kész PIC18 rutinja?
(#) bbalazs_ válasza aroxol hozzászólására (») Okt 2, 2020 /
 
Ha csak byte, akkor táblázattal jársz legjobban.
(#) aroxol válasza bbalazs_ hozzászólására (») Okt 2, 2020 /
 
Leírnád mit értesz táblázat alatt?
(#) benjami válasza aroxol hozzászólására (») Okt 2, 2020 /
 
Nem hex -> dec -re van szükséged, hanem bin -> bcd -re. Itt egy példa.
(#) bbalazs_ válasza aroxol hozzászólására (») Okt 2, 2020 /
 
A táblázat címét beteszed a mutatóregiszterbe, utána magát a számot, amit át akarsz váltani, megszorzod néggyel (felshifteled kettővel, értelemszerűen word változóban, két byte-on), majd hozzáadod a mutatóhoz, utána már TBLRD*+ -al hozzáférsz mind a négyhez.
pl. a harmincötödik sor így néz ki:

db 0,0,3,4
(#) sonajkniz válasza benjami hozzászólására (») Okt 2, 2020 /
 
Megnyitottam amit belinkeltél.
A Crome automatikusan fordította.
Sírtam a röhögéstől.
Idézet:

CLRF száz
SWAPF bin, W; cserélje a rágcsálnivalókat
ADDWF bin, W; így hozzáadhatjuk a felsőt az alsóhoz
ANDLW B'00001111 '; elveszíti a felső rágcsálást (W mostantól BCD-ben van)
SKPNDC; ha hordunk egyet (felső + alsó> 16)”
(#) aroxol válasza benjami hozzászólására (») Okt 2, 2020 /
 
Ez jó lenne, de csak kétfelé szedi.
(#) aroxol válasza bbalazs_ hozzászólására (») Okt 2, 2020 /
 
??? Ez milyen nyelven van?
(#) benjami válasza aroxol hozzászólására (») Okt 2, 2020 /
 
Itt egy régen általam csinált midi vezérlő és annak a forrása. A macro.inc fájlban találod az univerzális konvertáló rutint, a felhasználási módra pedig a string.asm-ben van a példa.
(#) benjami válasza sonajkniz hozzászólására (») Okt 2, 2020 /
 
A jó hangulat a legfontosabb. Örülök, hogy segíthettem a megteremtésében
(#) cross51 válasza slimcolt hozzászólására (») Okt 2, 2020 /
 
Nem tudod átrakni másik lábra teszt céljából vagy nincs kisebb MM verziód emlékeim szerint van a DIP28-as ott érdemes lehet egy SPI tesztet csinálni.

Vagy ha tényleg valami a kódban van hiba én azt szoktam ST-n csinálni hogy kód gennel kigenerálom az initet és megnézem mit írtam el.
Ezt MM-nél ha jól tudom az MCC-vel tudod vagy lehet támogatja már a Harmony is.
(#) slimcolt válasza cross51 hozzászólására (») Okt 2, 2020 /
 
Harmony-t nem használok. Sajnos azt hallottam, hogy eléggé bug-os, ezért nem is használtam még.
Először megpróbálom azt, hogy írok egy SPI demo kódot, egy tök egyszerűt (most I2C és UART-ot is használok, meg elég sok mindent). Ha ott sem lesz jó, akkor átvezetékelem egy másik unused lábra. Sajna a PCB-t már megterveztem hozzá, az adott, meg a PIC is
(#) cross51 válasza slimcolt hozzászólására (») Okt 2, 2020 /
 
Tudom, írtad hogy nyák meg van és rajta van az IC, de madzag van nem?

A harmony-ra azt mondom, hogy 1.xx nél teli volt bug-al én a 2.04-est használtam, UART/SPI/USB kicsi FreeRTOS és kifejezetten jól használható, átgondolt volt a dolog.
(a komplexebb libeket nem próbáltam, de ott hidd el más gyártónál is előfordul a hiba)
Még mindig szoktam kicsit puskázni belőle saját könyvtárakhoz az ST lehet kevesebb bug-al van, de olvashatatlan szerintem.
(vagy úgy is mondhatnám a Harmony nekem "clean"-ebb kódot generál)

De amúgy MM-re MMC (Microchip Code Configurator) van az nem igazán csinál semmit csak ad egy kicsi segítséget register kezeléshez.
(#) Peet19 hozzászólása Okt 2, 2020 /
 
Sziasztok!
A 12F675 -öt lehet C-ben programozni? Vagy csak Assembly?
Előre is köszi.
(#) slimcolt válasza cross51 hozzászólására (») Okt 2, 2020 /
 
No, át tyúkbeleztem egy másik lábra és tökéletesen működik. WTF?
Lecserélem majd a PIC-et...
Egyébként köszi a segítséget! Nem gondoltam hogy a PIC a rossz.
(#) slimcolt válasza Peet19 hozzászólására (») Okt 2, 2020 / 1
 
Lehet.
MPLAB X és XC8 compiler kell.
Következő: »»   1133 / 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