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 |