Fórum témák
» Több friss téma |
Nem értem mire akarsz kilyukadni. Miért nem 1-wire az 1 vezetékes kommunikáció. Nem olvastam végig a linket, de az elején is ezt állítják. A Dallas is 1-wire.
Magyarázd el nekem légy oly szíves, hogy megértsem a különbséget. Mindezeket átugorva viszont a kérdés még fennáll. Nálam csak a az alacsony jeleket (RESET) mutatja időpecséttel ellátva.
A "1-Wire" egy kötött protokoll, mint pl. az UART. Az, amit te akarsz elemezni, az egy egy vezetékes kommunikáció, de nem "1-Wire".
Minden 1-Wire egy vezetékes kommunikáció, de nem minden egy vezetékes kommunikáció 1-Wire. Idézet: Ez azért lehet, mert az alacsony jelek hossza eléri a 1-Wire protokoll Reset idejét. „Nálam csak a az alacsony jeleket (RESET) mutatja időpecséttel ellátva.” A hozzászólás módosítva: Nov 4, 2018
Így értem, és akkor félreértettem Kissi mit akart mondani vele. Protokollban nem is gondolkodtam, azokat utálom
![]() Tehát akkor ha félretesszük mint protokoll, van lehetőség ezen (1 wire kötőjel nélkül, one wire) vagy ha már magyarok vagyunk 1 vezetékes kommunikáció dekódolására a Saleae szoftverral? Mint írtam a jelek egyforma periódusúak, nem úgy mint pl. a WS2812 NRZ-je. 1 periódus magas 3 periódus alacsony, illetve 3 periódus magas 1 periódus alacsony. Sajnos én nem találtam egy "protokollt" vagy analizátort sem a szoftverben ami ezt tudná, de hátha valaki tud valamit amit én nem. A hozzászólás módosítva: Nov 4, 2018
Nos, alapos utánajárás után, nem tudja az NRZ-t analizálni. Viszont van valami C++-os SDK-ja belenézek abból mit lehet kihozni.
Idézet: „1 periódus magas 3 periódus alacsony, illetve 3 periódus magas 1 periódus alacsony.” Ezt hogy kell értelmezni? A byte értéke 10001110 ? Ez jelalakilag hogy néz ki? Mert ez 1-Wire-n hosszú magas- rövid alacsony, majd 3x rövid magas- hosszú alacsony, 3x hosszú magas- rövid alacsony, végül rövid magas- hosszú alacsony jel. De ha ilyen is a jel, startjel nélkül, illetve a Dallas szabványtól eltérő frekin a Saleae szoftvere nem értelmezi.
Igen, ahogy írtad. Ilyen formában követik egymást a bitek négyesével. Valamint már rájöttem, hogy nem tud NRZ-t. Most éppen az SDK-t olvasgatom, hátha tudok egy NRZ analizátort belerakni, holnapra talán okosabb leszek, ha lesz rá elég időm, de valószínűleg nem, csak később. Mindenesetre jó lenne megoldani ne kelljen a jelalakokból manuálisan dekódolnom több száz bitet.
Igaz tudnék csinálni PIC-el is egy dekódolót, csak ott még nem tartok, hogy azt txt-be vagy csv-be tudjam exportálni a PIC-ből. Bár így belegondolva rosszul közelítem, meg, mert elég lenne egy soros kommunikáció PC-vel és a PC-re írni valamit ami exportálja, de annyi időráfordítást nem ér meg. Hátha a Saleae SDK gyorsabb lesz.
Azt nem tudom tudja-e. Nem ismerem, de ha jól látom HEStoreban nincs is már. 1 hónap mire megjön Ebay-ről.
Sziasztok!
Innen implementáltam egy I2C kommunikációt megvalósító metóduscsomagot (konkrétan ami az oldalon van, csak a regisztereket pontosítva(16F18323)) viszont olvasáskor a második read beakad a várakozásba és az első read értékében sem vagyok biztos, hogy jót olvas e ki. Egy DS1307-el szeretnék kommunikálni. A kód amivel próbálnám olvasni az alábbi:
Ennek elvileg végig kéne olvasni a DS regisztereit, viszont nem tudom miért akad be. Valószínűleg megint egy bitet kéne megpiszkálnom egy regiszterben, de ismét nem találom, pedig már napok óta ezzel szórakozok ![]() Logikai analizátorom sajnos tönkrement, így azzal nem tudok ránézni, hogy hova mi megy.
Módosított kódom:
Az i2cTime egy saját typedef struct, amiben mindegyik tag egy unsigned char. Bárkinek bármi ötlete van, nagyon szépen megköszönöm!
Ha beragad, akkor valami a kommunikációnál nem fejeződik be úgy, ahogy kellene. Tegyél rá egy logikai analizátort, az egyből megmutatja. Én I2C Slave-nél szívtam vele.
Itt az én HW I2C kódom, amivel működtettem egy OLED kijelzőt. Igaz 18F4550 és BASIC, de talán hasznát veszed (Csak a kommunikációs rész, Repeated Start-ot nem használtam).
A hozzászólás módosítva: Nov 5, 2018
Kommunikációnál ne tegyél be csak whilet,ami csak bitekre vár,mert ott megakadhatsz,dobj bele még 1 timert is,és figyeld a timer interrupt-ot is .Ha a timer bejelez,akkor dobd a próbálkozást 1 kis ideig,vagy számlálóval mérd,és bizonyos próbálkozás után dobd ki hibának .Használhatod a WD-t is,csak az nem bizti,hogy megoldás.Mert nem mindig a master a hunyó
![]()
Nekem ez az "I2C_Master_Wait()" nem tetszik, ha megnézed az adatlapban az "I2C MASTER MODE WAVEFORM" ábrát, látszik, hogy a Interrupt Flag figyelése elegánsabb. Próbáld ki, nekem bevállt.
Tiszteletem!
Van egy érdekes esemény, amit nem igazán értek, ebben kérném a segítséget. (inkább csak felhasználó vagyok, ezért kíméljetek meg a szakmai kifejezésektől) Van egy PIC16F887 40 lábúm, amit beleteszek a PICkit2 íróba. Beleírom a HEX-et. Azután rögtön kiolvasom, és az EPROM data egyes soraiban más értékek lesznek a kiolvasás után, mint amit beírtam. Ez mitől lehet? ![]() Sokkal több adat módosul az EPROM data-ban, ha bekapcsolom a VDD pickit2 jelölőnégyzetet, amit 5V-ra állítok. (az alatta levő /MCLR-t be sem mertem kattintani) Köszönettel: Jenő
Mit csinál a beprogramozott hex? Átírhatja az adat EEProm tartalmát. Ha belső oszcillátorra van konfigurálva, a kontroller programja elindulhat a programozás után.
Mit jelez az írás utáni ellenőrzés? Arra gondolok, amit a PICkit2 automatikusan végez közvetlenül a beírás folyamat legvégén.
A beprogramozott hex átírhatja az eprom tartalmát, igen. (utólag így lehet(ne) pozíciókat rögzíteni a PIC-be, amit nem mindig jegyez meg)
A programozás után a veryifing mindig elszáll hibával, valami memory miatt.
Egy kép többet mondana...
Milyen az összeköttetés a pIC és a PICkit2 között? Be van-e kötve minden Vss és minden Vdd programozáskor? Esetleg tegyél egy 100nF kerámia kondenzátort a Vss és a Vdd közé. Állíts be lassabb programozást. A hozzászólás módosítva: Nov 9, 2018
Itt a kép.
A 40-es sor szeret változni. Ott elméletileg a beírandó hex-ben végig 02 van. Aztán írás után ez lesz. A pickit2 íróba van beletéve a PIC. Abba nagy 40 lábas leszorítós IC rögzítőbe, nincs benn az áramkörben.
Üdv !
3 byte ot kellene módosítanom egy PIC16F1946 eepromjában CP védve CPD nyitott, Egy rossz tapasztalatom után inkább megkérdezem újra Egyáltalán van olyan PIC mcu ami ilyen esetben való csak EEPROM bepipált írással megsemmisíti a CODE(futtatott) állományt is ? Nyugodtan írjam át vagy kockázatos ? Illetve lehet e olyan, hogy PK2 vel igen/nem PK3 al Igen/nem Kössz
Azt néztem, hogy mindig a 41-es memória sorszám (?) hibádzik ellenőrzéskor. Ha ezt átírom 01-re programozás előtt ,a többit a sorban hagyom 02-n akkor a verify is lefut hibátlanul...
A programozást átettem lassúra. ![]() Hát ezért maradok én outsider.
Írásról készített kép jobb lett volna. Ha nem titkos a hex, töltsd fel ide, délután megpróbálom.
A hozzászólás módosítva: Nov 9, 2018
Nem titkos. Vasútmodellezős dolog. A Szerzője annyit kötött ki, hogy csak saját felhasználásra lehet használni.
Beteszem az asm-et, is mert én fordítottam a hex-re, és mint már előbb is írtam, felhasználó vagyok...
Nem módosítja magát és az adatait sem. Belső oszcillátor, MCLR letiltva, a PGD (RB7) és PGC (RB6) és a PGM (RB3) kimenetnek beállítva néhány programlépésen belül.
Próbáld meg a "Vpp First Programming Entry" módszert.
Ok. Köszönöm a segítséget, és az erre fordított időt!
![]() Akkor valami hiba itt van nálam.
Bocsánat, hogy eddig nem válaszoltam, de nem jutott erre időm, most rá tudtam nézni:
Idézet: „PIC16F18323 adatlap - 30.6.6.4 Typical Transmit Sequence” Ezt programoztam most bele, de kapásból az első SSP1IF-re várásnál elhasal. Sikeres indítás (SEN) után ezt hardveresen 1-re kéne állítania. A baj, hogy csak jövőhéten tudok ránézni logikai analizátorral. Addig van esetleg tippetek hogy miért hasal el már itt a kommunikáció? MSSP beállításai:
Már tisztára idegesít, hogy nem jövök rá mi a baja ![]() Köszönöm! UI: eSDi próbáltam a te kódod átírását is, az se járt sikerrel. Utó-UI: ugye egy DS1307-ről beszélünk, a feszültségeket megmértem, az elem 3,2V a VCC 5V, szóval nem kéne "battery" módra váltania. A hozzászólás módosítva: Nov 9, 2018
Pedig semmi különbség a két típus ezen része között.
30-28-as ábra - I2C MASTER MODE WAVEFORM (TRANSMISSION, 7 OR 10-BIT ADDRESS). Start Bit küldés: A SEN bitet 1-be állítod, majd vársz, míg hardverből vissza nem áll 0-ba. Ekkor törlöd az SSPIF-et. Adat küldés: Ezután az SSPBUF-ba beírod a kiküldendő byte-ot, majd vársz míg az SSPIF magas nem lesz. Ekkor törlöd az SSPIF-et. Ha kell még adatot kiküldened, megismétled az előző SSPBUF-os műveletet. Stop Bit küldés: Ugyan az mint a Start csak a PEN-t kell bebillenteni. De a 30.6.6.4 Typical Transmit Sequence is ugyan ezt írja, az /ACK figyeléssel kiegészítve. Én azt mellőztem (láttam a kijelzőn, hogy működött), szerintem kezdésnek ne foglalkozz te sem vele. Illetve küldésnél nem fontos annyira (csak a slave nyugtázza vele a vételt), olvasásnál mindenképp kell.
A PicKit3 Programmer menüje alatt az "Erase Before Programming"
ha nincs bepipálva, akkor legalábbis egy 18F46K22 vel tesztelve az eeprom szabadon átírható flash az összes CP védelemmel se száll el. Viszont ilyen funkciót nem látok a PK2 ben. Erre ott nincs is mód ? Mondjuk egy írás csak az eepromban illene figyelmeztetnie a programnak, hogy keletkezik e így veszteség vagy kínáljon fel lehetőségeket. Ha ezért szállt el tavasszal nekem egy 16F946 csupán kezdek felháborodni. Írtatok erről korábban ?
Megírtam XC8-ban is. Ez így működik nekem 16F18324-en. 18323-asom nincs, de majdnem ugyan az a kettő.
A hozzászólás módosítva: Nov 10, 2018
PICkit2 -vel és PIC16F886 -tel elvégeztem az alábbi tesztet:
- Kód memória védelemmel konfigurált program beírása (CP altív), az írási ellenőrzés egyezést mutat. - Újbóli kiolvasások során a program memória csupa 0, az adat EEProm -ból az eredeti tartalmat lehet kiolvasni. - A pipát kivettem a program memória felirat elől. - Átírtam néhány adatot az adat EEProm -ban. Beírattam (pipa kivéve a program memória felirat elől). - Ellenőrzésnél csak az adat EEProm -ot ellenőrzi, jónak találja. - Kipróbáltam a programot. - Működik! Figyelem, a program memória kezelésének letiltása (pipa kivéve a program memória felirat elől) sok funkcióra érvényes: File import, File Export, Read, Wite, Verify, stb. Sajnos nincs PIC16F1946 -om. |
Bejelentkezés
Hirdetés |