Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
 
Témaindító: G-Lex, idő: Jan 9, 2006
Lapozás: OK   1305 / 1305
(#) Koncsar válasza Kovidivi hozzászólására (») Nov 26, 2019 /
 
Na, a szenzor működik, mert Arduinóban jól mért.
(#) Koncsar hozzászólása Nov 26, 2019 /
 
A PIC18F14K22 ben egy SDA, SCL I2C ki-bemenet van. Ha az LCD kijelzőt rákötöm ezekre a lábakra, de van egy LM75 temp szenzorom, aminek ugyan ezek a lábak kellenek, akkor ez a PIC nem alkalmas 2 fogadására?
(#) Koncsar válasza Koncsar hozzászólására (») Nov 26, 2019 /
 
Megtaláltam a választ, i2C bus-al rendelkező eszközöket lehet párhuzamosítani.
(#) pipi válasza Koncsar hozzászólására (») Nov 26, 2019 /
 
Ha különböző az i2c address-ük
(#) Koncsar válasza pipi hozzászólására (») Nov 26, 2019 /
 
A címük csak nem egyformák, egy LCD és hőmérséklet szenzor, vagy egy RTC nél.
(#) pipi válasza Koncsar hozzászólására (») Nov 26, 2019 /
 
Csak a pontosság kedvéért jegyeztem meg. Nem túl sok cím lehetséges, ezért vannak átfedések, találkoztam már vele.
(#) Koncsar válasza pipi hozzászólására (») Nov 26, 2019 /
 
Köszi, majd figyelek erre is.
(#) icserny válasza Koncsar hozzászólására (») Nov 27, 2019 /
 
Ha a címek véletlenül egybeesnének az LM75 IC A0, A1, A2 lábainak le- vagy felhúzásával lehet változtatni a címet. Ez azt is jelenti, hogy több LM75 is felfűzhető a buszra, más-más címbeállítással...
(#) Koncsar válasza icserny hozzászólására (») Nov 27, 2019 /
 
Köszönöm szépen.
(#) GPeti1977 hozzászólása Dec 9, 2019 /
 
Most szeretném először használni az mplab x -et, letöltöttem a legfrissebb verziót, szeretnék egy new projectet készíteni -youtube alalpján- de még bele sem írtam semmit de már hibát ad, mi hiányzik még?

mplab.png
    
(#) benjami válasza GPeti1977 hozzászólására (») Dec 9, 2019 / 1
 
1. Nem hiszem, hogy pic12f675-re lehetne C++ kódot csinálni (nevezd át a main.cpp-t main.c-re)
2. A chip családhoz szükséges include is hiányzik (az cstdlib nem tudom mihez kell).
3. A fordító sincs beállítva (az mpasmwin az asm fordító nem pedig C, lehet hogy nincs is C fordító telepítve nálad)
Biztos van még más is, de hirtelen ezeket szúrtam ki.
Ez a kérdés a PIC kezdőknek topicba jobban illett volna.
A hozzászólás módosítva: Dec 9, 2019
(#) GPeti1977 válasza GPeti1977 hozzászólására (») Dec 9, 2019 /
 
XC8 compilert kellett letölteni azzal jó.
(#) cross51 hozzászólása Jan 30, 2020 /
 
Sziasztok!

Adott egy PIC32MZ2048EFG100 ami I2C bus-on kommunikál 47L16 (EERAM)-al LP55231 (LED driver)-el
és egy PIC16F313-al (tamper).

Nem nagyon van lehetőségem a kódot megosztani, de elvi szinten hátha van valakinek ötlete.
A probléma az, hogy hosszabb működés után a PIC32-őn egyszer csak be áll a BCL (bus collision) úgy hogy ő az egyetlen master a bus-on. A gép a hosszabb működés során idle állapotba lép (az állapotgép ezen állapotát hívom idle-nek nem hardware-es idle-ről beszélünk) csak a PIC16-al (vagy esetleg a LP55231 kommunikál, ha villogtatni kell a LED-et) kommunikál.

Amikre gyanakszom/próbáltam:

A PIC32 errata-ja szerint állhat be fals BCL ha 100k fölött van a sebesség vagy a szekvenciális transzfer nagyobb mint 500 byte, levettem 50k-ra és átlagosan 5 byte ami egy adatcsere során átmegy, de nem oldotta meg.

A PIC16-on be van kapcsolva a clock stretching és erre egy timeout van megírva (ha bármi "elakadna") ami ha le jár reset-eli a PIC16 I2C-jét ne tudja megfogni a bus-t.
Elvi szinten, a clock stretching miatt alakulhat ki bárhogyan BCL?

A panel 4 rögzítőfurattal és fém csavarral van rögzítve (a furatok gnd-re vannak kötve) a rögzítő csavar egy fém házba megy ami le van (vedő)földelve (alias a PE össze van kötve a DC GND-vel) ez okozhat bármiféle gondot?
(ezt elvileg az elkövetkező pár napon belül megszüntetjük)

+ egy érdekesség, nálam, az eddigi tesztelések alapján íróasztalon képtelen voltam előhozni a hibát, de ahol beszerelt a panelok vannak
- egyik helyen nem jön elő
- másik helyen 3-4 nap alatt jön elő
- harmadik helyen percek/órák alatt előjön a hiba

Kicsit tanácstalan vagyok, hogy mi okozza a BCL-t.
Van valakinek bármi ötlete, mi lehet a mágia a dologban?
(természetesen az alap dolgok meg vannak 100n mindenhol a P32 tápjain 100n+10n párhuzamosan, külső felhúzó ellenállat (2k2) a P32 nyakában)
(#) superuser válasza cross51 hozzászólására (») Jan 30, 2020 /
 
Logikai analizátorral nézted a kommunikációt?
Próbáltad lejjebb venni a sebességet?
Nem bírja el az alkalmazás, ha simán lekezeled a hibát, újrainicializálod ami kell és megy minden tovább?
(#) cross51 hozzászólása Jan 31, 2020 /
 
Én néztem logikai analizátorral, de nálam mivel nem merül fel a gond így sokat nem érek vele csak látom, hogy "szép" az I2C kommunikáció.
Mint írtam is 50k-ra már le vettem még 10k-ra lehet leveszem.
De elbírná, de már fáj ezt a projektet megbízhatóbbra írni, még azon gondolkoztam, hogy írok egy kezelő algoritmust és ki rakom *.lib-be.
Meg még egy opció merült fel, a harmony tud bit bang-es I2C is egy timer hozzájárulásával, ha nagyon nem jutnék előrébb át rakom arra és meglátom mi lesz.
(tesztelni már teszteltem és az is szépen megy)
(#) Lucifer válasza cross51 hozzászólására (») Feb 1, 2020 /
 
Patkoljatok be soros ellenállásokat (max ~100 Ohm) SDA, SCL vonalakra az eszközök közé, mérjétek az ellenállások két pontján a feszültséget tárolós szkóppal diff módban.

Az így mért feszültség különbségből (kvázi áramból) ki lehet számolni, hogy ki húzta le a buszt.

Szkópot célszerűen a masterrel triggereled a kommunikációk előtt meg és lelövöd a kommunikációt (és nem triggerelsz) ha a BCL beáll. Így látni fogod, hogy valamelyik slave tapír vagy a PIC32 hazudik.
Következő: »»   1305 / 1305
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu