Fórum témák
» Több friss téma |
Igazad lehet, de majd a kerdezo megmondja, hogy mire volt pontosan kivancsi. PIC tipust nem adott meg.
Idézet: Igen, ha a PIC nem tudja olyan gyorsan, akkor mindegy. De ha tudja a PIC, akkor nem mindegy. En speciel PIC32-n hasznaltam ezt a kijelzot, es az birta. Viszont a 4x16-os HD44780-nal meg a pic16c84 is gyorsabb... „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?”
Sziasztok!
Köszönöm a választ. Értem a felvetődött problémát, de csak általánosságban kérdeztem, egy mérőeszköz topológiájának eldöntéséhez. Konkrétan, hogy ha van két külső ADC, akkor elég csak 1 PIC-el kezelni őket és utána (közben) kiértékelni az eredményeket, vagy a megszakítás nélküli méréshez érdemesebb volna egy gyengébb PIC-et beiktatni a nagyobb teljesítményű PIC és az ADC-k közé, hogy miközben számításokat és kommunikációt végez a kisebb ezalatt is kezelje az ADC-ket és gyűjtse a mintákat? A példa kedvéért a két ADC 1MSPS soros kommunikációval az erős PIC meg egy 24FJ128, persze tudom hogy ez attól is függ, hogy egyáltalán mik azok a számítások, amiket közben el kell végezni...
Nezd! A kijelzo frissitese gyakorlatilag nem vesz el idot, mert a hatterben tortenik. Legalabbis, ha ilyen a feladat, akkor erdemes ott csinalni. Tartasz a memoriaban 4 x 16 byte-ot, es abba irod a kiirando szoveget. Es egy ettol fuggetlen megoldassal x idonkent (100us..1ms) kiviszel mindig egy ujabb byte-ot a kijelzonek. Maga a byte atvitel a kijelzo fele az minimalis ido 2..3us. Ez a grafikus kijelzonel kicsit problemasabb, mert ott 1kbyte RAM kellene erre a celra, es azt nem eleg byte-onknet 100us frissiteni, mert az mar lassu lesz. Ott inkabb burst-osen erdemes ezt megoldani. Az 24FJ128-ban 8 byte FIFO van az SPI-ben, az mar egesz hasznalhato lenne.
De egyebkent meg ha a meres maga preciz kell legyen, akkor az nyilvan valami timer interrupt alapon megy, es az adatot folyamatosan puffereled, igy nem lesz adatvesztes, felteve, hogy az emlitett szamitasokat egyaltalan el tudja vegezni a processzor. Bar, ket 1MSPS A/D az 8 bit mellett is 2 megabyte/s adat, amit egy 32 MHz orajelu processzorral feldolgozni... Hát, nem tudom. Tenyleg kerdes, hogy mit kell szamolni az adaton.
Sziasztok!
Ma kísérletezgettem a másik PIC-el és ott is tökéletesen működik a megszakítás kívülről. Az INT0 külső megszakítás nem csak felébreszti a vezérlőt hanem a megszakítást is végrehajtja. Viszont van egy olyan probléma, hogy a feszültség ráadásakor a PIC mintha nem indulna el. Nem kapcsol be az INT0-ás lábon a felhúzóellenállás sem. Ez mitől lehet?
Esetleg egy SLEEP utasítás miatt? Gondolom a program és az include változott, ismeretük nélkül nehéz megmondani.
A hozzászólás módosítva: Feb 8, 2015
Szia!
Nem volt benne sleep, de már rájöttem, hogy az oszcillátor beállításánál volt valami gubanc. Már megy rendesen.
Sziasztok!
Én is szeretnék elkezdeni PIC-et programozni, régebbről van egy PIC16F877-es icém, de a soros portos égető nem működött nekem se. Egy megbízható USB-ről működő égetőt szeretnék készíteni. A neten nagyon sok rajzot láttam,de nem sikerült döntenem melyik az ami biztosan működik, és hogy megfelelő-e egyáltalán ehhez az ic-hez. Valaki tud linkelni valami jó építési leírást, ami mindenképp működőképes és nem kell magához az égetőhöz is programozni? Válaszotokat előre is köszönöm!
Az a gond, hogy az usb-s programozókhoz kell egy felprogramozott pic. Viszont anyagilag nem éri meg az utánépítéssel foglalkozni, csak ha építés kedvéért. Pár oldallal viszább valaki próbálkozott a párhuzamos égetővel. Ha jól emlékszem itt a cikkek között meg van a leírása. Viszont ha komolyan akarsz pic-ekkel foglalkozni, tök olcsón lehet venni pickit2-öt, mert már régóta van belőle 3-as.
Sziasztok!
Szeretnék egy kis segítséget kérni lehet hülyeséget fogok kérdezni, meg építettem Topi mester óráját de nem indult el az óra teljesen át ellenőriztem a nyákot kétszer hogy szakadás vagy elkötés lenne az oka, hogy nem működik. Lehetséges-e az úgy elindítani az órát, hogy egy invertert kötök be teljesre és egy szegmenst kötőkbe a shift regisztere azért hogy ellenőrizem a chip működését mert sejtésem szerint a kínai testvérektől vett mikróvezérló a hibás a program felégetése sikeres bele de még is a chip attól függetlenül hibás. Válaszokat előre is köszönöm.
Az inverter bemenetét magas szintre húzva, a shift regisztert megfelelően vezérelve elméletileg működésbe hozható a kijelző.
Sziasztok. Belefutottam egy hibába, amit nem tudok megoldani. 16F877A-t programozok A programban van megszakításkezelés (csak TMR0), és ki-bemenetek kezelése. Azt vettem észre, hogy egy bizonyos programméret fölött a PIC vagy nem indul el, vagy nem azt csinálja amit kell. A mellékelt képen is látszik, hogy a programmemória tartalma a 013E címig tart, ami ennél a PIC-nél semmi. Ha akár a főprogram elejét feltöltöm NOP-okkal, akkor is ugyanez lesz. Fordítónak az MPASMwin v5.30.01-et használom.
Tudja valaki, mitől lehet ez? Előre is köszönöm. Üdv: Zoli
Szerintem a pclath regiszter feltöltésének hiánya okozza. A program átnyúlik egy másik memória lapra valószínűleg.
A lapok nem 2K távolságra vannak? Én még bőven az első lap elején tartok csak.
Elméletileg igen, de nekem is már többször fordult elő hasonló hiba, és én sem értettem a dolgot, de ez mindig meghozta a sikert. Esetleg nézd meg szimulátorba, hogy ha lépésenként mész, akkor valamikor nem ugrik-e vissza az elejére.
Még lapváltást soha nem kellett használnom, pedig volt nagyobb programom is, igaz az 16F628-on.
Szimulátort sem használtam még. A szoftvert szövegszerkesztővel írom, MPASM-mel fordítom, és PICKIT2 programmerrel töltöm fel.
Én is hasonlóan csinálom. A logikát én sem mindig értem, de tény, hogy ha regisztert lekezelem, akkor általában jó szokott lenni.
Szia !
Szerintem használsz benne RETLW-t... na, az csak 256 byte-on belül lehet "alapból" ! A legegyszerűbb, hogy a táblázatodat tedd a program elejére ! A hozzászólás módosítva: Feb 9, 2015
Na akkor itt a válasz, hogy mi benne a logika. Nekem szövegtábla van a legvégén és vagy pagesel-lel volt jó vagy így:
Igen, egymàs után van két db 10 elemű. Ez jó ötlet. Bár a megszakítás rutin sem rövid, de megpróbálom.
Az is megoldás hogy a táblázatot a PAGE1-re tenném, a főprogram meg maradna a PAGE0-án?
Főproram: ... ... ... BCF PCLATH,4 BSF PCLATH,3 ;Select page 1 CALL TABLA ORG 0x800 ;PAGE 1 kezdete TABLA RETLW D'1' RETLW D'2' RETLW D'3' ... ... Ez így jó?
A hozzászólás módosítva: Feb 10, 2015
Köszönöm, este megpróbálom. (a fenti példámban tábla elejéről kimaradt az ADDWF PCL,F)
A call TABLE által meghívott rutin visszatérése után a PCLATH változatlan marad, így a következőkben végrehajtandó ugrások, hívások mind az 1. lapra hivatkoznának. Ennek elkerülésére a visszatérés után a PCLATH -t a 0. lapnak megfelelően kell beállítani.
A hozzászólás módosítva: Feb 10, 2015
Igen, nekem is így logikus, az adatlapban lévő EXAMPLE ezt nem teszi meg, ezért nem írtam ide én sem, de egyértelmű hogy kell.
A hozzászólás módosítva: Feb 10, 2015
Sziasztok!
Még mindig az SDA 2131-el szenvedek. Kaptam több megoldási tippet, amik alapján sikerült elindulnom, viszont nem akartam egyiket sem csak beilleszteni, hogy tanulás jellege is legyen a dolognak. Most ott tartok, kiírja a karaktereket a kijelző, viszont nagyon villog. Ha a kijelzésben az időzítést növelem, úgy nagyon lassú lesz, ha csökkentem, akkor meg annyira gyorsan villog, hogy csak 8-asokat jelenít meg halványan a kijelző. A kódom a következő:
Hogy tudom gyorsítani a futását, hogy ne villogjanak a karakterek? Valamint a nem aktív szegmensek ne világítsanak nagyon halványan? Még az elején kaptam olyan javaslatot, hogy az SDA2131 C lábát fel-le kellene kapcsolgatni a regiszter feltöltése előtt és után. Ez nem tudom, hogy megoldás lenne-e, de a panelomon, amit használok ez a láb folyamatosan tápfeszt kap, vagyis a kijelzőt nem kapcsolja le soha. Ez vagy inkább kódbeli hiba okozza a villogást? Csatoltam a villogásról egy videót. Ezen a villogás sebességét elég jól kiszűrte a telefonom, mikor felvettem, mert szabad szemmel inkább olyan, mint a régi CRT monitort nézni 50Hz-es felbontáson. Viszont a nem aktív szegmensek halvány világítása jól látható. Üdv: spgabor
Én legutóbb így használtam:
Tábla:
A tábla következő memória lapra van rakva. Biztos van ennél jobb módszer is, de működik. A hozzászólás módosítva: Feb 10, 2015
Sikerült lapváltással megoldani. A táblázatok a 2. lap elejére kerültek, minden jól működik. Köszönöm a segítségeteket.
Sziasztok! MPLAB v.8.90 alatt ASM30 fordítóval PIC24H-s piccel szórakozok Microstick 2-vel. A problémám az, hogy próbálom életre kelteni a SPI1 modult, de egy egyszerű adat elhelyezés a bufferben MPLAB SIM alatt szabályosan megtörténik, hardveres debug módban viszont látom, hogy nem kerül bele. Kicsivel elötte SPI1CON1-be nem akart bekerülni az adat, aztán mikor nem SPI1STAT-ot állítom először hanem SPICON-et akkor működik.
Megfelelően inicializáltad az SPI modult?
A helyes sorrend: 0.) SPI tiltása, ha szükséges (SPIxSTAT) 1.) SPIxCON1 és SPIxCON2 beállítása (SPI konfigurálás) 2.) SPIxSTAT beállítása (SPI modul engedélyezése) Adatküldés/fogadás: 3.) Adat betöltáse SPIxBUF regiszterbe 4.) Tranzakció megtörtént? (SPIxSTAT,#SPIRBF=1?) 5.) Adat olvasása (SPIxBUF)
Szia! Nem magával a kommunikációval van a probléma, addig el sem jutok, hanem magával az adat bemásolásával az SPI1BUF-regbe. Tehát ha W0 értéke x, akkor MOV W0,SPI1BUF utasításra, nem kerül X SPI1BUF-ba, ha éles nyomkövetéssel nézem, ha MPLAB szimulátorral, akkor bekerül, mint ahogy el is várnám. Vagy, ilyen létezik, hogy amíg egyik reg nincs feltöltve, addig a másikat nem lehet írni? Egyébként az általad írt sorrendet követem.
SPI1STAT-ba és SPI1CON1-be bekerül az érték, SPI1BUF-ba semmi. (csak szimulátorban kerül be) |
Bejelentkezés
Hirdetés |