Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   232 / 1319
(#) Tzl hozzászólása Jún 23, 2008 /
 
Sziasztok!

PIC analóg bementével szívok. (16F870, 4MHz, 5V)
Az a baj, hogy kb 3 volt alatti referencia alatt hülyeségeket mér az összes bemenete, pedig a doksi alapján 5 voltos táp melett 2,5 voltig le lehetne menni. (használtam már korábban több modelt is 2,56 voltos referenciával, akkor nem volt gond.)
Amit mér: (csak a felső 8 bitet mondom decimálisan)
0-9-ig jó, aztán felugrik 64-re, ott tanyázik amig a bementi jel el nem éri ezt a szintet, aztán megint ugrik egyet kb 90-re, és innen jó 255-ig
A hex-bcd konverzió biztosan jó, mert már sok helyen használtam/használom ezt a rutint, és ráadásul 5 voltos referncia mellett jól működik, akár ha menet közben kapcsolgatom akkor is.

Még annyit, hogy szükségem van az 5voltos referfnciára is, ezért az RA4-es lábbal huzom le a refenciát, két 2,2k ellenállásal, ha kell. Meg is van szűrve egy 2,2u kondival.
Esetleg ez okozhatja?

Ha valakinek van ötlete, azt megköszönöm:
Tzl
(#) trudnai válasza Tzl hozzászólására (») Jún 23, 2008 /
 
Szia,

Azt a Vref-et ha fixre teszed, akkor jol mukodik? Nem tudom amugy miert nem a firmware-edbol kapcsolgatod a referenciat, hisz amugy is 5V-rol jar a PIC-ed, ugyhogy elegendo lenne az ADCON1-el allitgatni hogy epp kulso Vref-et adsz neki vagy Vdd-t. Datasheetbol mellekeltem a megfelelo tablat...

Vref.PNG
    
(#) watt válasza Tzl hozzászólására (») Jún 23, 2008 /
 
Lehet, hogy tönkrement a PIC? Próbáltad már másikkal?
(#) Tzl válasza trudnai hozzászólására (») Jún 23, 2008 /
 
Helló!

Itt verem a fejem a billenytűzetbe, hogy miért is nem jutott eszembe ez az egyszerűbb megoldás.
Át is fogom írni/forrasztani így. Ráadásul így még várni sem kell, amig az RC tag beáll az új feszre.

Kimondottan fix feszen nem próbáltam. Annyit próbáltam, hogy a vref és a gnd láb közé odafogtam egy 47u-os kondit, aminek már elég stabil feszt kellene adnia ilyen áramok mellett, szerintem.
De az RA4 végülis OC kimenetes, nem? Így baja nem lesz, ha ideiglenesen leforrasztom földre, hogy megnézzem fix feszültségen.

Köszönöm. Este kipróbálom és visszajelzek.

Addig is, ha valaki már találkozott ilyennel, írjon legyen szíves.

Tzl
(#) Tzl válasza watt hozzászólására (») Jún 23, 2008 /
 
Ezt az egyet vettem.
Bár nem tudom, milyen AD van benne, de szerintem ha megy 5 voltról kellene 2,5-ről is.
Most még kipróbálom, amit Trudnai mondott, aztán megpróbálom felhívni a chipcad-et, hogy találkoztak-e már ilyennel. Mennyire érthetnek hozzá, nem tudom.

Tzl
(#) Norberto válasza Tzl hozzászólására (») Jún 23, 2008 /
 
Idézet:
„Még annyit, hogy szükségem van az 5voltos referfnciára is, ezért az RA4-es lábbal huzom le a refenciát, két 2,2k ellenállásal, ha kell. Meg is van szűrve egy 2,2u kondival.”


Mennyi ideig vársz az átkapcsolt mérések között? Mert jelen esetben arról van szó, hogy a fesz átkapcsolás miatt tranziens jelenség zajlik le a kondenzátoros körben. Amiatt van ez az összevisszaság.

Ha jól számoltam, 10 msec ideig kell minimum várnod, amíg az átkapcsolás hatására fix értékre áll be a referencia feszültség.
(#) Tzl válasza Norberto hozzászólására (») Jún 23, 2008 /
 
Norberto!

Én ennél biztosabbra mentem, ezért 40msecet várok az átkapcsolás, meg a mérés között, de miután kiderült ez a hiba, fix értéken tartottam az RA4 kimenetet és úgy is csinálta.

Bár szerintem ha ráengedném az AD konverziót még a vref exponenciális szakaszára, akkor azon felül, hogy nem lenne pontos a mérés a pontatlan vref érték miatt, csak egy linearitási hibája lenne a konverziónak. Ezt a fajta hibát szerintem nem magyarázza.

Köszi:
Tzl
(#) trudnai válasza Tzl hozzászólására (») Jún 23, 2008 /
 
Csak ugy eszembe jutott, hogy multkor mikor elfelejtettem analogba kapcsolni a portot akkor csinalt nekem hasonlot. Tehat majdnem digitalisan valtozott az ADRES. Lehet valahol nem jol allitod be a portot? Mondjuk banksel miatt?
(#) Tzl válasza trudnai hozzászólására (») Jún 23, 2008 /
 
Érdekes lehetett, de sajnos itt nem ez lesz, mert csináltam egy próbát, hogy a vref osztóját elkezdtem felfelé húzni egy potival, és valahol 3 volt fölött megindult normálisan anélkül, hogy a program bármi olyat csinált volna amit előtte nem. Aztán mikor visszaengedtem, akkor meg újra hülyéskedett.

De köszi a kitartó segítséget.

Tzl
(#) trudnai válasza Tzl hozzászólására (») Jún 23, 2008 /
 
Na ez erdekes, adatlap szerint 2.5V-ig le lehet menni, de ezek szerint nem. Vagy a Vdd magasabb mint 5V? (mivel Vref az Vdd - 2.5V lehet max, ld A21 parameter az adatlapban). Tehat ha Vdd 5.5V akkor Vref min 3.0V kell legyen az en olvasatom szerint.
(#) szilva válasza trudnai hozzászólására (») Jún 23, 2008 /
 
Igen, én is úgy értelmeztem az adatlapot. Van még egy megkötés, hogy a Vref+ és Vref- különbsége minimum 2V. Ha a Vref- a Vss, akkor persze ez itt nem szólhat közbe.

Én délben megnéztem a 16F870 silicon errata-ját is, abban A/D-ról semmi nem volt, ellenben a tápfeszültségrúl volt megjegyzés. Az adatlaptól eltérően nem 2.0-5.5V a használható tápfeszültségtartomány, hanem 2.2-5.5V. Ha ilyen pontatlanságok vannak esetleg az A/D referenciánál is, akkor az a 2.5V már akár rossz tartományba is eshet. Mondjuk minden esetre furcsa a jelenség.
(#) Csaplar hozzászólása Jún 23, 2008 /
 
Sziasztok!

Szeretnék életre kelteni egy MCP23017-es I2C-s bővítő IC-t, de nem igazán sikerült.
Az is lehet, hogy rosszul kötöttem be... Tudnátok kicsit segíteni?

Mellékelem a bekötésem és a kódot is, amivel próbálgattam.

( P18F4520, Mplab, MCC18 )

Tudnátok kicsit segíteni?

Előre is köszönöm!
Üdv.
(#) Tzl válasza szilva hozzászólására (») Jún 23, 2008 /
 
Na itt vagyok. Átforrasztottam a referencia osztóját fixen tápra-földre, és az AD configból kapcsolgatom a refernciát, ahogy Trudnai ajánlotta. Nem lett változás. (de ettől még jó ötlet, köszi.)
Más ötletem nem volt, gondoltam lejjebb teszem az AD órajelét, hátha. Erre látom, hogy elb@sztam és Fosc/2-re volt rakva, ami max 1.25MHz-ig jó. Átraktam a 4megához passzoló /8-ra, és lássatok csodát megjavult. :o))))))

De most már legalább tudjuk, hogy milyen tüneteket produkál egy túlpörgetett AD.
Viszont érdekes, hogy ez a négyszeres túlhajtás 5voltos referencia mellet nem okozott gondot, csak kisebb fesz mellett.

Mégegyszer köszi a kitartó segítségeteket, és bocsi, hogy a saját hülyeségem miatt feleslegesen futtattalak titeket.

Köszi:
Tzl
(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Ez a rajz nem sokat ér! pl. nincs rajta a két felhúzó ellenállás!
(#) Csaplar válasza watt hozzászólására (») Jún 24, 2008 /
 
Azok is megvannak csak a kapcsolási rajz másik oldalán az óra IC-nél, úgyhogy azzal nem lehet baj...
(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Szerintem watt ugy ertette, hogy ez nem kapcsolasi rajz, max az IC labkiosztasi diagramja lathato. ebbol nem lehet messzemeno kovetkezteteseket levonni. En pl kivancsi lennek arra az MCLR-es vonala is. Na mindegy, en mar annyiszor panaszkodtam itt, hogy ilyen reszletekbol nem lehet gondolkodni - es ez igaz a kod reszletekre is -, hogy azt hiszem jobb ha inkab ilyenkor hallgatok.
(#) Csaplar válasza trudnai hozzászólására (») Jún 24, 2008 /
 
Hali!

Ez a ketyere a diplomamunkám témája és a konzulensem kérésére titkosítani kell.
Ezért nem rakhatom be az egész kapcsolást.

A MCLR az a pic MCLR lábához megy. Tehát amikor ő resetet kap, akkor a bővítő IC is. A reset funkció a program többi részéből működik, azzal elvileg nem lehet baj.

A Bővítő ki és bemenetei pedig simán ki vannak vezetve. A kimenetekre felhúzó ellenállással raktam Ledeket és egyelőre azokat szeretném kigyújtani.

A forráskódot kimondottan az MCP23017-es tesztelésére dobtam össze. Az I2C-s modul többi részét azért nem linkeltem mert EEPROM kezelésére már használom egy ideje és működik.
Azt a részt csatoltam, amit ehhez a funkcióhoz módosítottam.

Bocs, ha nem írtam elég információt!

Előre is köszi a segítséget!

Üdv.
(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Nekem ez az egesz magas, hogy oszinte legyek. Nem a diploma munkad kell hanem egy a kapcsolasi rajz. Ha azzal a szerencsetlen IO bovitovel szivsz akkor csinalj egy masik kapcsolast ami csak ezt a temat oleli fel el kiserletezd ki hogy hogyan kell azt az IO bovitot meghajtani es vezerelni a firmware-edbol. Az ugye mar nem a diploma munkad resze es azt meg tudod osztani velunk...

Azonkivul ezt a resetesdit tovabbra sem ertem, lehet en vagyok csak ertetlen, de hogy vezerled a PIC MCLR labat szoftveresen? Akkor a LED az current sinkes? Nem tudom ezt hogy nevezik magyarul, tehat a bovito nem leadja, hanem elnyeli az aramot? Magyaran a LED anodja megy egy ellenallason keresztul a Vdd-re, a katodja pedig a bovito labara?

Tenyleg jo lenne latni mert ha most minden ilyen vonalat leirunk szovegesen es abol en fejbol vagy papiron lerajzolom kisse hosszadalmasnak fog tunni. Es megegyszer, a demo panel nem titkositott!
(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
És az óra IC-nek mi a címe, nincs ütközés?

Ez a bővítő olyan egyszerű mint a faék, ezért úgy gondolom, hogy valami nagyon alap hiba lehet, mint az esetek nagy százalékában. Én is azt ajánlom, hogy válaszd külön a bővítőt és írj neki külön programot, ki fog derülni, hogy mi a baj...
(#) Csaplar válasza watt hozzászólására (») Jún 24, 2008 /
 
Hali!

Igazatok van. Csináltam egy külön kis kapcsolást, amelyet most mellékelek, ezen már remélem látszik, hogy hogyan akarom használni a kimenetet.

Először tudnátok abban segíteni, hogy a rajz alapján életképes lehet-e a dolog?

Az óra IC-nek más a címe, azt már néztem.

Köszi szépen!

bovito.PNG
    
(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Szerintem életképes.
(#) Csaplar válasza watt hozzászólására (») Jún 24, 2008 /
 
Oksi.

Most már csak arra kellene rájönnöm, hogyan tudok kigyújtani egy ledet vele...

Mivel a címző lábakat mind földre raktam, így a címe 0x40 lesz, amivel próbálkoztam is, de nem igazán csinált semmit.

A pici kódhoz, amit korábban mellékeltem, nincs esetleg ötlet, hogy miért nem működhet?

(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Rosszul látom, hogy 16bites regisztercímet viszel ki két részletben?

  1. i2c_out_byte((mem_adr >> 8) & 0xff);
  2.                 DelayFor12TCY();
  3.         i2c_nack();
  4.                 DelayFor12TCY();
  5.         i2c_out_byte(mem_adr & 0xff);
(#) Topi válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Read-ben:

  1. i2c_out_byte(0x40 | (dev_adr << 1));

|
ˇ
  1. i2c_out_byte(0x40 | (dev_adr << 1) | 1);


Ugyanis az R/W bit olvasásnál 1... Ha a 0x40-re rá orolod a shiftelt címet, az utolsó bit 0 lesz... Még read-nél is write lesz az utasítás.

Aztán mivel hogy a címzés az adatlap szerint 8biten történik, nem tudom miért van szükség a long addressre.

A write elvileg oké, maga a rutin. Tehát a kutya már csak szerintem az initnél van elásva.
(#) watt válasza Topi hozzászólására (») Jún 24, 2008 /
 
Idézet:
„A write elvileg oké, maga a rutin.”

Szerintem az sem okés. Egyrészt amit írtam, hogy a regisztercím 8 bites, nem 16, másrészt nem kell kivinni a címet mindig, elég egyszer és utána SR-el lehet a következő regisztercímeket kiválasztani. (doksi 7. oldal)
(#) Topi válasza watt hozzászólására (») Jún 24, 2008 /
 
Igen, a címzésen kívül oké, amit én is megemlítettem.
(#) szilva válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Sajnos nincs gyakorlati tapasztalatom az i2c kommunikációban, mert még nem jutottam hozzá.

Úgyhogy csak adatlapok alapján mondom amit mondok, de nekem úgy tűnik, az MCP23017-nek nem kétbyteos belső regisztercímei vannak. Azaz az eszköz megcímzése után szerintem felesleges előbb a regisztercím felső aztán alsó byteját kiküldeni. De lehet, hogy tévedek.

Másik meglátásom, hogy talán célravezetőbb lenne olvasni valamelyik belső regiszterét, abból talán jobban látszik, hogy a kommunikáció milyen állapotban van. Esetleg kiírni valami értéket az egyikbe és azt megpróbálni visszaolvasni.
(#) watt válasza Topi hozzászólására (») Jún 24, 2008 /
 
Okés, említetted, de végül is tárolhatja ő long-on, ha nem akarja kivinni mind a 16 bitet!

(csak megemlítem halkan mindenkinek szánva, hogy érdemes elolvasni mit írtak előttünk, lásd az én első hozzászólásomban letisztáztam ezt a cím kérdést..)
(#) szilva válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Az MCLR környékének kialakításához érdemes megnézni a gyári bővitő demoboardot.

Bővebben: Link

Az a dióda kell, ha meg akarod hagyni az ICSP lehetőséget, és a Vpp lábat kivezeted egy csatlakozóra, ahová a programozót csatlakoztatod. Programozáskor ott 12V körüli feszültség lesz, amit a portbővítők RESET lábai nem viselnének el.
(#) Csaplar válasza szilva hozzászólására (») Jún 24, 2008 /
 
Ez azt jelenti, hogy ezzel a bekötéssel, amit én felrajzoltam tönkre fog menni a bővítő IC?

Mert már bekötöttem így és a készülék többi részét programozgattam is, tehát ha már tönkre ment az ic akkor most hiába szenvedek, hogy életre keltsem...
Következő: »»   232 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem