Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok.
Segítséget szeretnék kérni: adva van egy 16F690 és egy TCN 75 AV hőméröszenzor, a két eszközt oshonos basicban szeretném összeilleszteni I2C vonalon és a az értéket egy LCD-re kiíratni. A vonali felhúzóellenállások: 2X4,7k táp felé. A szenzor 1.5 méteres árnyékolt kábellel csatlakozik a panelhoz. Már mindent kipróbáltam az összes leírást meg mindent elolvastam az I2C-ről de nem bírok vele. Ez lenne életem első I2C-s vezérlése... lehet hogy ez a baj??? Tudom hogy Basic így meg úgy de egyenlőre ez megy... . Ha valaki tud egy jó linkel, vagy valami ötlettel-megoldással az légyszi segítsen mert elakadtam. Előre is köszönöm !!
Keress ebben a topikban az "I2C"-re! Sokszor volt róla szó, hogy nem ekkora távolságra van kitalálva, de ettől még működhet. (Nekem pl. 2 m-es vezetékkel is ment.) Egyébként a 1,5 m-es kábel helyett rövidebb, néhány centis kábellel próbáltad?
Basic-ben nem vagyok járatos, így csak tanácsokat tudok adni.
Érdemes lenne egy oszcilloszkóppal megnézni a jelet, mert ilyen távolságon már lehetnek problémák a jel minőségével, esetleg mind a két oldalon kell felhúzó ellenállás és lezáró ellenállásra is szükség lehet a jel visszaverődése miatt. Esetleg próbáld meg először kisfrekvencián a kommunikációt, mundjuk 10-20 kbit/sec-el. De az is lehet, hogy a protokolban van valami hiba.
Szia!
Még nem , de nemsokára kifogom mert gyanusan semmire sem reagál!
Hát, akkor rajta, mert a hosszabb vezeték kérdése, csak úgy oldható meg, ha egyébként is biztosan működik
Jó lenne látni a konkrét kapcsolást, mert az I2C vezetékeken kívül van még néhány bekötni való láb...
S a program hogy néz ki?
Az ilyen kommunikációt mindig úgy kell tesztelni, fejleszteni, hogy a tudottan problémás elemet (jelen esetben a hosszú vezetéket) ki kell iktatni. Ha már jól működik a pár centisre lerövidített vezetékkel, akkor ki lehet próbálni, hogy mit szól a hosszúhoz.
Majd ha már csak olyan problémákat látsz, amik egyértelműen a hosszú vezetékből adódnak, akkor kell elkezdeni gondolkozni azon, hogy ki lehet-e küszöbölni ezeket, és ha igen, akkor mivel (pl. a sebesség drasztikus csökkentése, vonalmeghajtók alkalmazása, stb.).
Szia,
Linket gondolom nem tudnank ujat mutatni mert nyilvan a googlin mar tul vagy es amit az nem hoz ki az valoszinuleg vagy papir formaban van vagy nem is erdemes elolvasni Viszont ahogy icserny emlitette volt jo lenne a kapcs rajzot es a forrast latni - hiaba basic, attol meg az inicializalgatasok ugyanugy mennek - hacsak nem hasznalsz valami elore megirt konyvtari fuggvenyt, de akkor meg az a resz nyilvan mukodnie kell...
Szia!
Hát kipróbáltam 10cm- es vezetékkel, és semmi sem változott, most sem működik! Mint említettem ez lenne az első I2C vezérlés és nem is értek ehhez annyira, ezért kipróbálás szintjén az Oshon oldalán találtam demó dolgokat és ezeket próbáltam ki mindenféle módban. A fent icserny által mutatott adatlap bekötése alapján. Íme az egyik példa program: Symbol scl = PORTB.6 Symbol sda = PORTB.4 Dim addr As Word Dim data As Byte For addr = 0 To 5 Lcdcmdout LcdClear data = 255 - addr I2CWrite sda, scl, 0xa0, addr, data Lcdout "Write To EEPROM" Lcdcmdout LcdLine2Home Lcdout "(", #addr, ") = ", #data WaitMs 500 Next addr For addr = 0 To 5 Lcdcmdout LcdClear I2CRead sda, scl, 0xa0, addr, data Lcdout "Read From EEPROM" Lcdcmdout LcdLine2Home Lcdout "(", #addr, ") = ", #data WaitMs 500 Next addr
Gyanítom, hogy ez kód részlet eeprom írást és olvasást végez, ez nem lesz jó a szenzorhoz! Meg kell nézni a szenzor adatlapját, hogy hogyan kell a szenzort "üzembe helyezni", majd hogyan kell a hőmérséklet adatokat kiolvasni. TCN75A-val nem foglalkoztam, de az adatlapjával kezdeném!
Igen ez írás ólvasás. Azt hittem hogy jó lehet az ólvasás része de aztán rájöttem hogy ennél kicsitt bonyolultabb.
Az a baj hogy egyenlőre nem tudom hogyan is kéne elkezdeni, .....
Az ajánlott bekötésben a három változtatható címbit fixen 0 lesz, tehát a slave cím 0xa0. Ami a programodban addr, az a regiszter címe. Nem word,hanem byte! Adatból viszont két bájt kellene...
A TCN75A jó bonyolult, szerintem előbb egy minimális célt kellene kitűzni: egy regisztert beírni és visszaolvasni. Kár, hogy sem az Oshon BASIC-hez, sem a TCN75A-hoz nem értek, így csak az adatlapokat tudom "felolvasni". Például Tset Pointer (addr=3) beírása:
Természetesen DATA valami értelmesebb adat is lehet! Ha nem megy, lehet alacsonyabb szinten is próbálkozni: az I2CWRITE parancs helyett az alábbi litániát helyettesítsd!
A visszaolvasást rád bízom!
Köszönöm, ezeket holnap kipróbálom mert így még nem próbáltam!!! Ezek mit jelentenek:
I2CSEND DATA.HB I2CSEND DATA.LB - mert máshol is láttam már csak nem találtam semmit róla?!
Szia!
Szerintem, egy olyan beépített függvény lehet, amely egy word (2 byte) típusú változót szétszed két darab (felső 8 bit-alsó 8 bit) 1 byte- os részre. Nézdd meg a Help menüt, biztosan benne van! Amúgy a portokat digitálisra állítottad (ANSEL, ANSELH regiszter) ? Ez is okozhat galibát. Üdv.
Idézet: (ólvasás = olvasás ! )„Igen ez írás ólvasás. Azt hittem hogy jó lehet az ólvasás része” Érdekes, hogy mennyire egyszerűnek gondoljátok a dolgokat! Mostanában mindenkinek az ölébe esik minden, mp3, mp4, laptop, stb. aztán ez lesz belőle... Nem cseszegetni akarlak, de szerintem nem jól kezdted el a PIC-ezést. Ha érdekel mit gondolok a kezdésről, akkor olvasd el az írásomat az oldalamon!
Idézet: „Ezek mit jelentenek: I2CSEND DATA.HB I2CSEND DATA.LB?” Az I2CSEND parancs hatására a master kiküld egy bájtot a slave-nek. A .HB és az .LB pedig a WORD típusú változó magasabb, ill. alacsonyabb helyiértékű bájtját jelenti. De a hasonló kérdések helyett érdemes volna elolvasni az Oshon BASIC Rererencia Kézikönyvét, mert én sem tudok anál többet, mint amit onnan elolvasok. Akkor meg minek várnál arra, amíg elolvasom? High and low byte of a word variable can be addressed by .HB and .LB extensions. Individual bits can be addressed by .0, .1, ..., .14 and .15 extensions.
Sziasztok!
Most programozok először PIC16F877 - et. A soros kommunikációt próbálom feléleszteni. Nem nagyon megy. A PIC működik csak ez a rész nem megy. PIC16F628 -al szépen működött. Ezzel a kis progival próbálom. Mit ronthatok el?
Szimulátorban (mondjuk MPLAB) próbáltad? Mert ha ott működik (működik!), akkor az áramkörödben keresd a hibát! Arról nem írtál, hogy PC-n, teminál programmal vizsgálgatod-e, mert akkor az összeköttetést és a terminál beállítását is meg kell nézni.
Szia!
Ez egy kipróbált formula mondhatni. Egy másik programomból copyztam át. Ott egy PIC16F628 kommunikál a PC - vel. Gyönyörűen megy. Gondoltam erre a PIc - re is jó lessz. Viszont lassan most önti el az agyamat a vér. Most nézem hogy ezek a ma..ák 40 Mhz - es oscit küldtek 4 Mhz -es helyett én meg feltétel néklül beforrasztottam. ó hogy aza. Viszont a PIC érdekes módon megy (a portd,2 - ön lévő led világít.) ez hogy lehet? PIC16F877 - 04/IP a kontroller. Egyébként igen terminál progival próbálgatom. Még egy kérdés. A 16F877 melyik táplábait kell bekötni? mert kettő van úgyértem két Vdd és két Vss
Javaslom a kereső használatát, mert több alkalommal lett soros példaprogram becsatolva.
Egyébként kezd egész jó formája lenni a programodnak! Mindegyik táplábat be kell kötni és szűrni! Idézet: „Viszont a PIC érdekes módon megy (a portd,2 - ön lévő led világít.) ez hogy lehet?”
Te írtad oda, bár sok értelme így nincs... Tudom hogy én írtam, csak arra céloztam hogy 40 Mhz - ről is megy ? A proci csak 4 Mhz es. Amúgy a program szerinted működőképes? Viszont a csak az egyik tápot kötöttem be. Ez is lehet a hiba?
Igen, működőképes. Mindkét oldalon kösd be a tápot és tegyél oda egy-egy 100n-os kondit.
Mindkét táp bekötve. Természetesen igy sem megy. Akkor gondolom már csak a rossz kvarc maradt. Otthon kicserélem 4 Mhz - esre. Remélem úgy jó lessz
Idézet: „Tudom hogy én írtam, csak arra céloztam hogy 40 Mhz - ről is megy ?” Kerdes mennyivel rezeg (vagy gerjed) az a 40MHz-s kvartz... csereldd le mielobb! Es ha azt akarod megnezni a PIC megy-e, akkor ne csak gyujtsd ki a LED-et, hanem villogtasd is. Erdemes egy apro firmware-t csinalni, ami egy portot (lehetoleg 8 biteset) inkrementalgat. Ennek kovetkezteben kulonbozo frekvenciakkal billegnek a port labak... konnyu ellenorizni a PIC valoban fut-e, ill milyen frekivel jar...
Nem találom az adatlapban hogyan kapcsolom át a 16F877 - et belső oscira vagyis hol adom meg az orajelét?
Lehet azert, mert a 877-esnek nincs belso oscillatora?
Olyat találtál-e az adatlapban, hogy van benne belső oszcillátor?
nemigazán. Akkor marad a csere. Jól megszívtam hogy nem néztem meg. 4 Mhz eset rendeltem és naivan azt hitem azt is kaptam.
Hogyan tudok kódot úgy beszúrni hogy olyan szépen nézzen ki mint a tiétek? Szép szines, rendezett sorszámozott. Álltalában MPLAB - ból copizom a kódrészleteket de nehezen tudom egy sorba rendezni, mindig elcsúszik.
|
Bejelentkezés
Hirdetés |