Fórum témák
» Több friss téma |
Köszönöm!
Szia.
Az a gond hogy élőben sem megy. A konfigurációs bitek jól vannak beállítva ugyanis az előző programjaimnál is ugyan úgy állítottam be és azok működtek.
Azt tudom hogy a proteus nem tud mindent leszimulálni, de többnyire szokott működni, persze minden programot futtatok élőben is breadbordon összerakott áramkörön.
Már beállítottam mindent ami lehetséges és ami kapcsolódik az RB0-ás lábhoz de még mindig rosszul működik. Most úgy néz ki belép a megszakításba, de nem lép ki.
Nem biztos, hogy jól emlékszem, de mintha valahol azt olvastam volna, hogy a MOVFF-t nem szerencsés megszakításban alkalmazni !
Ezt írják a Microchip fórumán is :Bővebben: Link
Az adatlapban csak azt olvastam, hogy ne használjuk a movff utasítást a megaszkítást kezelő regiszterek módosítására. Tehát a work és a status regiszterek mentésére elméletileg használható.
Sziasztok! Meg tudnátok mondani hozzávetőlegesen, hogy mennyi ideig tart egy 4*16-os kijelzőn frissíteni az adatokat, vagyis amíg lefutnak az adott C utasítások amikkel minden sorba új adatot lehet kiírni? Valamint egy 128X64-es lcd esetén egy új kép?
4*16 = 64 byte plusz soronkent meg egy. Ha 50us egy karakter, akkor is megvan 4ms alatt.
A grafikus kijelzonel nyilvan a kontrollertol is fugg. Pl a EADOGL 128-6 (ST7565R) SPI-s kijelzo az eleg gyors. 1kbyte a teljes kep, 20MHz SPI-n atmegy kb. fel ms alatt. A valosag persze ennel kicsit rosszabb, mert varni kell a karaterek kozott, de akkor sem tobb par ms-nal. Gyorsabb, mint amit az LCD meg tud jeleniteni.
Nem 10MHz-es maximum az SPI?
Bár nem említette a kontroller típusát, de feltételezem, hogy nem 32-es PIC-el dolgozik.. A hozzászólás módosítva: Feb 6, 2015
Az emlitett Sitronix ST7565R kontroller eseteben 20MHz a maximum 3.3V tap eseten. 2.7V-on mar csak 10MHz, 1.8V-on 5MHz. Ez a chip van az EADOGL 128-6 kijelzon. Amugy meg az SPI-nek szerintem nincs felso hatara, van belole 66MHz-es megvalositas is.
Azt, hogy a PIC-en mennyi a maximum azt nem tudom, de ezt nem is itt kell megkerdezni, hanem meg kell nezni az adatlapban. A hozzászólás módosítva: Feb 6, 2015
Van nekem olyan A/D konverter ic., amelyiken 20MHz az SPI adatkimenet katalógusadat.
A hozzászólás módosítva: Feb 6, 2015
Nem nagyon foglalkoztam még 18F-fel, ezért a regiszterek nevei nekem kicsit idegenek, de elmondanád, hogy mit is kéne csinálnia ennek a valóságban?
Ez nem is kérdés volt igazából, és mivel ez a PIC kezdőknek topik feltételeztem, hogy a kérdező, arra kiváncsi, hogy az általa használt PIC-el hajtva az LCD-éjét, mennyi időbe telhet egy egy említett karakter vagy kép megjelenítése, kirajzolása.
Szerintem itt tök mindegy, hogy az LCD vezérlője mennyire nagyon gyors, hogy ha a PIC nem tudja olyan tempóval kitolni az adatot, vagy nem ilyen irányú volt a kérdése? nagym6: van olyan IC is ami több 100MHz-en is tud SPI-n kommunikálni még sem tudod kihasználni, ha nincs megfelelő vezérlőd ami legalább annyit tud. A hozzászólás módosítva: Feb 6, 2015
Szia!
Ezt csak próbaképpen csináltam. De az eredetileg egy DS1307-es RTC SQW lábát szeretném rákötni az RB0-ra és az RTC 1 másodpercenként magas jelet ad az SQW lábra. Ekkor a pic belépne a megszakításba és növelné a sec változó értékét.
Akkor úgy kérdezem, hogy ennek a próba programnak mit kéne csinálnia? Mert ez biztos nem azt csinálja amit leírtál, de gondolom ezt te is tudod.
Egyébként az amit leírtál mi célt szolgál? Egy rtc-t így használni elég szokatlan, főleg, hogy eleve I2C képes. A hozzászólás módosítva: Feb 6, 2015
A mostani programnak annyit kéne csinálnia, hogy mikor belép a megszakításba akkor az RC6-os kimenetet magasra állítja majd a főprogramban vár 500ms-ot és a kimenetet alacsonyra állítja. Azt a célt szolgálná, hogy nem olvasnám az RTC értékét minden másodpercben többször csak egy nap egyszer pl éjfélkor. A pic pedig elszámolgatná addig az időt ennek a pontos 1 másodperces megszakításnak köszönhetően. Vagy nagyon nagy hülyeség az elgondolásom?
A késleltető rutint tartalmazó fájlt nem raktad fel, így nem látom, hogy az mit csinál, de a megszakításban csak az van jelenleg, hogy magasra állítja az RC6-ot. Sem késleltetésre való hivatkozást nem látok, de alacsony szintre állítást sem. Szimulátorba meg nem tudom futtatni, mert hiányzik a delay16MHz.inc.
Szerk: Idézet: „Azt a célt szolgálná, hogy nem olvasnám az RTC értékét minden másodpercben többször csak egy nap egyszer pl éjfélkor. A pic pedig elszámolgatná addig az időt ennek a pontos 1 másodperces megszakításnak köszönhetően.” Hát én biztos nem így csinálnám. Nem ismerem ezt a típusú pic-et de gondolom ennek is van Timer1-hez külső léptetési lehetőség. Arra egy 32,768 kHz-es kvarc, ezt leosztod 256-tal, majd 128-cal és meg is van az 1 másodperc. A hozzászólás módosítva: Feb 6, 2015
A "friss" fájlok:
Nem tudom a sleep-el mi volt az elgondolásod, de ez így biztos nem jó, mert a megszakítás ugyan felébreszti, de nem lép a megszakítási rutinba. Ha viszont kiveszed a sleep-et akkor folyton törli az RC6-ot. Valami más irányba kell gondolkodni. Még nem tudom a megoldást, de gondolkodom rajta.
Szerk: nem tudom még milyen feladatot szánsz neki, de esetleg a megszakításba be lehetne tenni a várakozást és a törlést is. Vagy a törlést egy másik megszakításba amit nem delay hanem valamelyik timer vezérel. A hozzászólás módosítva: Feb 6, 2015
Az hogy állandóan törli az RC6 értékét a főprogram az nem zavar, de az hogy próbapanelen összerakott áramkörrel miért világít állandóan a led azt nem tudom. Holott nem szabadna belépnie a megszakításba és mégis állandóan azt hajtja csak végre. Már abszolút nem értem mi lehet a baja.
Nem néztem végig, hogy mit változtattál a tegnapihoz képest, de ez a mostani nem reagál az RB0 impulzusra, a tegnapi igen.
Nem hülyeség, én is hasonlóan csináltam, de ne az 1Hz kimenetet válaszd, hanem a 4kHz-est. Ezt számoltasd a TMR1-el úgy, hogy 500ms megszakítást kapjál. Ezzel tudod villogtatni mondjuk a kettőspontot és számolni az időt.
Erre nem is gondoltam. Köszönöm az ötletet.
Közben megírtam a programot egy PIC16F88-asra ami épp kéznél volt. Azzal elsőre tökéletesen működik minden úgy ahogy a nagykönyvben meg van írva, de a 18-assal az istenért sem akar elindulni. Viszont nekem valami galiba lesz ott mivel a PORTB0-án és 1-en kéne mennie a felhúzóellenállásoknak. De nem mennek.
Hát innen passzolom a kérdést. Nekem semmi tapasztalatom az 18F pic-cekkel.
Még megpróbálok egy 18F2550-est az mit csinál. Lehet hogy a piceel van a gond én meg már két napja ülök fölötte.
Én beraknék egy CLRF ANCON1-et, és beállítanám a felhúzó ellenállásokat (bár nem tudom kívülről van-e rajta).
Szia!
Az ancon1 be van állítva és a felhúzók is. A hozzászólás módosítva: Feb 6, 2015
Sziasztok!
Van egy 16F877A I/P vezérlőm. PicKit3-al kiolvastam a pr memóriáját és van benne olyan rész amire nem hivatkozik semmi (se GOTO, se CALL). Kérdésem az lenne, hogy lehet, hogy nem olvasott ki mindent a vezérlőből? Működését tekintve elvileg aludnia is kellene (a programozó szerint (de már nem elérhető)), de erre sem találtam utasítást a programban. Előre is köszönöm a válaszokat! |
Bejelentkezés
Hirdetés |