Fórum témák
» Több friss téma |
Sziasztok!
Hogyan tudom kiszámítani hogy mennyi ideig tart egyetlen "onecycle" utasítás ha egy 4MHz-es kristály van kötve egy 16F84A-hoz? Azontúl valami doksit, ismertetőt, vagy akármit keresek, amiből meg lehet tudni hogy lehet használni egy timert. Vagy ha valaki ráérős típus elmagyarázná nekem. Köszi. deguss
Általában a pic utasítások 1 ciklus hosszúak. Vannak kivételek pl:call. Egy utasítás ciklus hossza. (1/4000000)*4
Ez azért van mert egy utasítás elvégzéséhez általában 4 órajel ciklus szükséges. Írj a privátba hogy tudjam hová küldjek neked magyar pices doksikat. Valakinek korábban össze készített anyag, de nem jelentkezett érte.
Köszi szépen bbatka a sok hasznos doksit. Valamennyire már beleolvastam, de továbbra is segítségetekre szorulnék a timer használatlát illetően. Valaki el tudja nekem röviden magyarázni hogy hogyan tudom megcsinálni hogy pl: egy gombnyomásra, amit egy btfsc figyel, elindítok egy timert, ami legyen amennyire lehet pontosan 0,5 sec, és mikor lejár, akkor egyszerűen bsf PORTB,7 azaz egy LEDet kigyújt.
Előre is köszönöm.
Még valami: Ha jól számolom (1/4Mhz)*4 akkor egy utasítás 1 mikrosecundumig tart!?
És még egy kérdés: Egy szignáltranzisztornak (BCxx) mennyi az a legkisebb időintervallum, amialatt kapcsolni tud, úgy értem hogy vezetésből->zárásba, ill. fordítva? Szóval állapotváltás?
Köszi, a képletet ismertem
, csak azt nem tudtam hogy 100MHzet elbír-e a BC182. Köszi szépen, világossá vált a téma ezen része. Már csak az a kérdés hogy hogyan használjuk a timert a pic programozásban.
Délután kiagyalom a kérdésedre a választ a TMRO-val kapcsolatban. 2-3 hónapja foglalkoztam vele frekimérés kapcsán, de már megint elfelejtettem a használatát.
A feladathoz amit leírtál nem kell timer. Én Basic-ben programozok ha lehet mert sokkal gyorsabban elkészül a program. Assembly-t csak akkor használok ha a sebesség miatt szükséges. Ezt azért írtam le, mert a basic nyelv tartalmaz várakozó utasítást, de van egy DOS-os progim ami assemby kódot gyárt várakozó ciklushoz, bár elég pontatlan. Szóval neked RB0 interrupt használatára van szükséged. Majd miután megtörtént a megszakítás elindul a várakozó ciklus. Majd a program végén kigyúlad a RB7-es LED. Javaslom a Basic használatát. Picsimulatoride a kedvencem itt, de a Mikrobasic is nagyon klassz.Javaslom töltsd le mind a kettőt. A Mikrobasic címét nem tudom, de Google-val gyorsan megtalálod. Holnapra remélem megtudom neked írni a progit, basicben. Túl sok mindent vállaltam holnapra, túl sok személynek, de majd igyekszem. Az 1 mikrosecundum stimmel. A Picsimulatoride egy nagyon komoly szimulator és ez által mindenféle hibát kizár a helyes használata.
DEKUSS
Figyelj ha jól olvastam akkor aptál doksikat a picekről nos megkérnélek hogy oszd meg velem vagy küld el mert nekem is szükségem lenne rá. Vagy ha valaki tudna segíteni abban hogy a mikrobasicben lévő parancsok mit jelentenek és hogy működnek akkor nagyon megköszönném . Idézet: „A Picsimulatoride egy nagyon komoly szimulator és ez által mindenféle hibát kizár a helyes használata.” Feltéve, hogy nem hibás maga a szimulátor! Én találtam már hibát benne, az EEPROM olvasás nem működött valamelyik chipnél, és mások is említettek már hibákat benne. Az MPLAB az a szimulátor, amiben meg lehet inkább bízni, abban az észlelt hibákat folyamatosan javítják, a Microchip fórumán külön részleg szól a szimulátorról.
Potyo !
Hogy olvastál EEPROM tartalmat a picsimulatoride alatt programozva? BASICben is lekell tiltani irás olvasas es iras esetén a general interuptokat.
Megnyugtatlak, nem az én programommal volt a probléma. MPLAB-ban írtam asm-ben, és megnéztem ebben a programban, mert itt volt hétszegmensű kijelző mint periféria. Nem akart működni, és nem tudtam miért. Aztán megnéztem MPLAB SIM alatt, és ott jól működött.
Sem az EEPROM, sem a FLASH olvasáshoz egyébként nem kell letiltani a megszakításokat.
De én meg azt olvastam (mind a 2 Kónya féle könyvben) az eeprom írás/olvasás műveletekről,
hogy mielőtt elkezdem a megszakításokat tiltani kell a biztos végrehajtás érdekében. Akkor ezek szerint ez nem mindig szükséges ? No majd át nézem újra milyen esetre szólt ez a kitétel a könyvben. Ezért én minden basic parancsos read write előtt kiadtam GIE bit tiltást . Szeretném ezt tisztán látni mert eddig nem foglalkoztam az eeprom használatával de most éppen van ilyen esetem.Azért vetettem fel mint lehetséges okot a "picsimide" általad említett bugjára reagálva.
Ez mindkét esetben csak írásra vonatkozik.
Konkrét dolgokról mindig az adatlapból kell tájékozódni. Még abban is találni néha hibát. Az említett könyv állítólag jó (én sosem olvastam), de inkább az elveket, módszereket kell abból tanulni.
pic16f18876 32mhz belső órajel gondSziasztok!van egy pic 16F18876 és picF1788 mind a kettőnek kéne tudnia a belső 32mhz órajelet. DE egyiket se tudom csak 16mhz re beállitani. ez a 16f18876 prg beállitása . #define CONFIG1 = 0x179C #define CONFIG2 = 0x2F3C #define CONFIG3 = 0x3F9F #define CONFIG4 = 0x1FFF #define CONFIG5 = 0x3FFF OSCCON1 =%00110000 OSCFRQ = %00000110'; // 32 MHz Mit kell még állitani vagy a configban ?pic16f18876 előre is köszi
A 16F1788-nál OSCCON b'11110000' (8MHz, 4xPLL)
igen így működik ,habar nem értem de a lényeg hogy ok.
KÖszi
Mivel a CONFIG1-ben a CSWEN bit 0, az OSCCON1 regiszter csak olvasható. A konfigurációban (CONFIG1)
HFINTOSC with 2x PLL, with OSCFRQ = 16 MHz and CDIV = 1:1(FOSC = 32 MHz) van kiválasztva, az OSCFRQ regiszterrel pedig 32 MHz-et választasz, így a végeredmény 64 MHz lenne, ami más adatlap szerint nem választható kombináció, lásd melléklet. Úgy tűnik, a PIC16F18876 adatlapja kissé hiányos. Érvénytelen kombináció esetén az eredmény elvileg bármi lehet. Vagy töröld az OSCFRQ = %00000110'; sort (OSCCON1 állításának nincs értelme), vagy CONFIG1-et állítsd 0x178C -re. Utóbbi esetben sem lesz értelme az OSCFRQ és OSCCON1 regiszterek írásának. Előbbi, igény szerint, menet közben is módosítható. |
Bejelentkezés
Hirdetés |




, csak azt nem tudtam hogy 100MHzet elbír-e a






