[elektro] 16F PIC stack

potyo potyo.ada at gmail.com
Mon Sep 7 22:54:59 CEST 2009


2009/9/7 Huszti Andras <kyrk at villamvadasz.hu>

> Hali!
>
> Utobbi idoben egyre tobbszor futok bele abba a problemaba, hogy keves
> ennek a PIC stackja. Egyszeruen nem ertem, hogy egy ekkora ceg hogyan
> engedheti meg maganak, hogy igy elcsesszen egy PIC csaladot.
>
Ha nem felel meg a feladatnak, lehet másikat választani, van miből. A 16F
ilyen, ennyit tud és kész. Ha veszek egy baltát, azzal nem akarok káposztát
vágni, mert a balta az favágásra való.

>
> A problemam a kovetkezo: C-ben programozok es szeretek modulokat irni
> ami tobbszor felhasznalhato. Igy sokszor kell fuggvenyt hivnom. Tovabba
> jobban szeretek fuggvenyeket hivni meg akkor is ha csak egy valtozot
> kell irni. Ennek az az oka, hogy igy atlathatobb lesz a program,
> tesztelhetobb stb... Tovabba modulhatarokon tul is fuggvenyhivast
> intezek, ez amolyan szabaly. Igy mar ertheto hogy a 8 meretu stack hamar
> elfogy. Interrupt siman megeszik legalabb 5-ot. Foprogram is atlagban
> 5-os megeszik. Es meg igy is rovidre fogtam magam.
>
Nemtudom, hogy az interrupt miért enne meg ötöt, amikor csak egyet eszik meg
önmaga. Megszakítási rutinban eleve nem illik függvényeket hívogatni, mert
ha nincs függvényhívás, akkor a fordító csak az ISR-ben valóban használt
regisztereket menti el az ISR-be belépéskor, ha viszont van függvényhívás,
akkor az összes olyan regisztert elmenti, aminek az értéke nem szabad, hogy
eltérjen a visszatéréskor (mondjuk ez fordítófüggő is), illetve gyorsabban
le is fut az ISR (ez biztosan igaz minden fordítóra). Egy változóhoz csinálj
makrót (define), akkor azt beépíti a fordító a kódba oda, ahol hívva van,
nem használ stack-et. Kezdetben nekem se tetszettek ezek a makrók, amik
függvénynek néznek ki, de rájöttem, hogy praktikusak.

>
> Ezek utan a debuggolasrol mar nem is almodok. Szimulacio eleve fos.
> Kolto keredsem, hogy ezek utan hogy lehet majd hibat keresni? Sehogy
> szerintem.
>
Szerinted.

>
> Nem ertem: Hogy lehet igy elvagni egy PIC csaladot? Gyakorlatilag C-ben
> programozni a stack meret miatt nem lehet. Ertelme nem sok van ennek a
> csaladnak igy. Komolyan fontolgatom ezek utan az atterest valami masra.
> Persze az uj 16Fxxxx-esek tobb stackel rendelkeznek. Es elekreztunk a
> kovetkezo dologhoz amit nem ertek:
>
Gyakorlatilag ők nemis csináltak hozzá C fordítót, az egész családot úgy
találták ki, hogy asm-ben fogják majd programozni, idestova úgy kb. 16 éve!
Így valóban nem sok értelme van, ha stacket zabáló módon akarjuk
programozni, de azért úgy tűnik, hogy mások másként gondolják, különben nem
jelennének meg még mindig új tipusok a klasszikus (nem enhanced) mid-range
sorozatból is.

>
> Nem ertem 2: Van 500fele PIC amibol az ember kb 4 felet ismer. A tobbi
> ki tudja milyen es milyen bugos. Van ertelme ennyit tartaniuk? Szerintem
> nem. Nekem az kell, hogy az a par fele PIC amit arulnak az bombabiztos
> legyen. A 99% nem erdekel mert nem fogom valasztani mert egyszeruen nem
> ismerem oket, lehet hogy hibasak. Ismeretlent az ismertert eles
> projektben nem hagyok el.
>
Úgytűnik, van értelme. Ha nem lenne, nem tartanának ennyifélét. Néhány
darabos cuccnál nem szempont, de nagy sorozatban igencsak fontos, hogy az
adott feladathoz legmegfelelőbb és legolcsóbb chipet használják. Aztán ha
valamiből készül 20000 darab, ott megéri másik chipet használni, aminek el
_kell_ olvasni az erratajat, aztán lehet vagy nem használni. Egy a lényeg,
nem szabad az új chipet választani, várni kell mondjuk fél-egy évet, hogy
más szívjon a hibákkal.

>
> Nem ertem 3: Minek arulnak tobb fele debuggert? Utalom, hogy cserelni
> kell a debuggert, hogy hatha a masik jobb mint az elozo. Van ICD2-m es
> PICkit2-m. A ketto kozul egyik sem bombabiztos. Ezek utan minek vegyek
> ICD3-at? Legyen meg egy szemet a polcon? Normalisak ezek? Stack hiany
> miatt amugy sem tudok debuggolni.
>
Mondjuk nemtudom, hogy mi a bombabiztos, de nekem az utánépített ICD2
kiválóan működik. Az a baj vele, hogy USB-ről működik, ahhoz meg mindenféle
ipari hulladék tápokat, alaplapokat meg kábeleket használnak, aztán ha nem
jön ki 5V csak 4,3V, vagy nincs a kábelében az érpár rendesen csavarva meg
árnyékolva és leakad, amikor a szomszéd felkapcsolja a fénycsövét, vagy
valaki felhív vagy sms érkezik. ICD3 egyébként is főleg a PIC24 és PIC32
miatt jelent meg, 16F és 18F-hez totál semmi értelme lecserélni az ICD2 vagy
Pickit2-t.

>
> Szemelyes velemenyem, hogy a microchip a kozeljovoben bukni fog ha nem
> valtoztat a strategiajan. Tul sok fele PIC-et arul, ez eleve magaban
> hordoz sok veszelyt. Ami van azok kozul a 16F-esek es alattiak
> gyakorlatilag szemetek.
>
Érdekes, totál jól elvagyok a 12F-es chipekkel is. Mondjuk nemis akarok
tcpip stack-et futtatni rajtuk, mert ahhoz inkább 18F86J65-öt használok...


More information about the Elektro mailing list