Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Az ENTER-nél pont fordítva kell vezérelni, mert az E jel alaphelyzete nulla. Beíráskor tehát felemeled, majd kis idő múlva leviszed 0-ba.
Ezen kívül a kiküldött adatsor sem jó, mert az első 4-bites mód beállítása még 8 bites módban történik, tehát
után már vége van az első LCD parancsnak, ne akard azt folytatni! Az üzemmód beállításhoz tehát mégegyszer ki kell adni a fenti utasításokat, s csak utána jöhet a második félbájt kiküldése
Köszi!
Az első kettő alapján jutottam idáig, de nem vagyok túl jó angolból, gondolom ezért is homályos a dolog. Én a C-vel még nem tudtam megbarátkozni. Nem tudnál egy egyszerü C-ben írt megszakítás kezelést és a .hex állományát feltenni? Talán kicsit megvilágosodnék.. vagy nem..
Csatoltam egy teszt programot, szerintem ebből meg lehet érteni.
Az első link szerintem magyar volt, s ott van a C és az assembly kiszolgálás bemutatása is (_Matherror lekezelése). A komplett mintapélda pedig megtalálható a PIC24 támogatói programkönyvtár és mintaprogram gyűjteményben (egyben letölthető a esca.atomki.hu/PIC24/code_examples.zip címen).
chap09/trap_test_handled.c - Interrupt kiszolgáló, amely kezeli a matematikai kivételt (nullával történő osztás). Ennél egyszerűbbet már nem tudok mutatni. Második példának a következőt ajánlom: chap09/int1_wakeup.c - INT1 használata alvás üzemmódból történő felébresztésre.
" Lényeg, hogy bárki, bármit mond, ..."
Ezért is tetszett a megfogalmazás, mert tényleg ez a lényeg... :yes:
Sajnos nem értem tökéletesen.
MOVLW B'00000010' ;4 bitesbe állít MOVWF PORTB CALL ENTER MOVLW B'00000010' ;4 bitesbe állít MOVWF PORTB CALL ENTER MOVLW B'00000000' ;1. Kurzor MOVWF PORTB CALL ENTER MOVLW B'00001111' ;2. Kurzor MOVWF PORTB CALL ENTER Így kellene?
Nem teljesen, mert a második parancs kiküldése már 4 bites módban történik, tehát két félbájtot kell küldeni. S azért kell kiküldeni másodjára ezt a parancsot, mert4 vonal esetén csak a 4 bites mód bekapcsolása után tudod beállítani azokat a biteket, amelyek a sorszámot és a fontméretet szabályozzák.
Magyarul ez azt jelenti, hogy harmadikként küldj ki egy B'00001000'-at is, mielőtt a Kurzorbeállítás jönne. De mindezek kitűnően le van írva a HD44780 adatlapjában, s kipróbálhatók LCD simulatorban.
Kezdem feladni, 2 óra alatt 2 - 3 percet késett
Lehet hogy igazad van, mert a mostani programban benne van az óra állásnak az átszámítása is... Ezt az időt nem számoltam bele... Van egy adatregiszter, amihez hozzá ad 1-et így kapom meg duplán a 125-öt, visszaállítja a TMR0-át és újra állítja a INTCON Regisztert... Ha csak 3 utasítás lenne a megszakításban, akkor szerintetek mennyire lehet pontos?
Ezt olvastad? Bővebben: Link Milyen ötleteid vannak a felvetéssel kapcsolatban?
Valamint, a TMR0 regiszter írásakor az előosztó törlődik, és két utasítás időre leáll a számlálás...
Milyen típusú a kontroller, nincs benne Timer2? Még ötlet...
Sziasztok!
Próbálom ezt a sort értelmezni:
az első kérdés az, hogy a bkbhit az micsoda (változó?), és miért nem tudom mplab.ban a watch ablakban megjeleníteni.
A bkhit egy makró, jelen esetben egy logikai kifejezés, ami megmondja, hogy a buffer bemeneti és kimeneti mutatója megegyezik-e, vagy sem.
Ha a mutatók megegyeznek, akkor üres a buffer. Ha nem egyeznek meg, akkor van kiolvasatlan karakter.
Értem, tehát amíg lekezeli, azon időt is bele kell számolni mint késleltetés?
16F877A Van benne Timer2. Sajnos ezt még nem használtam, ugyan belenéztem a következő oldalt,( Link) nem értettem, mi az elő és utó osztó...
A kérdéseidre megkaptad a jó válaszokat(olvastad?), most rajtad a sor, hogy megértsd és jó kérdéseket tegyél fel, illetve a kért válaszokat megadd!
Szia! Honnan tudtad, hogy buffer? Vagy ez egy általános alakja és módszere a bufferek vizsgálatának?
Idézet: Onnan, hogy nem csak szép és jó vagyok, hanem okos is! „Honnan tudtad, hogy buffer?” Emlékeztem rá, hogy az ebben a hozzászólásomban ajánlott mintaprogramban láttam ezt a definíciót.
gondoltam, hogy van benne turpisság
Egy ilyen logikai kifejezéseknek az állapotát értékét nem is lehet nyomonkövetni a watch ablakban?
Nem, de a next_in, next_out-ét valószínűen igen, ha regiszterre mutatnak.
Megjeleníted mindkét mutatót, azt meg csak el tudod dönteni, hogy egyezik, vagy sem...
A C-ben minden # jellel kezdődő utasítást előfordítói direktrívának hívunk. Mint neve is mutatja ezt a fordító hajtja végre mielőtt ténylegesen lefordítaná a kódot.
Bővebben a Wikiben Hogy a konkrét kérdésedre is válaszoljak: a "#define Roppant észnél kell lenni! Tipikus hiba a zárójelek elhagyása. Pl.:
Szia!
A timer2 az Fosc/4 frekvenciójú jelet kapja meg az előosztó bemenetére. Az előosztón 1, 4, 16 osztás állítható be. Az előosztó kimenete egy 8 bites számlálóra, ami TMR2 néven érhető el. A számláló aktuális értékét a PR2 regiszter értékével összehasonlítja, egyezés esetén a TMR2 törlődik. Ezt a törlési jelet kapja az utóosztó órajelnek. Az utóosztónál 1..16 -os osztást lehet beállítani. Az utóosztó kimenete kér megszakítást. pl: 4 MHz quartz esetén az Fosc/4 = 1 MHz. Ha a Timer2 előosztó osztása 4, a PR2 értéke .249, az utóosztó osztása 1, akkor 1us*1000 = 1ms - enként periódikusan megszakítást két a timer2. Ez az időzítés a quartz pontosságával megegyező prontosságú, mivel a program a beállítás után nem változtatja meg a reiszterek értéket....
Szia! Itt nézz körül:Bővebben: PIC LCD rutinok.Bővebben: Link
Köszi az eddigi segítségeteket!
Kezdem érteni, szimulátoron már megy a dolog.
Szia!
Köszönöm szépen hogy így leírtad, elsőre megértettem, miről is van szó. Át is állítottam az értékeket, regisztereket és jelenleg az óra siet. 6 órát hagytam, hagy menjen, 3 mp különbség volt a laptopom órája és a PIC órája között... Itt már valami hardveres állítást kell eszközölni? Az lenne a kérdésem, hogy a számításom helyes? Elméletem szerint a PR2-es regiszterben lévő érték is egy osztó érték, így a képletem ez lett. 16MHz / 4 / 16 (Előosztó) / 125 (PR2 érték) / 16 (Utóosztó) = 125 Hz. Egy AdatRegisztert elszámoltatok 125-ig és elméletben, ha eljutott 125-ig akkor megvan az 1s-os megszakítás...
Jó a számítás, ezzel már pontosnak kell lennie az órának annyira, amennyire a kvarc pontos. A kvarcot tudod kicsit hangolni a kondenzátorok állításával. Próbálj ki kicsit kisebb vagy kicsit nagyobb kondenzátorokat, akár aszimmetrikusan is. Ezután lehet agyalni a hőmérsékletfüggésen, de ha annyira pontos kell, akkor érdemesebb órakvarccal próbálkozni, nagyfrekvenciás kvarc sosem lesz tökéletesen pontos.
Szia!
Ez már 140 ppm pontosság... Ez már azt jelenti, hogy a quartz frekvenciája eltér a névlegestől. Ebben a hozzászólásban megadott oldal ötletével megoldható, hogy a végső szoftveres osztásnál a hibát korrigáld. Az órakvarc is csak 20 ppm pontos...
Értem és köszönöm, ez igen jó tanár lennél köszönöm a türelmedet és a hasznos bemutatót
Sziasztok, egy PICkit-et akarok vasarolni , a ChipCad-nal van is a Pickit2 9500Ft a Pickit3 12250Ft, szerintetek meiket eri meg jobban megvasarolni? En 18-as Pic-eket szeretnek egetni vele de a jovoben majd mast is. Mi a lenyeges kulombseg a ket programozo kozott? Kosz a valaszokat.
Itt megtalálod a választ. A jó döntéshez tudnod kell, hogy a "jövőben majd mást is" mit takar. Ha újabb típusokat (pláne PIC32-t) akkor inkább PICkit3. Ha régebbieket, és a jobb (jelenleg) használhatóság a fontos, akkor inkább PICkit2.
|
Bejelentkezés
Hirdetés |