Fórum témák
- • Ki hol gyártatja a NYÁK-ot ?
- • Rendelés külföldről (eBay - Paypal)
- • Hörmann kapuk
- • Felajánlás, azaz ingyen elvihető
- • Vicces - mókás történetek
- • Elfogadnám, ha ingyen elvihető
- • Klíma szervizelés, javítás
- • Kávéfőzőgép hiba
- • Quad 606, 707 és 909-es erősítő tapasztalatok és hibák
- • Műhelyünk felszerelése, szerszámai
- • IMI villanymotor
- • Hifi erősítők tervezése
- • Crystal radio - detektoros rádió
- • Hűtőgép probléma
- • 24VDC motor vezérlése?
- • Villanyszerelés
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanymotor bekötése
- • Érdekességek
- • V-FET és SIT erősítő kapcsolások
- • Készülékek kapcsolási rajzai
- • Időjárás figyelő állomás
- • VF3 - 6 végerősítő
- • Erősítő mindig és mindig
- • Házilag építhető fémkereső
- • LCD monitor probléma
- • Li-Po - Li-ion akkumulátor és töltője
- • Orsós magnók
- • Alternativ HE találkozó(k)
- • Elektroncső
- • Erősítő építése elejétől a végéig
- • LCD kijelző
- • Börze
- • Mosogatógép hiba
- • Orion SE 260 erősítő
- • Androidos okos telefonok
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Fejhallgató erősítő
- • DC motor/lámpa PWM szabályzása
- • JLT-02 analóg forrasztóállomás
- • Ózon képző 12V AC-ről
- • Hangváltók (készítése)
- • Hegesztő inverter javítás
- • Mobiltelefon hiba
- • Frekvenciamérő
- • Vásárlás, hol kapható?
- • Arduino
- • Tirisztoros egyenirányító
- • Retro számítógépek
- • Műveleti erősítő
- • Steampunk -a gőzgép-
- • Elektromos távirányítós kapunyitó
- • Rádiótechnika számok keresése
- • Számítógép hiba, de mi a probléma?
- • Hosszú idejű időzítő
» Több friss téma
|
- 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.
Ja, úgy nem...azt hittem az ICSP-hez gondolkodsz feltétben !
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: #include "nrf24.h"
#include "spi.h"
static void csn_low(void) { NRF_CSN_LAT = 0; }
static void csn_high(void) { NRF_CSN_LAT = 1; }
static void ce_low(void) { NRF_CE_LAT = 0; }
static void ce_high(void) { NRF_CE_LAT = 1; }
static void nrf_write_reg(uint8_t reg, uint8_t val) {
csn_low();
__delay_us(10); // Várunk egy kicsit az ébredésre
SPI_Transfer(W_REGISTER | (REGISTER_MASK & reg));
__delay_us(10);
SPI_Transfer(val);
__delay_us(10); // Biztonsági szünet a lezárás előtt
csn_high();
}
static void nrf_write_regN(uint8_t reg, const uint8_t *buf, uint8_t len) {
csn_low();
SPI_Transfer(W_REGISTER | (REGISTER_MASK & reg));
for (uint8_t i=0; i<len; i++) SPI_Transfer(buf[i]);
csn_high();
}
static void nrf_command(uint8_t cmd) {
csn_low();
SPI_Transfer(cmd);
csn_high();
}
void nRF24_init(bool tx_mode, uint8_t channel) {
// A TRIS beállításokat a SystemInit vagy SPI_Init már elvégzi,
// de a CE és CSN lábakat itt inicializáljuk:
TRISAbits.TRISA1 = 0; // CSN kimenet
TRISAbits.TRISA2 = 0; // CE kimenet
csn_high();
ce_low();
__delay_ms(100);
uint8_t addr_tx[5] = {'M','A','S','T','R'};
uint8_t addr_rx[5] = {'S','L','A','V','E'};
nrf_write_reg(EN_AA, 0x00);
nrf_write_reg(EN_RXADDR, 0x01);
nrf_write_reg(SETUP_AW, 0x03);
nrf_write_reg(RF_CH, channel);
nrf_write_reg(RF_SETUP, 0x06);
nrf_write_reg(RX_PW_P0, 2);
if (tx_mode) { //Amikor a display parancsot küld
nrf_write_regN(TX_ADDR, addr_rx, 5); // A cél a SLAVE
nrf_write_regN(RX_ADDR_P0, addr_tx, 5); // A válaszokat a saját (MASTR) címén várja
nrf_write_reg(CONFIG, 0x0E); // TX
} else {
nrf_write_regN(TX_ADDR, addr_rx, 5);
nrf_write_regN(RX_ADDR_P0, addr_tx, 5); // Saját maga (MASTR) után fülel
nrf_write_reg(CONFIG, 0x0F); // RX
}
nrf_command(FLUSH_TX);
nrf_command(FLUSH_RX);
nrf_write_reg(NRF_STATUS, 0x70);
if (!tx_mode) ce_high();
}
void nRF24_setMode(bool tx_mode) {
ce_low();
if (tx_mode) nrf_write_reg(CONFIG, 0x0E);
else { nrf_write_reg(CONFIG, 0x0F); ce_high();
}
}
void nRF24_send(uint8_t value) {
ce_low();
csn_low();
SPI_Transfer(W_TX_PAYLOAD);
SPI_Transfer(value);
csn_high();
ce_high();
__delay_us(20);
ce_low();
}
bool nRF24_dataReady(void) {
uint8_t status;
csn_low();
status = SPI_Transfer(NOP);
csn_high();
return (status & (1<<6)) ? true : false;
}
void nRF24_powerDown(void) {
ce_low();
nrf_write_reg(CONFIG, 0x0C);
}
void nRF24_powerUp(bool rx_mode) {
if (rx_mode) {
nrf_write_reg(CONFIG, 0x0F);
ce_high();
} else {
nrf_write_reg(CONFIG, 0x0E);
}
__delay_ms(2);
}
bool nRF24_getData2(uint16_t *value) {
uint8_t msb, lsb;
if (!nRF24_dataReady()) return false;
csn_low();
SPI_Transfer(R_RX_PAYLOAD);
msb = SPI_Transfer(NOP);
lsb = SPI_Transfer(NOP);
csn_high();
*value = ((uint16_t)msb << 8) | lsb;
nrf_write_reg(NRF_STATUS, (1 << 6)); // STATUS regiszter törlése
return true;
}
Köszönöm szépen!
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.
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?
Köszönöm a válaszod. Sajnos nem nagyon értek a programozáshoz, egy kész programot szeretnék feltölteni, a pikbe
Esetleg, ha átküldőm, a hex fáljt, tudnál segíteni?
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ő...
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.
|
|