Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   235 / 1320
(#) watt válasza trudnai hozzászólására (») Jún 29, 2008 /
 
Köszi a választ! Igen ismerem a delays.h hadert, de nekem nem tetszenek, mert ciklus a "mértékegység".
Aztán sok olyan rövid időzítés kéne, aminél továbbtart a függvény meghívása.
Kipróbáltam a \ karaktert, és műkszik. érdekes, hogy nem lehet elválsztani a do és a { karaktert, azoknak egy sorba kell kerülniük, szemben a rendes kóddal, ahol egymás alá is kerülhetnek.
Tehát így nem fordul:
  1. do \
  2. { \
  3. Wait++; \
  4. } \
  5. while(Wait<2)

csak így:
  1. do{ \
  2. Wait++; \
  3. }while(Wait<2)

Gondoltam én is a Wait_ms(ms) megoldáson, már használtam hasonló "macrot", de igazából alig kell néhány idő, amit így is meg lehet oldani.
Mégegyszer köszi a segítséget!

Ja igen, a NOP. Így oldottam meg:
  1. #define         NOP                             _asm NOP _endasm        //1 ciklus
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Az OPTION regiszter RBPU(7-es) bitjét kell 0-ba tenned. Nem tudom milyen fordítót használsz...
MCLR-t? Az nem a PORTB-n van! (felhúzó ellenállás, csak a portb--n van! ADATLAP!)
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Ez még asm-ban is elég húzós, ha nincs PWM modul(itt van, de annak nem a B0 a kimeneti lába)!

Ha megszakításban akarnád ezt megoldani, akkor 20, ill 30 uS -onként kéne megszakítást generálnod. A láb lekezelése is idő és a külső programrészek is időt igényelnek. Szerintem ez C-ben semmiképpen(esetleg asm betétekkel), asm-ban pedig igencsak egyedi programmal oldható meg.
számoljunk. (nem tudom milyen az oszcid, de 20MHz ide igencsak szükséges).
Tehát 20MHz/4 => 200nS Ami azt jelenti, hogy 20uS-be 100 programlépés fér bele. Ha rendesen lekezeled a megszakítás mentéseit, az elvesz ~18 lépést, ha megoldod 30 lépésben a láb lekezelését, akkor 40 lépés marad a többi programrészre. Ez elveszi az egész időd 60%-át. Érdemesebb inkább a PWM modullal ismerkedni...
(#) Thowra hozzászólása Jún 29, 2008 /
 
Üdv!
2 külön problémáról van szó, a lábak felhúzása kilőve, marad az ellenállás.
A másiknál 20 MHz es az oszci (kvarc), az egész program csak anyit csinálna, hogy kiköp 20KHz et, egy légmagos trafót akarok meghajtani vele (propeller clock hoz hasonlót (pri 150, sec 100 menet 0,3 as huzal), egy feten keresztül..
A progi azért lenne jó c be mert ahoz többet értek mint az asm hoz (ha jóa freki akkor a progit át szeretném írni egy 12f629 be.
(#) potyo válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Idézet:
„A progi azért lenne jó c be mert ahoz többet értek mint az asm hoz”


Most mondjam azt, hogy akkor itt az alkalom megtanulni az asm-et? Ne használd a C beépített cuccait, hanem vedd elő az adatlapot a Timer résznél, és állítsd be az előosztókat, kezdőértéket, stb. a timerhez. A megszakításban ellentétesre fordítod a láb állapotát (XOR művelettel), majd a láb állapotától függ, hogy mennyi lesz a Timer következő kezdőértéke. Ha jól sejtem, itt nem kritikus sem a pontos frekvencia, sem a pontos kitöltési tényező, csak úgy kb. legyen annyi.

Amúgy miért nem csinálod mindjárt a 12F629-en? Ez a megírom egyikre, majd átírom másikra, nem szokott jó módszer lenni.
(#) Thowra válasza potyo hozzászólására (») Jún 29, 2008 /
 
Üdv!
Azért kell 2 fajta pic be mert a freki 2 helyre is kell
Az adatlapot néztem de nem lettem okosabb asm ügybe.
Az asm nak neki fogok állni de kevés az időm
Először valami ilyesmire gondoltam c be:
delay
output high
delay
output low
a delayokat viszont hiába állítgattam, max 2,5V ot sikerült kicsikarni a tekercsből, a propeller clockhoz való progival simán megy 10V is.
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Miért nem használsz ilyen helyre 555-öt pl...?
(#) Thowra válasza watt hozzászólására (») Jún 29, 2008 /
 
Üdv!
Próbáltam de nem vált be.
A freki belövésénél nemárt ha gyorsan tudok rajta módosítani (egyszerűbb átírni a progit mint másik kondit és ellenállást beforrasztani).
(#) potyo válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Potméterrel mégegyszerűbb módosítani...
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Idézet:
„(egyszerűbb átírni a progit mint másik kondit és ellenállást beforrasztani).”

Nem akarok gonoszkodni, de mi egyszerűbb?
(#) potyo válasza watt hozzászólására (») Jún 29, 2008 /
 
Mondjuk ez egy érdekes jelenség, de én is egy rakás helyre teszek kontrollert, ahová épp nem lenne lényeges. Ha kicsi a hely, akkor általában jobban el lehet férni egy 78L05+pici kontrollerrel, mint egy analóg áramkörrel. Pl. autóba az ablaktörlő relé helyére vagy a belső világításhoz kontrollert raktam.
(#) watt válasza potyo hozzászólására (») Jún 29, 2008 /
 
Igen, de Te meg tudod bele írni a progit, és neked tényleg egyszerűbb. (erről írtam, hogy nem akarok gonoszkodni.)
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Hogy ne csak gonoszkodjak, csatoltam egy megoldást asm-ban. (teljes project, csak csomagold ki és szimuláld le a működését, elvileg működik)
Még annyit, hogy ez tényleg csak a frekit csinálja meg, semmi mást nem írhatsz hozzá, mert az egész bukik! Természetesen a frekit és a kitöltést módosíthatod a várakozási rutinokban lévő értékek módosításával.
(#) Thowra válasza watt hozzászólására (») Jún 29, 2008 /
 
Próbálkoztam én is , de a lentebb említett dolog, a delayos nem akar menni.
Ami a helyet illeti, az van bőven, viszont ha lehet 555 helyett inkább a pic mellett matadok, ebből az esetből is tudok tanulni, ha mást nem akkor azt, hogy delay és high / low utasításokkal nem fog menni :S
De ha nem azzal kellene akkor mivel?
Már végigpróbáltam vagy 40 variációt de egyikkel se ment 3V fölé a fesz
(#) potyo válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Idézet:
„ha mást nem akkor azt, hogy delay és high / low utasításokkal nem fog menni :S”


Igen, azt megtanulhatod belőle, hogy a delay tipusú dolgokat el kell felejteni (vagy legalábbis kicsit nagyobb körültekintéssel kell használni, de szinte minden feladat megoldható enélkül is). Használd a Timert, az van ilyen célra kitalálva. Hogy ne írjak kész kódot, mert akkor abból nem tanulsz, viszont segítsek valamit, itt a módszer, hogyan kellene csinálni:

  1. ha a timer túlcsordulást jelző bit egyes
  2. {
  3.   töröljük a timer túlcsordulást jelző bitet
  4.   ha a láb magas
  5.   {
  6.     alacsonyra állítjuk a lábat
  7.     beállítjuk az egyik kezdőértéket a timernek
  8.   }
  9.   ellenkező esetben
  10.   {
  11.     magasra billentjük a lábat
  12.     beállítjuk a másik kezdőértéket a timernek
  13.   }
  14. }
(#) Seele válasza watt hozzászólására (») Jún 29, 2008 /
 
Szia,
Részben értem csak amit írsz. Annyit tudok, hogy nincs a 4550-en bootloader, PicKit-tel programoztam fel, tehát elvileg csak az a program van rajta, amit én ráteszek. Az "elkülönített programrész" dolgában kérlek homályosíts fel! Köszi
(#) Seele válasza trudnai hozzászólására (») Jún 29, 2008 /
 
Szia,
Az Mplab 8.0-ás verziójú, ez is ismeri a 4550-et. Azt, hogy rossz helyre mutat a pointer, azt meg onnan tudom, hogy - működő debugger hiányában - úgy tesztelem az értékét, hogy kiküldöm egy LCD-re (amúgyis azt fejlesztem). A kiírás működik, és látszik, hogy egy katyvasz a tartalma... :S És mint említettem, Mplab Sim-mel megy, élesben a PIC-en nem... ha van bármi ötleted, köszönöm előre is!
(#) Seele válasza Seele hozzászólására (») Jún 29, 2008 /
 
Még annyit hozzáteszek, hogy természetesen nem "nyersen" küldöm az integer értékét karakterként az LCD-re, mert az kijelölne egy akármilyen karaktert, hanem természetesen előbb 0x30-at hozzáadok (onnan indulnak az ASCII számok), és így 0-9 közötti értékre tudom tesztelni. De ha stringgé alakítom itoa vagy sprintf segítségével, úgy is katyvasz lesz belőle a kijelzőn, élesben.
(#) Thowra válasza watt hozzászólására (») Jún 29, 2008 /
 
Üdv!
A hex működik, van elég fesz.
Gondoltam meglesem a progit, megnyitottam mplabbal és mindenféle átírás nélkül próbáltam fordítani, eredményt csatolom mert ha beillesztem akkor fél oldal
Elég ritkán használok mplab ot (elég negy baj, de magyar leírást amin el lehetne sajátítíni a használatát nem találtam).
Mi nem stimmel?
Hogy tudom orvosolni?
(#) watt válasza Seele hozzászólására (») Jún 29, 2008 /
 
Bocsi, rosszul fogalmaztam. Tehát pont arra gondltam, hogy csak a Te programod van-e a PIC-ben, vagy más firmware mellé teszed kiegészítésként.
Szóval akkor ha nem titok, csatold fel a forrást, hátha többet látunk...
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Az elérési út hosszabb mint 64 karakter! Helyezd át a projectet rövidebb elérésre!

Egyébként csak 1 hiba van, a többi csak üzenet, ami arra vonatkozik, hogy néhány regiszter nem a 0-s bankban van.
(#) Thowra válasza watt hozzászólására (») Jún 29, 2008 /
 
Átraktam és most már ok
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Szuper! Akkor most nincs más hátra, mint megérteni mi miért van(nagyon egyszerű!), és a vázból kiindulva más programokat is fel tudsz építeni. Az asm parancsokat szépen részletezve megtalálod az adatlapban. Ha engem kérdezel az asm egyszerűbben kezelhető, mint bármelyik C. Persze ezzel lehet, hogy nem mindenki ért egyet.
(#) Thowra válasza watt hozzászólására (») Jún 29, 2008 /
 
Az tény, hogy asm ban nincs amit ne lehetne megoldani, persze a parancsok ismeretével és kellő tapasztalattal
A C nekem átláthatóbbnak tűnik, nyilván mert senki nem magyarázta el, írta le érthetően az asm ot, legalábbis nagyon a legelejét nem. Itt arra gondolok, hogy pl pascalnál az elején le volt írva, hogy uses crt, graph... al kezdődik, utánna változók, konstansok deklarálása, begin end.
Aztán jöttek az egyes parancsok, mit csinálnak, mire alkalmasak. Na ilyen leírást nem találok az asm hoz pedig nagyon jó lenne. Amiket találtam azok a"fél szavakból is megérted" kategória.
....
mov
al valami
dx izé
...
de, hogy mi micsoda és mire kell azt sehol
(#) watt válasza Thowra hozzászólására (») Jún 29, 2008 /
 
Mint emítettem adatlapban benne van az összes, példákkal. Ezek annyira egyszerű utasítások, amiket nem kell elmagyarázni külön. Elég, ha megnézed mi mit okoz és mivel. És ezek az infók ott vannak...
pl. ezen mit kéne magyarázni, hogy:
MOVLW 0x30
MOVWF PORTB ???
vagy:
BSF PORTB,2 ???
(#) AMD hozzászólása Jún 29, 2008 /
 
Megépítettem az oshon féle pic égetőt. Ráadtam a stabil 5/13,2 voltot és mind a két led világított. Ez normális vagy valami nem ok? Pic-et még nem próbáltam vele programozni.
(#) watt válasza AMD hozzászólására (») Jún 30, 2008 /
 
Rá vold dugva a PC-re és futott a program?
(#) trudnai válasza Seele hozzászólására (») Jún 30, 2008 /
 
Szia Seele,

C18-ban fejleszted, ugye? Tudod csatolni a forrast? Ha azt eppen nem amin dolgozol akkor csinalj egy nyulfarknyi demot ami csak a problemara koncentral (tehat hogy ha jol ertem a fuggveny parameter a hiba, akkor csak ez legyen benne mint teszt, ellenorizd le, hogy a teszt progi is produkalja-e ugyanazt a hibat es ha igen akkor azt csatold). Igy Levegobe kapkodva kb fogalmam sincs mi okozatja a problemat, hacsak nem az amit watt fejteget, hogy valamivel ossze linkeled ami ossze zavarja, vagy bootloaderes akarmid van ami osszze zavarja ezt az egeszet.
(#) trudnai válasza Thowra hozzászólására (») Jún 30, 2008 /
 
Nem, a Pascal nem "uses crt,graph" -al kezdodik hanem a Program kulcsszoval. Uses crt a Pascalban nem is letezik, az csak a Turbo Pascalban el - Latod? Nem is olyan egyszeru

A Topi fele cikkben en szerintem azert le van ez irva, azonkivul van angol nyelvu leiras a legeslegelejerol - en is igy tanultam meg. Ha angolt olvasod akkor meg gyakorlod is a nyelvet amit kesobb kamatoztatni tudsz az adatlapok bongeszesenel. Asm-nel ahany CPU/MCU annyi fajta utasitaskeszlet, persze lehetnek hasonlo utasitaskeszletu dolgok is. Mint Pascal-ban is, ahany Pascal implementacio annyi fajta mod ahogy mukodik.

Amugy ha Kinaba akarsz gyalogolni az ut baromi hosszu, es akkor vagy megteszed az elso lepest, es egy ido utan oda ersz, vagy allandoan sirankozol milyen hosszu az ut es el sem indulsz. Ha nem akarod megtanulni az asm-et inkabb mondd azt baromira nem fulik hozza a fogad, de ne hivatkozz arra, hogy nincs ilyenre irodalom.

Ennyit a mai napi papolasomrol Jo molyoloast
(#) AMD válasza watt hozzászólására (») Jún 30, 2008 /
 
Nem csak a fesz volt ráadva.
Következő: »»   235 / 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