Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   551 / 1319
(#) potyo válasza lidi hozzászólására (») Aug 24, 2009 /
 
A kvarcok pontossága százalékban van megadva, nem abszolút értékben. Ebből kifolyólag pedig mindegy milyen órajelből indulsz ki, az osztás után is ugyanaz a százalékos eltérés marad. Pl. 20MHz-es kvarc ha 1% pontosságú, akkor az 200kHz maximális eltérést jelent. Ha ezt osztod 20000000-val, akkor másodpercenként egy századmásodperccel tér el. Ha van egy 32768Hz-es kvarcod, ami 1% pontosságú, akkor az 327,68Hz maximális eltérést jelent. Ha ezt osztod 32768-al, akkor is egy század másodperces az eltérésed. Természetesen a kvarcok százezredrész pontosságúak, csak a példa miatt írtam az 1%-ot.

Annyival jobb az órakvarc, hogy az pontosabb szokott lenni, mint a MHz-es kvarcok, illetve a CMOS áramkör fogyasztása a frekvenciával egyenesen arányos, tehát a 32768Hz-es kvarccal épített oszcillátor fogyasztása kb. százada a 3MHz-es kvarccal épített oszcillátorénak. Akkus vagy elemes üzemnél ez nem kis előny.
(#) elektroláma válasza frecsko hozzászólására (») Aug 24, 2009 /
 
Most így megnézve a kódot, nem értem, mit akarsz csinálni. Ha kiegészíted a sorommal, akkor ha lenyomod világít, egyébként nem. Már ha mindkét helyen átírod.
Te nem olyan progit szeretnél, ami egy-egy nyomásra az ellenkezőjére állítja a ledek állapotát? Ki-be kapcsoló gomb.
(#) lidi válasza potyo hozzászólására (») Aug 24, 2009 /
 
Hát érdekes, közben találtam egy leirást, mert nem igazán értettem hogy mi ez a ppm: Bővebben: Link

Árlistában böngészve a 32.768 -as "óra" quartz az 20ppm, míg egy MHz -es meg 30. Szóval szerintem ez nem olyan számottevő különbség. Bár ha úgy vesszük akkor 1.5x az egyik a másikénak. De gondolom ezek az értékek a megengedett maximális eltérések, ettől átlagban azért pontosabbak. Adatlapot böngészve feltűnik hogy nem megfelelő hőmérsékletre legalább ennyit el is mászhat a frekvenciájuk. Szóval nehéz eset otthon atomórát építeni.
(#) elektroláma válasza lidi hozzászólására (») Aug 24, 2009 /
 
Chipcadnél kapsz 10ppm-es órakvarcot is.
(#) watt válasza elektroláma hozzászólására (») Aug 24, 2009 / 1
 
Idézet:
„A kód gombbal lehet úgy betenni a kódot?”

Igen. Használd a kiegészítéseket is: code=c, code=asm.
(#) watt válasza frecsko hozzászólására (») Aug 24, 2009 /
 
Ehhez még annyit, hogy az ilyen benntragadós dolgokhoz érdemes egy Flag-et használni. Azaz a gomb csak egy jelzőbitet állít be és ezt figyeled a további elágazásban és gyújtod ki a LED csoportokat, vagy nem. Ez az ellenőrzés bennt lehet a fő ciklusban is, ahol a ciklustól függően sokszor lekezelődik a Flag vizsgálata, vagy a gomb kezelés utáni folyamatban, ahol csak akkor fut le az ellenőrzés, ha valamelyik gombon esemény volt.

Ez attól is függhet, hogy hány helyről állítod a jelzőbitet. Ha csak a gombok állítják, akkor elég a gombok után, ha máshol a programban is, vagy megszakításban is(majd ha bővíted a feladatot) módosulhat a LED-ek állapota, akkor jobb a fő ciklusba tenni.
(#) elektroláma válasza watt hozzászólására (») Aug 24, 2009 /
 
[OFF]És megvan az OFF gomb is...
Lassan csak megtanulom használni a fórumot
(#) icserny válasza elektroláma hozzászólására (») Aug 24, 2009 /
 
Idézet:
„CALL DELAY
BTFSS PORTA,0
MOVLW B'00000000' ;ha 1-es akkor kikapcsolom a LED-eket
MOVLW B'00011111' ;egyébként be
MOVWF PORTD”

Ebben nem jó az utasítások sorrendje, mert a MOVLW B'00001111' mindig felülírja W tartalmát!

Inkább így kellene:
  1. CALL DELAY
  2. MOVLW B'00000000' ;ha 1-es akkor kikapcsolom a LED-eket
  3. BTFSS PORTA,0
  4. MOVLW B'00011111' ;egyébként be
  5. MOVWF PORTD
(#) watt válasza icserny hozzászólására (») Aug 24, 2009 /
 
Igen, amennyiben ez lenne a feladat, de az eredeti elgondolás az, hogy az egyik gombbal be, a másikkal ki. Ettől még a meglátásod hibátlan!
(#) szilva válasza lidi hozzászólására (») Aug 24, 2009 / 2
 
Amiket írtam, az tapasztalat. Adatlapokat nézegetve nekem sem volt igazán világos, hogy mi okozza a különbséget, de tény, hogy a 11MHz-es kvarcaimról járatott órák pár nap alatt már perc körüli eltérést mutattak, a 12.000000MHz-esről járatottaknak már kb. 2 hét kellett ehhez, míg a 32768Hz-es órakvarcokkal működők évente hoznak össze maximum 5 percet (van, amelyik másfél év után tart 2 perc körül).

Egyébként az is feltűnő, hogy az adatlapokat megnézegetve a MHz-es tartományú kvarcoknál kétféle "ppm" értéket definiálnak, egy toleranciát, és egy hőmérséklettartományon belüli "mozgás"-t. Sajnos az alkatrészboltok kínálatából az esetek legalább 90%-ában nem derül ki sem a kvarc gyártója, sem pedig az, hogy pontosan milyen paraméterű az adott kristály. Nem mindegy, hogy a tolerancia, vagy a hőmérsékletre adott frekvenciaváltozás az a "ppm érték", amit jó esetben a termék mellé írnak.

És még ha tudjuk is a pontos típust, akkor sem lehetünk teljesen biztosak a dolgunkban, hacsak a kvarcon nem találjuk meg a gyártás idejét, ugyanis van még egy érték, az "aging", azaz az öregedés. Ahogy látom, ezeknél a kvarcoknál ez tipikusan +/-3, de maximum +/-5ppm évente, azaz lehet, hogy egy eredetileg 30ppm-es toleranciájú, de 6 éve elfekvő készleten lévő kristály a valóságban 60ppm eltérést fog mutatni szobahőmérsékleten, nyári napra kivíve a készüléket meg esetleg 90ppm-et.

Megnézve az órakvarcokról is egy adatlapot azt látom, hogy a paraméterek nagyon hasonlóak a MHz-esekhez. Lehet, hogy az eltérés a gyártásból adódik, és a kisebb frekvenciájúakat pontosabban tudják gyártani. Ehhez nem értek, lehet, hogy valaki majd felvilágosít. De még az is elképzelhető, hogy azért foglalkoznak a gyártás precizitásával jobban az órakvarcok esetében, mert azokat tényleg szinte kizárólag időalaphoz használják fel, ott pedig fontos a pontosság.

http://pdf1.alldatasheet.com/datasheet-pdf/view/143650/AURIS/TC38.html
http://www.microcomdevices.com/specs/HC49U-HC49G.pdf
http://www.vanlong.com/download/HC49U.pdf
(#) rakos28 hozzászólása Aug 24, 2009 /
 
Sziasztok!
Még csak most ismerkedem a PICekkel. És rögtön volna is egy kérdésem. A szitu explorer 16 board
hozzá pic24F de akármit is töltök rá nem látok semmit.
Próbáltam mindenféle példa programokat, de semmi.Volna valakinek valami ötlete? Vagy esetleg egy példa programja, ami kiírja, hogy "helló világ" bár ilyenem elvileg van!
Előre is köszi!
(#) icserny válasza rakos28 hozzászólására (») Aug 24, 2009 /
 
Idézet:
„explorer 16 board hozzá pic24F de akármit is töltök rá nem látok semmit”

A gyári demóprogrammal egyébként működik?
(#) elektroláma válasza icserny hozzászólására (») Aug 24, 2009 /
 
És tényleg régen volt már.
Basicben vagy ez megy le, vagy az(ifthenelse)...
Akkor következő feltételezés
ez ki-be kapcsolgatná nyomogatásra
  1. MOVLW B'00000000' ;ha 1-es akkor nem csinál semmit
  2. BTFSS PORTA,0
  3. MOVLW B'00001111' ;egyébként inverzen világít
  4. XORWF PORTD,1
  5. CALL DELAY

Persze kérdés, hogy alapállapotban felhúzott gombról van-e szó.
(#) elektroláma válasza szilva hozzászólására (») Aug 24, 2009 /
 
Ha 20-25 fok van folyamatosan, akkor elég pontos lesz.
Van hőkompenzált kvarc is. A hangkártyámon pl egy rakon aej-5e-s van.
(#) frecsko válasza elektroláma hozzászólására (») Aug 24, 2009 /
 
De ilyet.
(#) icserny válasza elektroláma hozzászólására (») Aug 24, 2009 /
 
Ennek az elkapkodott megoldásnak az a hátulütője, hogy amíg le van nyomva a gomb, addig vég nélkül váltogatja az állapotot, s az elengedés pillanatától függ, hogy melyik állapotban rögzül.

A tisztességes megoldáshoz egy teljes lenyomás/felengedés ciklust kell detektálni (lenyomáskor és felengedéskor is kell pergésmentesítő késleltetés), és ciklusonként csak egy állapotváltást szabad beiktatni.
(#) elektroláma válasza icserny hozzászólására (») Aug 24, 2009 /
 
Ez így van. Watt is ezt írta(állapotfigyelés). A meglévő kódhoz így nemsokat kellett hozzáírni, és látja, mi történik. Utána jöhet a még nyomom a gombot? rész. Lépésenként sztem könnyebb megérteni.
(#) frecsko válasza elektroláma hozzászólására (») Aug 24, 2009 /
 
És azt a Flag bitet hogyan tudom figyelni és a változást lekezelni?
Egy gombbal akarom a ki és bekapcsolást megoldani.
(#) rakos28 válasza icserny hozzászólására (») Aug 24, 2009 /
 
A gyári demója nincs meg, a MICOCHIPről töltöttem le demót ehhez. De az nem megy! így állok jelenleg! várom az ötleteket!
(#) icserny válasza rakos28 hozzászólására (») Aug 24, 2009 /
 
Először is: mivel programozod? Ha PICkit2-vel, akkor ügyelni kell rá, hogy a PICkit2 ICSP csatlakozó a kapcsolási rajzon és a kártyán fordítva van feliratozva (az 1-es láb a 6-os, és így tovább).

Másodszor: mellékelek egy demó .hex állományt (a forráskódja itt található), ami egy LED-et villogtat és az LCD kijelzőn egy feliratot scrolloz. Ha ez nem működik, akkor gáz van.

A program a PIC24F128GA010 mikrovezérlőhöz való.

szerk: továbbá "y Azevedo" , azaz PIC24FJ...

lcd4bit.hex
    
(#) elektroláma válasza frecsko hozzászólására (») Aug 24, 2009 /
 
Megnéztem a HE-s pic-es cikket, és ott sincs lekezelve a lenyomvatartás.
Tehát: lenyomod a gombot és eltárolod egy változóban, hogy lenyomott státuszban van. És ha felengeded, akkor átállítod a státuszt. Persze delayekkel variálva, stb...
Pl: gombstátusz=0 az elején. Lenyomod, akkor gomb1státusz=1, majd elindul egy delay(ez mondjuk a prellezést küszöböli ki), és ha a delay végén még mindig le van nyomva, akkor gomb1státusz=2, tehát tényleg le van nyomva, egyébként gomb1státusz=0. Minden ciklusban figyeled, hogy ha 2-es a gomb1státusz, és a gomb fel van engedve, akkor fut csak le a felengedés függvény, aminek az elején átállítod a gomb1státuszt 0-ra, és minden kezdődik elölről.
Kb.
(#) elektroláma válasza frecsko hozzászólására (») Aug 24, 2009 /
 
  1. Loop    btfss   SWPORT, SW1
  2.         call    Switch1
  3.                 goto    Loop
  4.  
  5. Switch1 call    Delay                   ;give switch time to stop bouncing
  6.         btfsc   SWPORT, SW1             ;check it's still pressed
  7.         retlw   0x00                    ;return is not
  8.         btfss   SWPORT, LED1            ;see if LED1 is already lit
  9.         goto    LED1ON
  10.         goto    LED1OFF
  11.  
  12. LED1ON  bsf     LEDPORT,        LED1    ;turn LED1 on
  13.         call    Delay
  14.         btfsc   SWPORT, SW1             ;wait until button is released
  15.         retlw   0x00
  16.         goto    LED1ON 
  17.  
  18. LED1OFF bcf     LEDPORT,        LED1    ;turn LED1 on
  19.         call    Delay
  20.         btfsc   SWPORT, SW1             ;wait until button is released
  21.         retlw   0x00
  22.         goto    LED1OFF

Ez 1 ledre van. De a gomb vizsgálatát meg lehet érteni belőle. Itt nem tárol státuszt.
SWPORT mondjuk PORTA, SW1 meg 0
LEDPORT mondjuk PORTD, LED1 meg 0
(#) Stefan válasza elektroláma hozzászólására (») Aug 24, 2009 /
 
Ebben van egy gombfigyelés még, igaz ez C, de nekem nagyon tetszik ahogy megoldja a pergésmentesítést, nem konkrét delay függvényt használ, hanem egy változót növelget.
(#) elektroláma válasza Stefan hozzászólására (») Aug 24, 2009 /
 
Nekem is van mikrobasices, ott 4-5 státusz van, és 3mp-ig kell nyomni a gombot, csak akkor megy.
Ott volt fontosabb dolgom is, mint a gomb delay ciklusában szaladgálni.
De azt assemlyben be nem írom.
(#) trudnai válasza szilva hozzászólására (») Aug 24, 2009 /
 
Amúgy a kristály oszcillátor áramkör is lehet ludas, mivel a Timer1-re kötött LP oszcillátor kifejezetten 32768Hz-re lett tervezve, azonban az FOSC egy intervallumon belül kell kielégítő pontossággal dolgozzon. Nyilván kis mértékben lehet segíteni hangoló kondenzátorokkal.
(#) rakos28 válasza icserny hozzászólására (») Aug 25, 2009 /
 
Köszönöm szépen!
Igen azzal programozom, de írni olvasni tudom, csak éppen nem látom, hogy bármi is történne.
Kössz mégegyszer!
(#) icserny válasza rakos28 hozzászólására (») Aug 25, 2009 /
 
Az Eplorer16 külső tápfeszültséget igényel, a PICkit2 átalakítás nélkül nem tudja meghajtani. Egy 9 V-os dugasztáp rá van kötve a kártyára?

Programozás után a PIC24 mikrovezérlő reset lábát el kell engedni (MPLAB-ban: Programmer/Release from Reset, PICkit2.exe esetén is van valami hasonló), vagy egyszerűen le kell választani a PICkit2 programozót a kártyáról.

A PIC-PIM kapcsoló PIM állásban legyen, ha külön rádugott modulon van a PIC. PIC állásban akkor legyen, ha a kártyára beforrasztott mikrovezérlőt akarod futtatni! (nálam csak PIM modulok vannak...)

A kapcsoló alatti jumper PIC24 állásban legyen (a másik állás a PIC18LF4550 programozásához és reseteléséhez való).

Nos, a tegnap küldött programmal mit csinál a kártya?
(#) gulasoft válasza rakos28 hozzászólására (») Aug 25, 2009 /
 
Nekem is ilyenem van, már bekapcsoláskor az lcd-n mennie kell a demónak, persze csak akkor ha adsz neki egy tápot is mert a pickit 2 nem tud neki annyit adni ami a rendes működéshez kell.
(#) szilva válasza icserny hozzászólására (») Aug 25, 2009 /
 
Erről jutott eszembe, hogy anno én megoldottam a Low Pin Count Demo Board reprodukálhatóságát, legalábbis otthoni körülmények között. Bővebben: Link

Majd rittyenteni kell még hozzá beültetési instrukciókat is, mert van rajta pár átkötés, de tulajdonképpen az LPC board doksijából lett kiollózva és megszerkesztve a kép.

Korábban írtad, hogy egy kis kreativitással ebbe a kártyába betehető a 18F14K50, így aki tanulni akar, annak hasznos lehet az LPC board utánépítése.
(#) rakos28 válasza icserny hozzászólására (») Aug 25, 2009 /
 
Köszi a segítséget! A külső táp az megvan, és pickit2 is le van húzva, a jumper pic24ben. A d10 felíratú le az villod, de semmi egyéb, mintha az lcdnek baja lenne
Áramot kap, de semilyen felirat nem jelenik meg rajta.
Még próbálokzom!
Köszi mégegyszer!
Következő: »»   551 / 1319
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