Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1036 / 1320
(#) watt válasza dieter84 hozzászólására (») Nov 14, 2011 /
 
Milyen PIC-nek van T0CKI lába? Én nem tudok ilyenről. Add meg a PIC típusát!
Egyébként miért nem keresel rá a frekimérőre? Timer1-el működik, sok kapcsolást találsz!
Bármilyen számmal lehet szorozni, miféle haladó kérdés ez?
(#) watt válasza H2opok hozzászólására (») Nov 14, 2011 /
 
A Vpp testre van húzva a paneleken 10k val?
(#) dieter84 válasza watt hozzászólására (») Nov 14, 2011 /
 
pl. 16f688 RA2/AN2/T0CKI/INT/C1OUT, Bővebben: Link
Köszönöm
(#) watt válasza dieter84 hozzászólására (») Nov 14, 2011 /
 
Igazad van, nem tudom miért emlékeztem arra, hogy a TMR1-nek van csak bemenete, gondolom az oszci miatt, mert az csak neki van.
Ettől eltekintve a kész projecteket érdemes megnézned, mert létezik frekimérő, én is egy ilyet használok átalakítva.
(#) H2opok válasza watt hozzászólására (») Nov 14, 2011 /
 
Igen.
(#) MPi-c válasza H2opok hozzászólására (») Nov 14, 2011 /
 
Az miért jó úgy?
(#) H2opok válasza MPi-c hozzászólására (») Nov 14, 2011 /
 
Mármint mi?
(#) cassis hozzászólása Nov 14, 2011 /
 
PIC18 al szeretnék készíteni (TIMER1 -el) kis jitterű megszakításokat. Olvastam Hp41C kolléga korábbi hozzászólását erről:
Idézet:
„Szerimtem működne, pl. .50000 -rel kellene osztani:
0. lépés: Timer regiszterek nullázása
1. lépés CCPRxH:CCPRxL= (1 * .50000) % 65536 = .50000
2. lépés a CCPx megszakításban CCPRxH:CCPRxL = (2 * .50000) % 65536 = .34464
...
n. lépés a CCPx megszakításban CCPRxH:CCPRxL = (n * .50000) % 65536

A CCPRx megszakítások .50000 timer órajelenként jönnének.”


Valaki tud segíteni miként lehetne kódra fordítani az ötletet? Nekem jelenleg a javaslat önmagában is kicsit kínaiul hangzik.
(#) icserny válasza cassis hozzászólására (») Nov 14, 2011 /
 
Ha jó értem, akkor az interruptokat egy (E)CCP egység szolgáltatná, s ehhez a szabadonfutó Timer1 biztosítaná az időszámlálást. Output Compare módban akkor keletkezik megszakítás, amikor a hozzá rendelt Timer számlálója megegyezik a CCPRxH:CCPRxL regsizerpárban megadott 16 bites értékkel.

Az általad idézett példában 50000 óraütés az ismétlődő megszakítások periódusa. Így első esetben 50 000-et kell írni a CCPRxH:CCPRxL regiszterpárba, a következő alkalommal 100 000-et kellene, de ez már kicsordul a 16 bites regiszterből (ugyanígy Timer1 is körbefordul), tehát csak a modulo 65536-ra vett maradék kell. Mivel Timer1 és egy előjel nélküli 16 bites változó egyszerre fognak túlcsodulni, ezzel nem is kel törődni!

1. lépés:
unsigned int counts=50000;
TMR1 = 0;
CCPR1H = counts>>8;
CCPR1L = counts & 0xFF;
counts += 50000;

2. és minden további lépés (megszakításkor)
CCPR1H = counts>>8;
CCPR1L = counts & 0xFF;
counts += 50000;

Természetesen az üzemmód beállításokat és a megszakítás engedélyezést is el kell végezni, itt ccsak a "timer aritmetikára" szorítkoztam.
(#) cassis válasza icserny hozzászólására (») Nov 14, 2011 /
 
Igen, pont erre gondoltam. Sajnos C ben nem olvasok olyan jól kódot, így egy kicsit el kell mélyedjek a példában. (Ezzel még lehet, hogy lesz kérdésem) Egyébként, ha jól sejtem moduló 65536 összeadás annyi, mint két 16 bites szám összege, nemtörődve az átvitellel.
Sajnom most több időm nincs a dologgal foglalkozni, de visszatérnék rá.
(#) icserny válasza cassis hozzászólására (») Nov 14, 2011 /
 
Idézet:
„két 16 bites szám összege, nemtörődve az átvitellel.”
Igen ez a lényeg. A bonyodalom meg csupán annyi, hogy 8-bites vezérlőről lévén szó, mindezt két részletben kell csinálni.
(#) watt válasza H2opok hozzászólására (») Nov 14, 2011 /
 
Az úgy jó! Rendben!
(#) janikukac válasza H2opok hozzászólására (») Nov 14, 2011 /
 
Az * Törölve !

Jani@ .. két kérdésem is van ( persze költői ), mi a téma címe és hol látod azt, hogy ez itt msn felület lenne ?
(#) H2opok válasza janikukac hozzászólására (») Nov 15, 2011 3 /
 
M.héten lett kész. 2db-ot tudok adni.
(#) Gagyicom hozzászólása Nov 15, 2011 /
 
Sziasztok!

Szeretnék összehozni egy 16f887-et nokia lcd-vel de megakadtam a szintillesztésnél. Google a jóbarátom, de nem találtam olyan ic-t ami forgalomban is van. Tudnátok segíteni?
(#) Hp41C válasza Gagyicom hozzászólására (») Nov 15, 2011 /
 
Egy egész topik van róla...
(#) Gagyicom válasza Hp41C hozzászólására (») Nov 15, 2011 1 /
 
Köszönöm!
(#) Kisvé hozzászólása Nov 17, 2011 /
 
Helló!
dsPIC-ekkel kapcsolatban lenne egy kérdésem. Ezek ugyebár működhetnek fractional és integer módban is. Össze is lehet szorozni két integer vagy két fractional számot. Viszont, hogy tudok összeszorozni egy fractional-t egy integer-rel, ahogy arra pl. a szűrőknél is rendszerit szükség van.
Előre is köszönöm!
(#) icserny válasza Kisvé hozzászólására (») Nov 17, 2011 /
 
Idézet:
„dsPIC-ekkel kapcsolatban lenne egy kérdésem. Ezek ugyebár működhetnek fractional és integer módban is.”
Nem, ezek mindig integer módban működnek. A fractional, float és egyéb perverz számábrázolási formátumokat a programkönyvtárak kezelik és értelmezik. dsPIC esetén, gondolom, a dsPIC Language Tools Libraries.
Idézet:
„hogy tudok összeszorozni egy fractional-t egy integer-rel”
Minden bizonnyal az integer értéket is konvertálni kell fractional formába. Bővebben: Link
(#) Kisvé válasza icserny hozzászólására (») Nov 17, 2011 /
 
Mindenek előtt köszönöm a gyors választ!
Én úgy néztem ,hogy a CORCON-ban át lehet állítani, hogy a DSP-vel kapcsolatos utasításokat egész vagy tört számként értelmezze. Tehát szerintem ez hardverből működik, nem szoftverből. Vagy rosszul látom a helyzetet?
(#) icserny válasza Kisvé hozzászólására (») Nov 17, 2011 /
 
Idézet:
„Én úgy néztem ,hogy a CORCON-ban át lehet állítani, hogy a DSP-vel kapcsolatos utasításokat egész vagy tört számként értelmezze.”
Ebben neked van igazad, de ez csupán annyit jelent, hogy az IF = 0 esetén a szorzás végeredményét megmanipulálja: eggyel balra lépteti (a legkisebb helyiértéken pedig nulla lesz). Vegyes műveletre nincs lehetőség, s az adatkonverziókkal sem foglalkozik a CPU.
(#) Kisvé válasza icserny hozzászólására (») Nov 17, 2011 /
 
Értem! Köszönöm szépen!
(#) ToMikaa hozzászólása Nov 19, 2011 /
 
Sziasztok!

Van egy furcsa problémám. A napokban kezdtem el egy projektet 18F4620-szal és ENC28J60-nal. A kapcsolást és a NYÁK tervet a mellékletben találjátok. Több gondom is van vele:
- a PIC folyamatosan újraindul
- csak belső oszcillátorról megy (HS, HSPLL nem működik)
- a másodlagos oszcillátor nem működik (Timer1-et kellene hajtania)

Ellenőriztem a tápfeszültségeket, +5V és +3.3V megvan, ahol kell. Az MCLR lábon is megvan 4.8 V.
A fura az, hogy néha elindul a PIC külső kristályról is, ha itt-ott megfogdosom a NYÁK-ot. Ugyanez a helyzet a másodlagos oszcillátorral is.

Mi lehet a baj? Előzőleg kipróbáltam a kapcsolást egy dugdosós panelen, ott az oszcillátorokkal nem volt probléma.

Előre is köszönöm a segítséget!

Szerk: ha a képek nem akarnak betöltődni rendesen:
kapcsolás: Bővebben: Link
NYÁK terv: Bővebben: Link
(#) potyo válasza ToMikaa hozzászólására (») Nov 19, 2011 /
 
Ez nagyon érintkezési hibának tűnik nekem. Futtasd be végig ónnal a kontroller lábai és a kvarc, valamint a kvarc kondenzátoraihoz menő vezetékeket.
(#) ToMikaa válasza potyo hozzászólására (») Nov 19, 2011 /
 
Pedig folytonosság-vizsgálóval megpityegtettem a főbb pontokat és mindent rendben találtam. Már próbáltam azt is, hogy egy másik kristályt beböktem a PIC 2 oszcillátor lábához, de akkor sem volt hajlandó elindulni. Elvileg a PIC-nek oszcillátor kondik nélkül is mennie kellene, dugdosós panelen sem tettem mellé őket.
(#) watt válasza ToMikaa hozzászólására (») Nov 19, 2011 /
 
A rajzon külső oszci van. Azt írod nem arról megy?
Az MCLR körből vedd ki a diódát(természetesen kösd át a helyét).
A táplábak közelében nem látok kondit. Tegyél egy SMD-t a két piros átkötésre!
(#) ToMikaa válasza watt hozzászólására (») Nov 19, 2011 /
 
Megpróbáltam az MCLR diódáját átkötni, de semmi változás. Mivel nekem is gyanús volt, ezért előzőleg már kikapcsoltam az MCLR pin-t (MCLRDIS konfigurációs bit), de nem segített. Tettem egy 100 nF-os kerámiát a táplábak mellé, de semmi.

Igen, azt írtam, hogy külső oszcillátorral nem megy, ezért egyelőre a belsővel próbálkoztam.
(#) watt válasza ToMikaa hozzászólására (») Nov 19, 2011 /
 
Próbáld meg a kondikat kicserélni 22..33pF-re.
Persze belső oszcival nem szabadna újraindulgatnia. Valami beterhelhet és a táp összeeshet? BOREN-t használsz?
Programban nincs véletlenül stack túlcsordulás?
(#) bbalazs_ válasza ToMikaa hozzászólására (») Nov 19, 2011 /
 
Watchdog ki van kapcsolva?
Ha irsz egy 'bonyolult' ledet kigyujt, var, ledet kikapcsol es innentol egy onmagaba fordulo vegtelen ciklusba futo (tehat nem az elejere) progit akkor is ujraindul?
Ha igen, akkor hardverhiba, ha nem, akkor valami programhiba, ami resethez vezet.
Egyebkent biztosan reset ez, nemcsak valahol nincs RET vagy JMP, aztan vegigszalad a memorian es kezdi elolrol?
(#) ToMikaa válasza watt hozzászólására (») Nov 19, 2011 /
 
BOR be van kapcsolva és 2.8 V-ra van állítva, de kikapcsolva is reset-el. STVREN van, de kikapcsolva is reset. Az a helyzet, hogy gyakorlatilag teljesen lecsupaszítottam a programot. Már semmi nincs benne, csak pár init rutin (külső EEPROM, külső SRAM, grafikus LCD és TCP stack init). Ezek rendben lefutnak, utána már csak egy while (1); van a teszt kedvéért. Kikapcsoltam minden interrupt-ot, de még így is csinálja.
Most megpróbálok egy butuska programot rátölteni, amiben tényleg nincs semmi, csak egy UART init és egy while (1).

Szerk.: @bbalazs_: a watchdog ki van kapcsolva.
Következő: »»   1036 / 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