Fórum témák
- • WiFi antenna készítés
- • TDA7294 végerősítő
- • DVB-S Műholdas digitális TV problémák
- • TV hiba, mi a megoldás?
- • Felajánlás, azaz ingyen elvihető
- • Vicces - mókás történetek
- • Elektroncső-vizsgáló berendezés
- • Elektromos távirányítós kapunyitó
- • Mosógép vezérlők és általános problémáik
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Quad 405-ös erősítő tapasztalatok és hibák
- • Opel Astra elektromos hibák
- • Arduino
- • Crystal radio - detektoros rádió
- • Erősítő építése elejétől a végéig
- • Dansk 3f-T3535, és minden, ami vele kapcsolatos
- • Alternativ HE találkozó(k)
- • Házilag építhető fémkereső
- • STK erősítők javítások
- • LCD monitor probléma
- • Készülékek kapcsolási rajzai
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • KDC kaputelefon loggolás
- • Autóriasztó és központi zár
Régi elektronikai építőkészletek- • Kapu távirányító hatótáv növelése. (Belső antennával)
- • Quad 606, 707 és 909-es erősítő tapasztalatok és hibák
- • Mosogatógép hiba
- • Tápegység
- • Analóg oszcilloszkóp javítása
- • Hegesztő inverter javítás
- • Muzeális készülékek-alkatrészek restaurálása
- • Savas akkumulátor
- • Ki hol gyártatja a NYÁK-ot ?
- • Fejhallgató erősítő
- • EMG TR-0463 funkciógenerátor
- • Elfogadnám, ha ingyen elvihető
- • Elektronikai témájú könyvek újságok
- • Lemezjátszó beállítása, javítása
- • Villanyszerelés
- • Érdekességek
- • Műszerjavítás jogi háttér
- • PC táp átalakítás
- • Napelem alkalmazása a lakás energia ellátásában
- • Kapcsolóüzemű (PWM) végfok építése
- • Hangszórójavítás (otthon)
- • Mobiltelefon hiba
- • Légkondi készítése
- • Golf IV elektronika
- • Hűtőgép probléma
- • 13,8V-25A-es táp
- • LCD TV probléma
- • Kontaszet doboz átépítése
- • Számítógép hiba, de mi a probléma?
- • Toroid transzformátor
» 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.
|
|