Fórum témák
» Több friss téma |
Szia!
Annyi volt csak a gond, hogy miután elküldtem az ACK-t utánna kellett egy IdleI2C1 parancs, ami azt hiszem azt jelenti, hogy várakozás amíg befejezi. ugyanez kell a NotACK után is. A működő kód:
Köszönöm a segítséged!
Szia!
Azt szeretném megkérdzni, hogy nincs véletlen olyan minta kódod, ami kitesz a kijelzőre: 00:00:00 számokat, ora:perc:mp mondjuk, és megnyomok egy gombot és elkezd számlálni, mint egy stopper. Ha szükséges bemásolhatom az egész mcp9808-os main kodomat, vagy ha igy jó. akkor oké. A hozzászólás módosítva: Nov 25, 2015
Tiszta! Igaz, köszönöm szépen! Valahogy szétszedem.
Azt szeretném emgkérdezni, hogy milyen programsort kell írjak, hogy az Rtc elkezdjen nekem számlálni. Itt tartok. Köszönöm
A Microchip PIC32MX Peripheral Library / RTCC help szerint csupán ennyi a beindítás:
Köszönöm a segítséget!
Már csak azt nem tudom hogy hogy jelnítsem meg a kijelzön.
Az idő / dátum adatok az RTC -ben BCD kódolású, így nincs nehéz feladatod. pl az órát úgy tudod kiírni, hogy veszed az RTCTIME regiszter 31..28 bitjeiből (HR10) képzett 4 bites számot, hozzáadsz 0x30 - at (a '0' karakter ASCII kódját) és kiírod az LCD -re. Aztán veszed az RTCTIME regiszter 27..24 bitjeiből (HR01) képzett 4 bites számot, hozzáadsz 0x30 - at (a '0' karakter ASCII kódját) és kiírod az LCD -re. Eljátszod a percre (MIN10 a 23..20 és MIN01 a 19..16 biteken) és a másodpercre (SEC10 a 15..12 és SEC01 a 11..8 biteken). A dátumot teljesen hasontóan lehet kiíratni, az évszázad (sajnos) nincs benne a RTCDATE regiszterben.
Köszönöm!
Megtaláltam a PIC32referenci manueljében. Annyiban még kaphatok egy kis segítségett, hogy hogyan kell parancsokkal végrehajtani a regiszeterbitekből a kivételt. Köszönöm szépen! A hozzászólás módosítva: Nov 27, 2015
Ha már úgyis a Microchip perifériakönyvtárat használod, ne matasd a regisztereket, hanem használd a könyvtári függvényt!
Deklarációs részbe:
Kiolvasás:
tm.sec, tm.min, tm.hour tartalmazza az időt, dt.mday, dt.mon, dt.year pedig a dátumot. BCD kódolással vannak benne az adatok, az évszázad nincs benne... Bővebb info: Microchip-PIC32MX-Peripheral-Library.chm RTCC szekciója.
Sziasztok!
A 18F4550-ben a PWM1 úgy működik, hogy a PR2 regiszterrel és a TIMER2 előosztóval meghatározom a PWM frekvenciát és utána ettől függetlenül a CCPR1L+CCP1CON 2 bitjével (10bit) szabadon választom a kitöltést 0 és 100 között, ezzel az 1024 lépéssel? A PR2 a CCPR1L és a CCP1CON regiszter is írható anélkül, hogy kikapcsolnánk előtte a PWM-et? 18F4550 (146. oldal) Válaszotokat köszönöm!
Igen és nem csak ebben a PIC-ben, a legtöbben így működik.
Szeretném meg tanulni a pic programozási nyelvet valaki tudna nekem küldeni le írást hogy melyik utasítás mire való meg hogy épül fel egy pic-es program.
Idézet: „hogy melyik utasítás mire való meg hogy épül fel egy pic-es program” Én ebből arra gondolok, hogy assembly nyelvre gondolsz, de nem írtad le pontosan, hogy melyik nyelvre is gondolsz. A piccolo projekt-ben van C és assembly, de ha assembly-ben szeretnél programozni az összes PIC(kivéve a 32 bitesek, ott máshol található) dokumentációjában le van írva az utasítás készlet és hogy mi mit csinál. De még létezik jó pár nyelv amikben lehet PIC-et programozni. Erről van elképzelés milyen nyelvben szeretnél programozni?
Lehet, de a 31. oldaltól vannak benne olyan utasítások amik inkább a 18F-ekben vannak. Bár lehet, hogy a bővített architecturás 16F1xxx és 12F1xxx is tudják.
Lehet, hogy PIC18-ről is van benne vázlatosan szó (bár a fejéc végig PIC16-ról szól), de PIC18-hoz inkább a PIC18 MCU Family Reference kézikönyvet ajánlanám.
PIC24/dsPIC30/dsPIC33-hoz pedig a dsPIC30F/33F Programmer’s Reference Manual-t ajánlom (ennek a belinkeltnél van újabb kiadása is, de ebben a régiben használhatóbb a tartalomjegyzék)
Mi az SPI-nek az elindító mechanizmusa master módban, vagy azzal indul miután aktív a modul, hogy beleírok az SSPBUF regiszterbe?
Mi a megfelelő beállítás a CKP, CKE és SMP biteknek? Először SSPSTAT beállítása, utána SSPCON1 és modul engedélyezés, majd írás az SSPBUF regiszterbe? Ezután már csak az SSPSTAT BF-bitjét (buffer teli?) kell figyelni, ha teli, akkor adat elvétel, majd törlés és megint írás az SSPBUF regiszterbe?
A hivatalos Microchip doksi biztos jobb, de a másik vitathatatlan előnye, hogy magyarul van.
Nekem a legkönnyebben meg érthető kellene.
Ojjé!
Ebből megint vita lessz! Megpróbálok tárgyilagos lenni. Ha nem akarod tudni, mit is csinál voltaképp a processzor, csak minél előbbi sikerélményre vágysz, válaszd a C-t. Ha távlati terveidben olyasmi szerepel, hogy nagyon gyors lefutású kis hardverigényű programokat írj, akkor bizony assembly kell. Az egyszerű programok, (ledvillogtatás, futófény) assemblyben sem bonyolultak. Viszont alapszinten már fogalmat alkodhatsz a PIC működéséről. A C és társai olyan programnyelvek, melyekben mindent elkészítettek, és könyvtárakba helyeztek profi programozók. Neked szinte annyi a dolgod, hogy kitaláld, mit akarsz csinálni, és megtanuld, ehhez milyen függvények kellenek, és ezeket hogyan kapcsold össze. Az assemly a processzor nyelve. Ezen ért. Tehát a legjobb programokat asm.-ben lehet megírni. Viszont sokkalta munkaigényesebb. A döntés a tiéd!
Sziasztok! Hogyan lehetne életre kelteni a 18F4550 hardveres SPI communikációját (MCP4822-vel)? Úgy látom az alábbi programsor hatására nem mutatkozik semmilyen életjel az SPI lábakon. Van valami, amivel indítható az adat kiküldés?
Természetesen az spi_io() meghívása előtt az eszközkiválasztó vonalat ("chip sleect") aktiválni kell, az spi_io() után pedig inaktiválni kell. Az inicializálás már komplikáltabb. Például:
A makrók és az inicializáló függvény így néz ki:
Megjegyzés: SP_SCK, SPI_SDI, SPI_SDO a megfelelő adatirány beállító bitek. Nálam pl.:
Remélem, kimerítő volt a válasz. Bővebb info: PICCOLO projekt, SPI soros periféria illesztő A hozzászólás módosítva: Nov 28, 2015
Szia! Köszönöm a terjedelmes választ! Én mikroC környezetben próbálkozok még, de ha jól vettem ki a leírásból az alábbi soroknak már működnie kellene, sajnos a DAC még mindig nem ad semmilyen jelet, de majd holnap ránézek többcsatornás szkóppal az SPI vonalakra.
Az 1011 1000 0000 0000 értéket küldeném el, ami a B csatornán 1X erősítéssel a 12 bites felbontás felére 0x800 állítaná a kimeneti jelet. !SHDN =1 Azt hiszem a csatornák függetlenül állíthatók egymástól. A 16 bites adatküldésnél érzékel valamit az eszköz a bájtok közötti szünetből, vagy a 8 bites küldő függvény többszöri meghívásával ugyan úgy működik a 16, 24 bites küldés/olvasás is? Idézet: Elvileg nem, hiszen az órajelek szinkronizálnak, s az eszközt csak az érdekli, hogy #CS alacsony állapotában 16 db. órajel érkezzen.„A 16 bites adatküldésnél érzékel valamit az eszköz a bájtok közötti szünetből?” Az oszcilloszkóp elővétele helyett (vagy előtt) egy szoftveres (bitbang) küldéssel is megpróbálkozhatnál! Idézet: „A CS lábat vezérled?” A kódban szerepelnek LATB3_bit=0; és LATB3_bit=1; parancsok, csak a TRSB3_bit = 0; beállítást nem látom a belinkelt kódrészletben.
Az adatirányok be vannak állítva, a CS is vezérelve van. Az alábbi szkópábra látható a programsor hatására.
A sárga az SDO, a lila az SCK. Az SCK jelben látható legelőször egy nagyon keskeny impulzus is, gondolom itt már valami hiba van, ennek a többire kellene hasonlítania. Ennek az útmutatónak az 54. oldalán az MPLAB source fájlaihoz létrehoz egy lcd mappát és amit beletesz az hol található? Megvannak ezek az előre megírt függvények az MPLAB feltelepített könyvtáraiban valahol? chipcad_tutorial *Most látom, hogy a chip select csak akkor alacsony, amikor a legelső keskeny órajelimpulzus megjelenik és az sdo egyetlen impulzusának végéig tart. A hozzászólás módosítva: Nov 29, 2015
|
Bejelentkezés
Hirdetés |