Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   185 / 1320
(#) watt válasza bladika hozzászólására (») Ápr 8, 2008 /
 
Akkor még is mi? 32h és 33h egymás után elküldve a terminalban 23 lesz.
(#) potyo válasza bladika hozzászólására (») Ápr 8, 2008 /
 
Á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
(#) bladika válasza watt hozzászólására (») Ápr 8, 2008 /
 
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!
(#) bladika válasza potyo hozzászólására (») Ápr 8, 2008 /
 
asszem megadtad a választ! már próbálom is! köszi
(#) mex válasza Norberto hozzászólására (») Ápr 8, 2008 /
 
Szeretnék én is PIC-ezni. Elinduláshoz megfelelőnek tartod a PICKit-2 starter csomagot?
Üdv.
(#) Norberto válasza mex hozzászólására (») Ápr 8, 2008 /
 
Igen.
(#) bladika válasza potyo hozzászólására (») Ápr 9, 2008 /
 
Köszi, működik!
(#) menyus hozzászólása Ápr 9, 2008 /
 
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
(#) potyo válasza menyus hozzászólására (») Ápr 9, 2008 /
 
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.
(#) menyus válasza potyo hozzászólására (») Ápr 9, 2008 /
 
Köszönöm, ezt se tudtam...Ez lényegesen leegyszerűsíti a dolgomat.

Köszi
(#) fnszunyo hozzászólása Ápr 10, 2008 /
 
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.)
(#) trudnai válasza fnszunyo hozzászólására (») Ápr 10, 2008 /
 
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").
(#) szabi_o válasza fnszunyo hozzászólására (») Ápr 10, 2008 /
 
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)
(#) Csaplar hozzászólása Ápr 10, 2008 /
 
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

myEEPROM.c
    
(#) vilmosd válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
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
(#) vilmosd válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
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
(#) watt válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
És azt belekalkuláltad, hogy kb. 11 napig fog működni egy cella, ha másodpercenként írod?
(#) Csaplar válasza watt hozzászólására (») Ápr 10, 2008 /
 
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
(#) trudnai válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
Hat valami I2Cs SRAM ha mar i2C-zel, pl ilyen
(#) kobold válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
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.
(#) vilmosd válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
Vmilyen SRAM telepes taplalassal. Egy kicsit sok labat visz el de orok elet. Esetleg egy hc573 mint cimlatch . Ld 8085 memoriakezeles.
Vili
(#) Csaplar válasza vilmosd hozzászólására (») Ápr 10, 2008 /
 
Köszi az ötleteket! Igyekszem valamit kitalálni...
(#) vilmosd válasza Csaplar hozzászólására (») Ápr 10, 2008 /
 
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
(#) tony994 hozzászólása Ápr 11, 2008 /
 
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???
(#) trudnai válasza tony994 hozzászólására (») Ápr 11, 2008 /
 
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).
(#) potyo válasza tony994 hozzászólására (») Ápr 11, 2008 /
 
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.
(#) trudnai válasza potyo hozzászólására (») Ápr 11, 2008 /
 
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

(#) SzaboZE hozzászólása Ápr 11, 2008 /
 
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
(#) szilva válasza SzaboZE hozzászólására (») Ápr 11, 2008 /
 
És az kiderült, hogy mi okozta a gondot, vagy hogy hol akadt el a rossz verzió?
(#) Braf hozzászólása Ápr 12, 2008 /
 
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.

analog.asm
    
Következő: »»   185 / 1320
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