Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Ezt a fordulatszám mérőt szeretném megépíteni: http://www.walktronics.de/html/led-drehzahlmesser.html A kérdésem az lenne, hogy a programot át lehet e úgy variálni, hogy ne 8000 ig mérjen hanem 10-12.000-ig? Mindenki segítségét előre is köszönöm! Mikol
Ha tudsz programozni, természetesen át lehet.
Egyébként egy elavult PIC van az áramkörben, ami sokkal drágább, mint egy újabb modell, valamint kevesebb, mint fele ennyi lábbal(6+6=12láb=>36LED) is meg lehetne oldani az egészet(talán 18lábú PIC is elég lenne), belső oszcival is, de ezt csak a szépérzékem miatt említem meg...
Az a probléma, hogy a programozást még csak most kezdtem tanulni, így magamtól nem tudom megírni.
Valójában elég akár 20 led is, nem akarom túlbonyolítani. Ha valaki unatkozik és rá szán egy kis időt akkor megköszönném ha segítene. Köszi! Mikol
Sziasztok
LCD szeretnék éleszteni. Az adat lábak (8db) a pic portjain össze vissza vannak, mert csak így tudtam elrendezni. Hogy tudnám ezt összehozni egy tömbbe, C30-ban? Próbáltam már többféle struktúrával de nem sikerült elérnem a célom. Eddig ezzel prőbáltam, de így nem jó:
Nincs valakinek ötlete?
Ilyet tudtommal nem lehet csinálni, egyesével kell a biteket beállítani.
Sziasztok!
Valahol olvastam, hogy hogyan kell az Mplab nyomkövetőjét analóg bemenetekhez, vagy időzített dolgokhoz használni, de most nem találom. Aki tudja segítsen már nekem legyen szíves, hogy merre keressem!
Szia!
Az egész program nagyon egyszerű... A (programmal kiegészítet) TMR0 időzítő által nyújtott kapuidő alatt beérkező gyújtás impulzusokat számolja. A számlálás egy 4 memória rekeszből álló shift regiszterben történő léptetéssel van megoldva. Gyakorlatilag a bitek közvetlenül a led-eket vezérlik. A TMR0 a belső órajelet 16-tal osztva használja (195. sor). A TMR0 túlcsordulása 20000000/4/16/256 = 1220,703125 frekvenciával következik be, ami 8,192 ms időalapot jelent. A programban a 60. sorban egy további számlálót tölt fel kezdőértékkel: 0x92 = 146. Ez a számláló már 11.9603 ms -onként nullázódik. Egy gyújtásimpulzusra egyet léptet a shiftregiszter, és 32 ledet hajt meg. Ahhoz, hogy a 32. led (is) kigyulladjon 32 impulzusnak kell beérkezni a 11.9603 ms, azaz 267-nek 1 másodperc alatt - 16053-nak egy perc alatt... A program egy kis számolással - programozói tudás nélkül is - átállítható más fordulatszám tartományra: Ha a tartományt szeretnénk módosítani, a számítást visszafelé végezzük, es a 60. sorban a movlw 0x92 sort kell a kiszámolt értékre módosítani (max. 256 lehet). Szia
Készíts egy rutint, és abban egyenként állítsd be a szükséges lábakat és hívogasd meg paraméterekkel. Úgy tudom másképp nem lehet.
Köszi mindkettőtöknek a választ, ezt akartam elkerülni, de nem fog menni.
Köszi
Köszönöm szépen a segítséget! Elsőre kicsit sok volt , de átolvasom még párszor és megpróbálkozom vele!
Még egyszer köszönöm! Üdv: Mikol
Ha lehetne is, akkor is a fordító lecserélné az egyenkénti lábállításra, mivel a lábak a kontrollerben fixek, így a firmware-nek kell igazodnia hozzá.
Fejlesztési ötlet a microchip felé: kell rakni a PIC-be egy mátrixot, amivel kézzel ki tudjuk választani, hogy melyik láb hol menjen ki és be
De jó is lenne, néha... :sóhajtó szmájli:
Én még arra gondoltam, hogy a port címére írnám az adatot közvetlenül....lehet olyat?
A vicc az, hogy ezt nem is lenne nehéz megcsinálni!
Persze, van asm betétre lehetőség(BSF, BCF). De ez nem változtat semmit szerintem, mert úgy is arra fordul le...
Nah, gyorsan átrágtam magam rajta. Akkor ha jól értem a 32 impulzus fix, annyit kell maximum kipörgés mellett a "kiszámolt idő" alatt számoltatni a pic-el (ha a pic ez idő alatt pont 32 impulzust érzékel akkor gyullad ki a 32. led is) .
Szóval ha a 8000RPM a határ akkor 11,9603ms alatt kell 32 impulzus. Így ha a 8000/11,9603=668,8795432 arányszámmal számolok, akkor 12000/668,8795432=17,94045ms jön ki. Így a maximális azaz 12000RPM álláshoz 17,94045ms-ra van szükség a 32 impulzus beérkezéséig. Ha jól számoltam akkor ezt hogy írom a programba a 0x92 helyére? Milyen formába? Köszi! Mikol
Sziasztok!
Egy olyan kérdésem lenne, hogy van egy PIC16F877-m és PICKIT2-m. Ha az _LVP_ON engedélyezem akkor nem kell MCLR/VPP 12v a programozáshoz, hanem elég neki 5v is? Jól gondolom? smrtln
Szia!
Igen, az RB3 - PGM jelet a PicKit2 AUX kivezetésére kell kötni. Az RB3 kivezetést a normális futtatás alatt alacsony szintten kell tartani. Szia
Szia!
Rendben és még annyi lenne a kérdésem, hogy akkor elég ha rákötöm a PICKIT2-re a PIC RB3-as lábát, úgy-e a PICKIT2 adja neki a megfelelő feszültséget a PIC-nek. És közben ráköthettem az 5v-ot az RB3-as lábra egy külső tápról vagy nem miközben programozom vagy utána kössem rá a külső tápot mikor befejezte a programozást? smrtln
Szia!
A PicKit2 -re mind a 6 vezetéknek el kell mennie, a MCLR a reset funkció miatt kell. Az RB3 -at a PicKit2 fogja magasra kapcsolni a programozás alatt. Az áramkörben nem kell rá 5V-ot adni, inkább egy ellenállással a földet. Szia
sziasztok!
érdeklődnék, hogy tud -e valaki PIC16F87-hez vezérlő programot?! assemblis hex file amit bekéne égetni. CNC 3.2 unipoláris vezérlőhöz kéne a chip programja. a progim megvan (WinPic) a beégető is készen 16-illetve 40 lábú "Pic"-hez szóval már csak a hex cod hiányzik. a válaszokat és a segítséget előre is köszönöm. üdv szabi. (ezt szeretném beüzemelni)
Szia!
A TMR0 átfordulás frekvenciája 20000000/4/16/256 = 1220.703125 , a perióusideje 819.2 us. Ezt a 146 -os számláló 119.6032 ms-re növeli (Valamit elböködtem azon a Windows kalkulátoron - most másikon számolok, ami nem veszt el gombnyomást). Ez alatt az idő alatt jön be 32 impulzus. 32 imp./119.6 ms = 267.5514 imp./s = 16053 imp/perc. Ha 8000/perc lenne a kigyújtott 32. led, akkor pont kétszer akkora idő kellene. Ellenőrzés: Használjunk 292-as számlálót. A kapuidő így 239.2064 ms. Ez alatt jön be 32 impulzus: 32 imp./239.2064 ms = 133 imp./s = 8026.541 imp./perc Probléma: A 292 nem fér el egy bájton. .. Megoldás: - A program módosítása 2 bájtos számlálásra ... - A maximális 256 használata: Ekkor a kapuidő 209.7152 ms. 32 imp./209.7152ms = 152.5879 imp./sec = 9155.2773 imp/perc. - Használjunk nagyobb előosztót a TMR0-nál: Ha az előosztó 32 - már nem is kell mást módosítani. A TMR0 kapuideje 1.6384 ms -re nő, a számláló marad 146-os. 32 imp./239.2064ms = 133 imp/s = 8026.541 imp./perc. A módosítást a 199. sorban lehet elvégezni: A movlw b'00000011' helyett movlw b'00000100' kell. Az értékeket 1 impulzus/fordulat feltételezésével számoltam ... Ha két impulzus/fordulat a bemenőjel, akkor nem is kell módosítani semmit sem... Szia
Szia!
Akkor programozás során is ráköthettem a földre az RB3-as lábat az ellenállással miközben a PICKIT2-re rá van kötve és mekkora legyen az ellenállás 10K ohm-os elég? És a PIC működése során is kell az ellenállás a földdel együtt amikor már nincs rajta a PICKIT2-n vagy nem? smrtln
Szia!
A föld felé menő ellenállásnak mindig ott kell lennie, hiszen ezzel biztosíthatod a normális működés alatt az alacsony szinetet (nem lép be programozási módba). A PicKit2 az ellenállásra ki fogja adni a magas szintet programozáskor. Az a 10k jó lesz. Szia
Hát akkor én nagyon rosszat számoltam. :S
A jövő héten összerakom , beégetem és ki is próbálom! A segítségedet pedig köszönöm szépen, nagyon rendes vagy! Ha tudom meghálálom! Üdv: Mikol
Szia!
Rendben köszi szépen a segítséget, mindent megtudtam amit akartam, majd ha elakadok megint valamiben akkor majd írok. smrtln
Sziasztok!
Azt szeretném megkérdezni, hogy van egy PIC16F877-m és ennek a típusnak két-két VDD és VSS lába van, elég ha az egyik oldal kötöm be vagy mind a kettőt be kell kötni? smrtln
Mindegyiket be kell kötni, sőt, illet mindegyiket külön-külön ellátni egy-egy 100 nF-os kondenzátorral.
Ugyanez a kérdés felmerül 2-3 heti rendszerességgel: Link
Na jo, de valamilyen okbol kifolyolag kerdest irni egyszerubb, mint a keresot hasznalni
|
Bejelentkezés
Hirdetés |