Fórum témák
» Több friss téma |
IGEN!
Azonban a pontossága csak kvarcoszcillátorral garantálható.
Köszi.
Úgy érted a saját belsőjével nem? Vagy milyen más lehetőség van? 555-el csaknem hajtom meg. Villogó leddel se szivesen.
Idézet: A saját belső oszcillátorához kívülről egy rezgőkvarcot kell kapcsolni, hogy pontos legyen az időalap. Mindez kiderül az alaplapi specifikációból és ajánlásokból, vagy a korábban ajánlott projektekből. „Úgy érted a saját belsőjével nem?”
Tul a pontossagon a PIC ha kulso, un. ora kvartzrol hajtja a timer moduljat, akkor akar olyan kicsi fogyasztas is elerheto, amivel a PIC egy LCD uveget megajtva ket ceruza elemrol evekig is akar elmegy. Ehhez a PIC-nek sokat kell aludnia. Szilva csinalt ilyen orat es ha jol tudom elfogadhato pontossaggal megy neki. Masik lehetoseg, ha un. RTC kulso ora aramkort illesztesz hozza es akkor nem kell mindig ujra programozni az idot, a PIC-nek csak annyi a dolga, hogy lekerdezze az idot mikor szuksege van ra.
De nezd meg a projecteket amiket icserny ajanlott...
És még ezt a kvarcot "hangolni" sem árt, ami úgy oldható meg, hogy az egyik kondi helyett ami a kvarc és a negatív közt van azt egy trimmerkondival váltod ki és azt tekergeted úgy, hogy pontos legyen a freki. kb 0-3 ezred százalékkal lehet így változtatni a frekin.
itt egy példa: http://www.best-microcontroller-projects.com/pic-frequency-counter.html
Köszi, de az a baj, a kezdők közt is kezdő vagyok.
Mi az az MPLAB?
Na utánanéztem erről már van infó.
Most egy más kérdés: Tudtok e olyan próbapanelről ami egy sokoutputos pic próbájára jó sok sok leddel? Inkább ilyenen gyakorolnék. Köszi
segítségeteket szeretném kérni ismét. CCP-vel próbálkozunk, beüzemelni a capture modult.
Nagyon elején járunk a fázisban, viszotn nem nagyon akaródzik működni a dolog. Egy nyomógomb és egy LED-ről van szó. -PIC16F887, 4MHz, mikroC compiler, -LED az RC1-en, -CCP1-en pedig egy felhúzóellenálláson keresztül állandó VCC-t kap, nyomógombbal pedig leföldelem. Annyit szeretnénk elérni, hogy ha megnyomjuk a nyomógombot, a LED felvillanjon. Íme a kódrészlet:
A dolog nem akar működni, pedig e szerint, mikor megnyomom a nyomógombot és elengedem, pergés nélkül is keletkezik egy le és egy felfutó él is. Pedig a led ezt nem jelzi. A kód jó lenne szerintetek? Vagy kihagytunk belőle valamit? a kritály frekvenciáját, illetve a PIC egy két alapbeállításást a program menüjéből lehet állítani. Előre is köszönöm
A megszaíításokat akkor engedélyezd, amikor már mindent beállítottál. Nem néztem jobban utána, és a microC-t sem ismerem, ezért egyelőre csak ennyi...
Azt nézted, hogy a LED világít-e? (direktben bekapcsolni)
Szia!
Nem jó ötlet, ha nem törlöd a megszakítás kiváltó okot a kiszolgáló rutinban: A kontroller az első elfogadás után a kiszolgáló rutinból való kilépéskor újra érzékelni fogja a régi kérést, megint a kiszolgáló rutin fog lefutni, a főprogram futtatására nem marad ideje... A CCP1IF bit nem az INTCON, hanem a PIR1 regiszterben van. Idézet: „A megszaíításokat akkor engedélyezd, amikor már mindent beállítottál.” Ha egy Timer0 modult akarok működtetni, akkor először a Timer0 (nálam ez most a T0CON regiszter)-t érdemes beállítani, és utána a megszakítás-vezérlő regisztert (INTCON)? Gondolom azért célszerű így, mert így rendesen el tud indulni a Timer0. Bár én most fordítva állítottam be (először az INTCON-t, utána pedig a T0CON-t), de elvileg jól megy. szerk.: ja és ASM nyelven valósítom meg.
Mindig el tud indulni rendesen, csak pl. ha először engedélyezed a megszakítást, majd utána állítgatsz még valamit, akkor közben előfordulhat olyan megszakítás, amire nem számítasz és esetleg még valami nincs inicializálva, amit a megszakítási rutin esetleg használna. Gyakran teljesen mindegy a sorrend, de mégis jó szokás, ha mindig az inicializálás legvégén billented 1-be a globális megszakításengedélyező bitet.
Köszönjöm a gyors válaszokat, mindegyikből tanultam, de a közvetlen megoldást az jelentette, hogy:
"A CCP1IF bit nem az INTCON, hanem a PIR1 regiszterben van." A legszörnyűbb az egészben, hogy a compiler nem szólt miatta hogy INTCON.CCP1IF nincs, és este volt szerencsénk elnézni Örök hála. Mégegyszer köszi mindenkinek. Idézet: „A legszörnyűbb az egészben, hogy a compiler nem szólt miatta hogy INTCON.CCP1IF nincs” Igen, ez sajnos hosszú idő óta megoldatlan probléma. Ugyanis az van a header fájlokban, hogy pl. az INTCON mint konstans értéke 0x0B, a CCP1IF értéke 0x04, és a fordító csak behelyettesíti a konstansok helyére a számokat és részéről ennyivel le van rendezve. Írhatsz pl. BSF PORTA, RB0-t is, ami nyilvánvalóan logikátlan, mégis simán elfogadja és az PORTA, RA0 bitet fogja bebillenteni.
Én is valahogy így gondoltam, köszi a választ! :yes:
Sziasztok.
Szeretnék egy-két (remélhetőleg megválaszolható) kérdést feltenni. 1. Hogyan lehet kiszámolni az AD konverzió késleltetését. Pontosabban az alábbi részletre vagyok kíváncsi. MOVLW B’11000001’ ;ADC Frc clock, MOVWF ADCON0 ;AN0, On CALL SampleTime ;Acquisiton delay BSF ADCON0,GO ;Start conversion BTFSC ADCON0,GO ;Is conversion done? A progiban amit csatoltam az "advar" késleltetést csak saccra adtam meg, mert mikor az érték ".10" volt a mostani ".50" helyett, a PIC leállt amikor a potit lecsavartam a GND felé. Persze ebbe beleszól a "call Delay" késleltetés is, csak ott még nem fejeztem be a progit. 2. A másik kérdésem az lenne, hogy lehet-e olyat csinálni, hogy pl. villog egy led egy kimeneten X ideig, a kimeneten történő változást (a villogást)elmentem a PIC EEPROM-jába, és egy X idő után visszajátszom.
Hello. Pickit 2-t használok, és az lenne a kérdésem, hogy érdemes-e használni az LVP mode-ot? Vagy tulajdonképpen mi is annak az előnye?
1. Nem
2. Az LVP előnye az, hogy 5 V-os jelszintű logikai jelekkel is lehet programozni "négy szál dróttal". A hátrány az, hogy a PGM lábat lefoglalja a programozás / programfuttatás módok közötti váltás vezérlése, tehát eggyel kevesebb I/O láb lesz.
Lehet, hogy nagyon noob lesz a kérdés, de hogy kapcsolom ki az LVP módot? jelenleg ott vagyok, hogy a PGM láb, az fel van húzva a tápra, de egy jumperrel oldottam meg, szóval a levegőben is hagyhatom lógni. A másik kérdésem az lenne, hogy én a PIC belső oszcillátorát szeretném használni, a config biteknél akkor az Oscillator-t mire kell állítanom? (PIC16F887)
válaszodat előre is köszi.
A config biteknél lehet kikapcsolni az LVP-t és belső oszcira állítsd természetesen az oszcit, ha azt akarod használni.
Az adatlapban minden benne van, nekem is azt kéne megnézzem konkrét értékekért, szerintem ezt meg tudod tenni magad is.
Tényleg megvannak köszi, most már a debug mód is jó. Viszont esetleg valakinek van ötlete, hogy miért van az, hogy a debug módban simán tudom futtatni a programom, viszont amikor lehúzom róla a pickit 2-t és ráadom a tápot, sehogy sem akar elindulni a ráégetett program? Tápfesz megvan, MCLR tápra húzva, egyszerűen nem értem.
Azért, mert a normál futáshoz nem debug buildet kell készíteni. Válaszd ki a Programmer->Pickit2-t, fordítsd újra és úgy égesd be.
Sziasztok!
Segítségre lenne szükségem, problémám a következő: Fordulatszámot szeretnék majd kiírni Grafikus LCD kijelzőre, Capture + Timer1-el, belső OSC-vel. Jelenleg próbaképp csak időt szeretnék mérni két gombnyomás között, ami eleinte jól is megy, de X gombnyomás után nem frissíti a kijelzést. A kódban lehet látni, hogy hőmérsékletet is mér. Azt a "lefagyás" után tökéletesen frissíti és jól mutatja, csak a gombnyomások közötti időt az istennek sem akarja. A PIC memóriája nincs betelve, tehát ez nem lehet a probléma. Ezt úgy kell elképzelni, hogy kb. 30-szor megnyomom a gombot(nincs pergésmentesítve) 1 másodperces időközökkel 15-öt mutat mindig, mert annyit is kell (timer2 túlcsordulásainak száma). de kb. 30 gombnyomás után nem frissít tovább. Valamikor ez hamarabb következik be, valamikor később. Jelgenerátorral is próbáltam, ott is néhányat kijelzett utána se kép se hang. A pontosítás után rákötöttem a CCP1-et egy jelgenerátorra, hogy pontos 1HZ-s jelet kapjon a PIC, és a túlcsordulás száma pontosnak mondható, de a TMR1 értéke nem áll be pl. egy 500Hz-s értéknél fix értékre. 15 Hz-es freki után 0-t kell kijeleznie és ez megy is, de az említett probléma miatt csak rövid ideig. Mondom, hőmérsékletet frissíti a hiba beállta után is. Íme a kódrészlet:
-PIC16F887, 4MHz, mikroC compiler, -A kristály frekvenciáját, illetve a PIC egy két alapbeállítását a program menüjéből lehet állítani. Kérlek segítsetek, mert nem tudom hol lehet a hiba. Előre is köszönöm
Sziasztok!
Hogyan lehet egy 2x16 karakteres LCD kijelzőt PIC-el vezérelni úgy, hogy egy nyomógomb hatására váltsa a szöveget? Pl. Meg van adva 10 szöveg és ezeknek egymás után meg kell jelenniük a gombnyomás hatására. Sima szöveg kiirás az lcd-re megvan, a kapcs. rajzot mellékeltem, a progi:
Én létrehoznék egy változót, amit növel a gombnyomás. Ha eléri a szövegek számának értékét, lenullázod. Egy végtelen ciklusban mindig megvizsgálod az értékét, és ha 1, akkor egyik szöveg, ha 2, másik, stb...
Vagy egy tömböt csinálsz a kiírandó stringekből, és a változó szerint a tömb más-más elemét írod ki. Konkrét kóddal nem tudok segíteni, ezt a nyelvet nem ismerem.
A programozási rész nekem is megy, inkább az lenne a kérdés, hogy hogyan kössem rá a gombot?
A PIC lábat 4,7k ellenállással tápra kötöd, a gomb pedig a láb és a föld közé megy (nyitott állapotban). Tehát gombnyomáskor alacsonyan lesz a láb.
|
Bejelentkezés
Hirdetés |