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   1225 / 1225
(#) kissi válasza kaqkk hozzászólására (») Márc 23, 2026 /
 
Ja, úgy nem...azt hittem az ICSP-hez gondolkodsz feltétben !
(#) Laja1 hozzászólása Márc 27, 2026 /
 

NRF24 inicializálás

Sziasztok!
Tudna valaki segíteni, hogy mi lehet a gond? A rádiós (nRF24L01 modul nyák antennával 2.4GHz) modul nem működik. Figyelem szkóppal a MOSI, MISO jeleket. A MOSI jelek szépen kimennek, az első byte-ra a modul szépen válaszol 0x0E jellel, de a második byte-ra már 0x00 a válasza! És ez minden byte-párosnál így van. Ahol pedig egymás után 6 byte-t kell küldeni, ott az elsőre 0x0E a válasz és az összes többire 0x00. Így nem tudom a modult inicializálni, tehát nem is működik. Hol lehet a hiba? Ez a kódrészlet:
  1. #include "nrf24.h"
  2. #include "spi.h"  
  3.  
  4.  
  5.  
  6. static void csn_low(void)  { NRF_CSN_LAT = 0; }
  7. static void csn_high(void) { NRF_CSN_LAT = 1; }
  8. static void ce_low(void)   { NRF_CE_LAT = 0; }
  9. static void ce_high(void)  { NRF_CE_LAT = 1; }
  10.  
  11.  
  12.  
  13. static void nrf_write_reg(uint8_t reg, uint8_t val) {
  14.    
  15.     csn_low();
  16.     __delay_us(10); // Várunk egy kicsit az ébredésre
  17.    
  18.     SPI_Transfer(W_REGISTER | (REGISTER_MASK & reg));
  19.    
  20.     __delay_us(10);
  21.    
  22.     SPI_Transfer(val);
  23.    
  24.     __delay_us(10); // Biztonsági szünet a lezárás előtt
  25.     csn_high();
  26.    
  27. }
  28.  
  29.  
  30. static void nrf_write_regN(uint8_t reg, const uint8_t *buf, uint8_t len) {
  31.    
  32.     csn_low();
  33.     SPI_Transfer(W_REGISTER | (REGISTER_MASK & reg));
  34.     for (uint8_t i=0; i<len; i++) SPI_Transfer(buf[i]);
  35.     csn_high();
  36.    
  37. }
  38.  
  39. static void nrf_command(uint8_t cmd) {
  40.    
  41.     csn_low();
  42.     SPI_Transfer(cmd);
  43.     csn_high();
  44.    
  45. }
  46.  
  47. void nRF24_init(bool tx_mode, uint8_t channel) {
  48.     // A TRIS beállításokat a SystemInit vagy SPI_Init már elvégzi,
  49.     // de a CE és CSN lábakat itt inicializáljuk:
  50.     TRISAbits.TRISA1 = 0; // CSN kimenet
  51.     TRISAbits.TRISA2 = 0; // CE kimenet
  52.    
  53.     csn_high();
  54.    
  55.     ce_low();
  56.     __delay_ms(100);
  57.  
  58.     uint8_t addr_tx[5] = {'M','A','S','T','R'};
  59.     uint8_t addr_rx[5] = {'S','L','A','V','E'};
  60.  
  61.     nrf_write_reg(EN_AA, 0x00);
  62.     nrf_write_reg(EN_RXADDR, 0x01);
  63.     nrf_write_reg(SETUP_AW, 0x03);
  64.     nrf_write_reg(RF_CH, channel);
  65.     nrf_write_reg(RF_SETUP, 0x06);
  66.     nrf_write_reg(RX_PW_P0, 2);
  67.  
  68.     if (tx_mode) { //Amikor a display parancsot küld
  69.         nrf_write_regN(TX_ADDR, addr_rx, 5); // A cél a SLAVE
  70.         nrf_write_regN(RX_ADDR_P0, addr_tx, 5); // A válaszokat a saját (MASTR) címén várja
  71.         nrf_write_reg(CONFIG, 0x0E); // TX
  72.     } else {
  73.         nrf_write_regN(TX_ADDR, addr_rx, 5);
  74.         nrf_write_regN(RX_ADDR_P0, addr_tx, 5); // Saját maga (MASTR) után fülel
  75.         nrf_write_reg(CONFIG, 0x0F); // RX
  76.     }
  77.  
  78.     nrf_command(FLUSH_TX);
  79.     nrf_command(FLUSH_RX);
  80.     nrf_write_reg(NRF_STATUS, 0x70);
  81.     if (!tx_mode) ce_high();
  82.    
  83. }
  84.  
  85. void nRF24_setMode(bool tx_mode) {
  86.    
  87.     ce_low();
  88.     if (tx_mode) nrf_write_reg(CONFIG, 0x0E);
  89.     else { nrf_write_reg(CONFIG, 0x0F); ce_high();
  90.    
  91.     }
  92. }
  93.  
  94. void nRF24_send(uint8_t value) {
  95.    
  96.     ce_low();
  97.    
  98.     csn_low();
  99.     SPI_Transfer(W_TX_PAYLOAD);
  100.     SPI_Transfer(value);
  101.     csn_high();
  102.  
  103.     ce_high();
  104.  
  105.     __delay_us(20);
  106.     ce_low();
  107. }
  108.  
  109. bool nRF24_dataReady(void) {
  110.     uint8_t status;
  111.    
  112.     csn_low();
  113.     status = SPI_Transfer(NOP);
  114.     csn_high();
  115.    
  116.     return (status & (1<<6)) ? true : false;
  117. }
  118.  
  119. void nRF24_powerDown(void) {
  120.    
  121.     ce_low();
  122.     nrf_write_reg(CONFIG, 0x0C);
  123. }
  124.  
  125. void nRF24_powerUp(bool rx_mode) {
  126.     if (rx_mode) {
  127.         nrf_write_reg(CONFIG, 0x0F);
  128.         ce_high();
  129.     } else {
  130.         nrf_write_reg(CONFIG, 0x0E);
  131.     }
  132.     __delay_ms(2);
  133. }
  134.  
  135. bool nRF24_getData2(uint16_t *value) {
  136.     uint8_t msb, lsb;
  137.     if (!nRF24_dataReady()) return false;
  138.    
  139.     csn_low();
  140.     SPI_Transfer(R_RX_PAYLOAD);
  141.     msb = SPI_Transfer(NOP);
  142.     lsb = SPI_Transfer(NOP);
  143.     csn_high();
  144.    
  145.     *value = ((uint16_t)msb << 8) | lsb;
  146.     nrf_write_reg(NRF_STATUS, (1 << 6)); // STATUS regiszter törlése
  147.     return true;
  148. }
Köszönöm szépen!
(#) Laja1 válasza Laja1 hozzászólására (») Márc 27, 2026 /
 
Amit még nem írtam le, hogy a rádió előtt közvetlenül van a tápon egy 100nF és egy 10µF kondi is. A kijelző és az érintés is ugyanezen a SPI kommunikáción megy és azok jól működnek. Kipróbáltam azt is, hogy ha az nrf-t használom, akkor először (bolondbiztosan) a TFT és az érintő CS vonalát 1-re állítom. De nem okozott változást.
(#) joco54 hozzászólása Júl 15, 2026 /
 

Pic program probléma

Üdv. Van egy Pic16F88- rá írt programom, de ha betőltöm a PICKIT2-be, akkor a következő képernyő jelenik meg. Mi lehet a probléma?
(#) pipi válasza joco54 hozzászólására (») Júl 15, 2026 /
 
Szerintem ez "nem probléma", hanem feledékenység. Nem definiáltál valamit/semmit a config word-ben...
https://www.hestore.hu/prod_getfile.php?id=4737
129 oldal
(#) joco54 válasza pipi hozzászólására (») Júl 15, 2026 /
 
Köszönöm a válaszod. Sajnos nem nagyon értek a programozáshoz, egy kész programot szeretnék feltölteni, a pikbe
(#) joco54 válasza pipi hozzászólására (») Júl 15, 2026 /
 
Esetleg, ha átküldőm, a hex fáljt, tudnál segíteni?
(#) pipi válasza joco54 hozzászólására (») Júl 15, 2026 /
 
A hex fájl-al nem nagyon van mit kezdeni, a forrásszövegbe kellene megnézni mi van/nincs beállítva a config-ban. Ez ugye hwfüggő is, pl órajel forrás/osztó...
Vagy atrágod magad a doksiban a config biteken, a pickitben a hex beolvasás után, kézzel beállítod a configword-öt.
Vagy átmazsolázod honnan van a cuccos, mit ír a fejlesztő....
Akár az is előfordulhat, hogy megfelel a configbitek alapértéke, de ez nem jellemző...
(#) bbb válasza joco54 hozzászólására (») Júl 15, 2026 /
 
Honnan van a kész programod? Ahonnan letöltötted, ott nem írnak semmit a konfig bitek beállításairól? Egyébként nem indult el a kész áramkör az így beégetett programmal? Ez csak egy figyelmeztetés, hogy a PIC alapértékeit írta be a programozó és nézd meg az neked megfelel-e. Ha elindult vele az áramkör, akkor nem kell foglalkozni a figyelmeztető üzenettel.
(#) Frankye hozzászólása Hé, 15:13 /
 

Nem ismeri fel a PICKit2 szoftver a programozót

Kedves hozzáértő kollégák!
Segítségeteket kérem az alábbi probléma megoldásában.
PICKit2 szofverrel programozok PIC-eket, az égető típusa PICKit3.5. Természetesen USB portra csatlakozik. Kb. 2-3 hónapja használtam utoljára, akkor rendben működött, semmi fennakadás nem volt. Ma ismét csatlakoztattam az ezközt a géphez, azonban a szoftver nem ismeri fel az égetőt. Azt írja, hogy nincs csatlakoztatva az eszköz. Azégetőn 2 LED világít, ahogy szokott, a Power és az Active, a csatlakoztatáskor (USB) a Status LED felvillan,ntehőt mindent ugyan úgy csinál, mint korábban. Ugyan ez a helyzet akkor is, ha van chip a programozó foglalatban, és akkor is, ha nincs. A szoftvert rendszergazdaként futtatom. Újdonság, hogy a szoftver indításakor a gép kiírja, hogy a program változtatást akar végrehajtani, ezt korábban nem csinálta.
Tudnátok valami támpontot adni, hogy mi lehet a gond?
Előre is köszönök minden segítséget.
(#) pipi válasza Frankye hozzászólására (») Hé, 19:18 /
 
Eszkozkezelőben mit látsz? Másik usb lyukba/kábellel próbáltad?
(#) Frankye válasza pipi hozzászólására (») Kedd, 6:09 /
 
Az eszközkezelőben konkrét eszközként nem tudom, mit kellene látni. Másik USB porton, másik kábellel ugyan ez a helyzet, nem ismeri fel.
(#) Kera_Will válasza Frankye hozzászólására (») Kedd, 8:02 /
 
Eszközkezelőben usb csoportban vminek ott kéne lennie.
Ha van kérdő, felkiáltó jeles eszköz akkor driverét rakd újra vagy hagyd rà windózra és megkeresi frissíti.
Ha tudod minek nevezte az oprencer a programozót , távolítsd el szoftveresen és fizikailag is majd ríbút után csatlakoztasd.
Ekkor új usb eszközként telepítsd újra, win magàtól fogja vagy ha van drivered akkor azzal.

Elképzelhető legutóbbi win frissítés kérdés nélkül felül csapta a programozó drivert.
(#) Bakman válasza Kera_Will hozzászólására (») Kedd, 9:04 /
 
Elvileg nem kell külön driver, HID eszközről van szó.
(#) Frankye válasza Kera_Will hozzászólására (») Kedd, 11:04 /
 
Felkiáltó-kérdőjeles eszköz nincs benne, ezt megnéztem. Én is win frissítésre gyanakszom. Köszönöm a segítséget, megkísérlem leszedni a szoftvert, és újratelepíteni, hátha.
(#) pipi válasza Frankye hozzászólására (») Kedd, 15:11 /
 
Amikor kihúzod/bedugod usb-be, akkor a hangszóróban tilinkózni kéne, az eszközkezelőben pedig valami változást látni.
Milyen windózból próbálod?

pk2.png
    
(#) Hp41C válasza pipi hozzászólására (») Sze, 10:29 /
 
Nem volt véletlenül megnyomva a gombja az USB csatlakoztatásakor?

USB view programmal meg lehet nézni, hogy a bootloader vagy a PICkit2 programja fut.
(#) Frankye válasza Hp41C hozzászólására (») Sze, 13:21 /
 
Elvileg nem volt megnyomva, hacsak nem lett zárlatos a gomb. A programot megnézem, köszönöm.
(#) Frankye válasza pipi hozzászólására (») Sze, 13:23 /
 
Bocsánat, kicsit "el voltam havazva" a napokban. Megnézem a tilinkózást,és a pontos win verziót, valamint az eszközkezelőt.
(#) Frankye válasza pipi hozzászólására (») Sze, 15:35 /
 
Nos, kipróbáltam. Bedugáskor tilinkózott, kihúzáskor nem. Az Eszközkezelőben semmi változást nem látni (ld. mellékletek). A win verzió Win10 Pro.
(#) Frankye válasza Hp41C hozzászólására (») Sze, 15:55 /
 
Bocs, én ezen a szoftveren nem igazodok el. Pontosan mit kell keresnem, és hol?
(#) Frankye válasza Frankye hozzászólására (») Sze, 15:56 /
 
Helyesbítek: kihúzáskor is tilinkózik.
(#) pipi válasza Frankye hozzászólására (») Sze, 16:29 /
 
nézd én mit fotóztam...
(#) Frankye válasza pipi hozzászólására (») Sze, 17:36 /
 
Ó, bakker! Ezt benéztem... Na, akkor holnap újra nekifutok.
(#) pipi válasza Frankye hozzászólására (») Sze, 19:10 /
 
Esetleg ezt a szoftvert is kipróbálhatod a microchip helyett...
https://github.com/jaka-fi/PICkitminus
itt is irkálnak róla: https://protoncompiler.com/index.php/topic,1487.0.html
most olvasom: requires .NET framework 2.0 , ez lehet kell az mchip verzióhoz is...
(#) tufatofu válasza pipi hozzászólására (») Sze, 19:19 /
 
Én azt használom pickit 2-höz, mert a win10 gusztustalankodott az eredeti pickit2 szoftverrel.
Következő: »»   1225 / 1225
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