Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Akkor még is mi? 32h és 33h egymás után elküldve a terminalban 23 lesz.
Át kell alakítanod a bináris számot (jelen esetben 23) BCD kóddá. Azután a BCD kód számjegyeihez hozzáadsz 30h-t, és egyesével elküldöd azokat. Link
A kérdésem: "Mi erre a legegyszerűbb megoldás?"
A feladat: a memóriában van 23h ha azt ki küldöm az # és nem 2 3. Az ascii táblázatot én is ismerem csak erre kéne rábírni a PICemet is! Memóriából beolvasom az adatot az 23h --->konvertálás ---> 32h küldés 33h küldés! A nagy kérdőjel a konvertálás, ebben kérem a segítséget!
asszem megadtad a választ! már próbálom is! köszi
Szeretnék én is PIC-ezni. Elinduláshoz megfelelőnek tartod a PICKit-2 starter csomagot?
Üdv.
Sziasztok!
Szeretnék írni egy programot ami különböző rutinokat futtam le attól függően hogy a PIC melyik bemenete van kiválasztva egy választó kapcsolóval. ( tehát pl. van 4 bemenet és egy 4 állású kapcsoló amivel ki tudom választani a négy bemenet valamelyikét) Én valahogy így képzeltem el : X SLEEP BTFSS PORTB,1 GOTO 1 ;rutin1 BTFSS PROTB,2 GOTO 2 ;rutin2 . . . stb GOTO X Ha a jelváltozás a B porton interruptot engedélyezem akkor a megszakításban megoldható a program "frissítése" amikor is az új beállításhoz tartozó programrész fut le a régi helyett. Mikor kijövök a megszakításból akkor (potyo múltkori hozzászólása szerint) a SLEEP utasítás utáni programsorra megy a program, ezért lechekkolja a bemeneteket, lefuttatja a kapcsolóval beállított bemenethez tartozó rutint és visszatér aludni. A B porton történő jelváltáskor (átkapcsolom a választókapcsolót másik bemenetre) minden kezdődik előlről... Szerintetek elvben megoldható ez így? Vagy megint nem veszek figyelembe valamit? köszi
Elvben megoldható. Viszont a SLEEP után tegyél be egy NOP utasítást, mintha olvastam volna valahol az adatlapban, hogy azt be kell tenni a SLEEP után.
Egyébként ha csak az kell, hogy a B porton történő változás hatására ébredjen fel a PIC, és futtassa le a programot az állapottól függően, akkor engedélyezni kell a változásra a megszakítást, viszont a GIE bitet nem kell bekapcsolni. Ekkor csak felébred a PIC, de nem ugrik a megszakítási rutinra, hanem egyből elindul a SLEEP utáni utasítással. Nemis kell megszakítási rutinnal foglalkoznod.
Köszönöm, ezt se tudtam...Ez lényegesen leegyszerűsíti a dolgomat.
Köszi
Sziasztok! Tudnátok ajánlani valamilyen programmert, vagy valami egyszerű kapcsi rajzot, amivel 16C54C PIC programját ki tudom olvasni?
Nekem JDM van, de az nem kezeli. Illetve az IC-Prog közölte velem, hogy nem felel meg ehhez a típushoz a JDM programmer! Ha tud valaki segíteni, megköszönöm! Leginkább egy nagyon egyszerű kapcsi rajz érdekelne ami jó ehhez a PIC-hez.)
Szia fnszunyo,
Nekem sajnos (vagy szerencsere?) nincs JDM-em, de ha csak olvasni kell, 16F54-el probalkoztal mar? Nem nezegettem egyik programming speckojat sem, csak egy tipp hatha... Ha nem, akkor jobban jarnal ha talalnal egy ismerost akinek van egy olyan komolyabb programozoja amelyik ismeri ezt a PIC-et es megkerned nezzen ra ki lehet-e olvasni a tartalmat egyaltalan, minthogy kiserletezz olcso es megbizhatatlan megoldasokkal, es akkor par napos szendvedes utan meg mindig kerdes lesz, hogy az ujonnan osszeutott programozo nem megy, vagy a PIC dobta el magat, vagy a programozo szoiftvereben nem jol vannak az idozitesek definialva es emiatt nem megy vagy esetleg mas problema... A masik, hogy gondolom tudod, hogy ha van code protection akkor meg ha ismeri is a programozod a chipet es minden egyeb is stimmel sem fogod tudni kiolvasni a tartalmat (csupa nullat fog "kiolvasni").
Abból adódóan, hogy ezek a mikrovezérlők még párhuzamos programozásúak, nem lesz egyszerű égetőt találnod hozzá.
A neten azonban sok rajz van, pl: Bővebben: Link (shift regiszteres megoldás)
Sziasztok!
Lenne egy hatalmas problémám! Szeretném úgy felépíteni a programom, hogy a mért értékeket mindig kiírom eepromba (mondjuk másodpercenként), majd amikor ki akarom értékelni, beolvasom és dolgozok vele tovább. A beolvasással nincs is baj, de ha beleírom a kódba a kiírásokat is, akkor számomra érthetelen módon, változó időközönként túlcsordulnak változók és meghal a progi. A kiíró metódus működik, már használtam párszor, így nem értem mi lehet a baj. Van esetleg valami ötletetek? Mellékelem az eeprom kezelő cuccaimat! A pic egy 18f4520-as, a fordító mcc18-as MPLAB mellett. A memória: 24LC256 Elvileg 5ms-es késleltetés kell az írás után, nem? Előre is köszi! Zoli
Hali
Sztem nem kell kesletetes mert a memoria nem fog ACK-t adni ha foglalt. De nezd meg a doksiban az sokmindenre valaszt ad. Most nincs hirtelen kezem ugyeben a memoria doksija Udv Vili
Na itt egy lehetoseges megoldas (ccs c)
void write_ext_eeprom(long int address, BYTE data) { short int status; i2c_start(); i2c_write(0xa0); i2c_write(address>>8); i2c_write(address); i2c_write(data); i2c_stop(); i2c_start(); status=i2c_write(0xa0); while(status==1) ;itt varsz az iras befelyezesere { i2c_start(); status=i2c_write(0xa0); } } Udv Vili
És azt belekalkuláltad, hogy kb. 11 napig fog működni egy cella, ha másodpercenként írod?
Nem igazán...
Akkor milyen memóriát ajánlotok, amit folyamatosan lehet írni és olvasni és nem túl drága? Létezik valami megoldás? Köszi
Hat valami I2Cs SRAM ha mar i2C-zel, pl ilyen
Ha elfér a belső regisztereiben, akkor írd inkább oda, ha olyan sok, hogy már nem volna neki hely, akkor pedig inkább RAM-ot illessz, EEPROM helyett. Amíg van táp, addig a RAM is jó, és elég EEPROM-ba menteni, amikor kikapcsolod az egészet (már ha szükséges ilyenkor is tárolni), vagy teszel bele backup-hoz egy elemet.
Vmilyen SRAM telepes taplalassal. Egy kicsit sok labat visz el de orok elet. Esetleg egy hc573 mint cimlatch . Ld 8085 memoriakezeles.
Vili
Köszi az ötleteket! Igyekszem valamit kitalálni...
Nezzel szet ilyen "Serial SRAM " utan pl DS1200.
Ezek kis labszamu soros eleresu SRAM-ok Stby-ban 1-2 uA felvetellel, altalaban SPI kezelessel. A beszerzest nem tudom hogy van. De pl 68HC68R1, N256s08, de biztos van tobb tipus is. Udv Vili
na arról lenne szó hogy van egy PIC16F616-os és azt nem tudom most meg
oldani, hogy a progi C-ben van nem találok hozzá C fordítót.Egyálltalán ven-e ilyen fordító linker, header file vagy csináljam meg ASMben?MPLAB7.5-ben csinálta.Valaki tudna segíteni???
Az alap MPLAB installkban kell lennie egy PICC compilernek, a Toolsuit kivalasztasakor CCSC neven talalod meg ha fel van rakva.
Letezik meg egy SDCC nevu ingyenes fordito is, ill ha megvan a program akkor ki kellene deriteni hogy milyen forditoval csinaltak meg es azt kellene hasznalni lehetoseg szerint (legtobb C forditonak vannak ingyenesen hasznalhato valtozatai).
Létezik C fordító több is. Van a Hitech féle, van a CCS és a van MikroC most így hirtelen amik eszembe jutnak.
Itt nagyjabol az osszes C fordito fel van sorolva - es ha hianyzik valami vagy nem kielegito az info akkor kerlek modositsd
http://hu.wikipedia.org/wiki/PIC_mikrokontroller
Sikerült az I2C - óraic problémámon úrrá lenni, köszönet érte nektek! Végülis megoldottam interrupt nélkül, egyszerűen újraírtam az egészet
És az kiderült, hogy mi okozta a gondot, vagy hogy hol akadt el a rossz verzió?
Egy problémába ütköztem:
16F877A használok és próbáltam életre kelteni az A/D modulját. 1 a/d csatornával minden tökéletesen működik de ha pl 5 lábat használok analóg bemenetnek akkor valamiért kihatnak egymásra. Tehát ha pl az 0. A/D lábra rákötöm a pozitívat és az 1. A/D lábra a negatívat akkor a kapott értékek nem 255 és 0 lesznek hanem össze vissza ugrálnak hol 0-60 között hol 128 körül. Ez mitől van? Csatolom a rutint amit használok. |
Bejelentkezés
Hirdetés |