Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Én sem tudok erről többet (sőt, inkább kevesebbet), mint ami az adatlapban van:
1. digitális bemenetre kell állítani (ANSEL, TRISA) 2. Engedélyezni kell az adott lábra az Interrupt on change funkciót 3. Törölni kell az interrupt jelzőbiteket, s gondolom, hogy generálisan is engedélyezni kell az interruptot, Sleep után a bemeneti láb szintjének átbillenésére "felébred" Csipkerózsika álmából a program, s ha igaz, amit az adatlapban írtak, akkor ott folytatja, ahol abbahagyta. Az adatlap alfejezetében és a Microchip honlapján az AN879 alkalmazási példában cifrább dolgokat is említenek, amikor az A0-ra kötött kondenzátor feltöltésével és kisütésével periodikusan költögetik a processzort.
Én imádtam a Forth-ot még a Z80-as korszakban, lehet, hogy ezt a PIC-es Forth-ot is szeretni fogom (mindenképpen kipróbálom).
Majd arra leszek leginkább kíváncsi, hogy mennyire tudok beleférni a memóriába a dolgaimmal. Pl. ha jól emlékszem, a korabeli Forth-okkal lehetett olyat csinálni, hogy ha az ember elkészült az alkalmazással, akkor "kipurgálta" a felesleges szótári bejegyzéseket, amik sosem voltak használatban, csak a helyet foglalták, és így tömör, futtatható kódot lehetett előállítani. Ha ez, vagy valami ehhez hasonló dolog működne itt is, akkor az nem lenne egy túl rossz dolog akár kis PIC-ekre is. De nem volt még időm leülni és megnézni a lehetőségeket, csak itt a topicban olvastam a dolgokat.
Á! Valaki a Z80-at emlegette... Ha tudnátok információkkal megtámogatni, hogy mire jó egy Zilog Z8028012VSC, vagy egy 68000-es motorola proci (ez figyel az Atari 520ST FM gépemben), azt nagyon megköszönném. Ma szereztem ilyesmiket, persze ingyen volt... gondoltam, valamire még jók lehetnek!
Én olyasmire emlékszem (most nem tudom már, melyik típusú PIC volt az), hogy ha a GIE le van tiltva, de a megfelelő periféria-interrupt engedélyezve van, akkor is felébred SLEEP-ből, és akkor tényleg ott folytatja. Ha a GIE engedélyezett, akkor pedig elugrik előbb az interrupt-kezelőre. Utána kell nézni az adott PIC adatlapjában, biztos le van írva, hogy mikor hogyan ébred.
Idézet: „ha jól emlékszem, a korabeli Forth-okkal lehetett olyat csinálni, hogy ha az ember elkészült az alkalmazással, akkor "kipurgálta" a felesleges szótári bejegyzéseket, amik sosem voltak használatban, csak a helyet foglalták, és így tömör, futtatható kódot lehetett előállítani.” A Z80 estében ennek azért volt értelme, mert több szabad hely maradt a RAM-ban. De itt, a Harvard felépítésű vezérlőknél mire mégy vele, ha "kipurgálás" után 8-10 kilobájttal több marad üresen a flash programtárban? A FlashForth fejlesztője inkább azt az utat választotta, hogy csak a szükségesnek ítélt dolgokat írta bele az alaprendszerbe (a fordítás után az .lst fájl végén ez áll: Program Memory Bytes Used: 8186). Sok opcionális parancs definicíója pedig a mintaprogramokban áll rendelkezésre, ha kell, akkor betöltöd, s akkor az is része lesz a rendszernek.
Igen, van erről egy szép hosszú litánia az adatlapban, tele olyan nyalánkságokkal, hogy az interrupt rutinra ugrás előtt azért még a sleep utáni utasítást végrehajtja....
Számomra nem volt egyértelmű első olvasatban, hogy mindebből mi vonatkozik az RA2/INT lábra, de most rábeszéltél, hogy a GIE mégse legyen engedélyezve. Idézet: „De itt, a Harvard felépítésű vezérlőknél mire mégy vele, ha "kipurgálás" után 8-10 kilobájttal több marad üresen a flash programtárban?” Esetleg arra, hogy fejleszt az ember egy nagyobb memóriájú példányon és a végső program belefér a "kisebb testvér"-be is. Persze az is igaz, hogy egy családon belül nem jelentős az árkülönbség, ha néhány darabról van szó, akkor nem érdemes ezzel bonyolítani az embernek az életét. Nagy példányszámnál talán már meggondolandó a dolog.
Lehet a GEI bekapcsolása nélkül vagy a GEI bekapcsolásával használni a sleep-et, csak az utobbi esetben célszerű a sleep után közvetlen egy nop utasítást is elhelyezni.
Igen, ez egy méltányolható szempont. Viszont tényleg az van, hogy néhány darabnál nem számít a memória minimális többletköltsége, nagyobb szériába meg minek tenném bele az interpretert (ha nem kifejezetten az interaktivitás a cél)? Akkor már érdemes elgondolkodni egy fordító használatán (assembly, C, de akár Forth-hoz is léteznek fordítók).
Köszi szépen a választ.Jól elmagyaráztad,mostmár teljesen világos.
üdv Máté
sziasztok, ha jól gondolom a 16F677 és társai-ban (pl 16F690) van egy beépített 32.768kHz-es kvarc kristály?
Ez így igaz? tehát nem kell külön vennem egy kvarcot ha órát szeretnék csinálni? Kondik belövésével sem kell szenvedni a pontos frekihez? Ilyen egyszerű lenne? Köszi!
Nincs ilyen beépített kristálya. Van, amelyiknek van belső órajelgenerátora, de az sem ilyen frekvencián működik. Ha órát akarsz tákolni PIC-kel, a pontosság érdekében célszerű órakvarcot alkalmaznod (az általad említett frekvenciájú kis rizsszemnyi eszközt).
hm: adatlapból:
6.4 Timer1 Oscillator A low-power 32.768 kHz crystal oscillator is built-in between pins OSC1 (input) and OSC2 (amplifier output). The oscillator is enabled by setting the T1OSCEN control bit of the T1CON register. ott a crystal szó meg a pontos freki... meg hogy built-in. nemértem. Akkor ez mi?
crystal oscillator is built in szerepel, nem az, hogy crystal is built in
Magyarra fordítva: kristály oszcillátor van beépítve, nem kristály van beépítve. Idézet: „Kondik belövésével sem kell szenvedni a pontos frekihez?” Tudtommal a karórákban is trimmerkondenzátorral hangolják be ezeket az oszcillátorokat. Az én első kvarcórám valami gagyi márka volt, pont a hangoló trimmert spórolták ki belőle. Egy rézdrótra tekert zománchuzalból csináltam bele "padding kondenzátort" (a trimmert drágán szerelte volna bele az órás), s napokig kenegettem valami szintetikus lakkal, hogy még hangoljak rajta egy kicsit.
hm, ha már itt tartunk, mivel nekem nincs frekimérőm
arra gondoltam, hogy írok kis progit ami PC óráját és a sorosporton bejövő pl 10 másodperces jelet figyeli. És úgy tudnám hangolni. ez mennyire jó ötlet? Ennél még jobb a hangkártyás oszcilloszkóp is? Valami tippet adhatnátok. Köszi!
keresek egy órát. leosztom a jelét valamennyivel, az órámét is, pl 8al, és rákötöm mindkettő egy erősítőre, és ha nem hallok semmit a hangszórón akkor jó, ez is hülye ötlet mi?
Szerintem elég, ha számlálod a másodperceket, percekeket, órákat. Azután a sorosporton időnként kiküldöd a PIC szerinti időt, s megnézed, hogy pl. egy óra, félnap, két hét alatt mennyit siet, vagy késik.
Üdv mindenkinek!
A minap kellett egy PIC16F84A-20I/P progiznom. Evvel nincs is semmi gondom. De az a kérdésem merült fel hogy meg lehet-e csinálni az olcsobb 16F628A-ba az írást ha csak HEX-be van a programom és ha igen hogyan? Az tudom hogy egy az egyben nem lehet beírni, mert más beállítások vannak a két PIC-nél. ASM-ből még csak-csak megtudnám, de HEXből hogy lehet, ha egyátalán lehet... Köszönöm előre is a választ!
Sziasztok!
Egy olyan kérdésem lenne hogy adott egy 18f4520 és 4db MCP4011 digit poti. Ez így együtt jól működik. Ezt szeretném összekötni az LM1036 fesz. vezérelt előfokkal. Hogyan kéne úgy összekötnöm hogy a digit föld zaja ne jöjjön át az LM hangjába?
Ennyire sajnos nem egyszerű a helyzet. A legfőbb problémát az okozza, hogy a komparátor modul a 628-ban engedélyezve van reset után, és ha nem tiltod le, akkor a hozzá rendelt 3 láb nem fog digitális IO-ként működni. A másik gond, hogy a 84-ben nincs bankolás, a 628-ban pedig van. Szóval csak a hex birtokában elég nehéz lesz a dolgod.
Szerintem az nem a föld zaja lesz, hanem inkább a tápé. Esetleg lehetne a digit potit az analóg részről táplálni, és csak a GND-ket összekötni a digitális résszel, azt is csak egyetlen ponton. (Esetleg nézz körül, hogy nem alakul-e ki földhurok, nem az hozza-e be a zajt.)
Keress egy PIC disassemblert, s máris megvan az ASM, amit tetszésed szerint módosíthatsz... Ha csak az inicializálást vagy a konfigurálást kell módosítani, akkor ez könnyen megoldható.
Az a húzósabb, ha az egész programot át kell írni. Akkor nem biztos, hogy megéri a procin spórolni! Idézet: „ASM-ből még csak-csak megtudnám, de HEXből hogy lehet, ha egyátalán lehet...” Igen, hasznalhatsz disassemblert, pl az unPIC-et amit egy-ket eve irtam: unPIC project
Javasolták, hogy keress disassemblert, holott nem kell keresni, mert ott van az MPLAB. Csak be kell importálni a hex ablakba a hex-et, kiválasztani a PIC-et, és ott az asm forrás. Igaz kicsit nehezen olvasható, de kis szenvedés árán át lehet írni, ha értesz hozzá.
Sziasztok!
A kedves konzulens tanárom írt nekem egy progit, amit meg sem várt hogy leteszteljek, de ragaszkodik hozzá hogy ezt használjam. Viszont nem jövök rá mi a hiba. Elvielg az kellene csinálnia, hogy ha az RD0-2 lábain logiaki egy van, akkor az E porton lévő RE0-2 ig felvillanjanak a LED-ek valamifél visszajelzés gyanánt. A progi lefut, de nem történik semmi ha harveresen tesztelem. Íme a progi: [code=asm] POSI equ 020h ;position register conf banksel TRISB ; Selects bank containing register TRISB clrf TRISB ; All port B pins are configured as outputs banksel TRISE ;PORTE configured as digital movlw 00h movwf TRISE banksel ADCON1 bsf ADCON1,1 bsf ADCON1,2 bcf ADCON1,3 start ;copy of the position bits in POSI register banksel PORTD movf PORTD,W movwf POSI ; ;sending of POSI to PORTE movf POSI,W movf PORTE ; goto start ; end [/code=asm]
Bocsi elirtam a code-ot, de már nem tudom módositani.
Sorry
Igen, valoban, lehet hex-et importalni es utana megnezni a program memoriat. Aztan kiteszed TXT file-ba, de az nem ASM hanem egy disassembly lista - mondjuk at lehet alakitani ASM-ben rendben. Azonban nem latod, hogy melyik specialis funkcio regiszterhez nyulkal, vagy eppen hol vannak GPR hivatkozasok. Azonkivul nincsenek cimkek, csak program memoria cimek ahova ugral, es hat ha egy masik MCU-ra akarod atirni a dolgot akkor igy valoban eleg nehez feladat ele nezel Bar lehet mazochistanak is lenni, de akkor inkabb mar veszem a HEX file-t es megpatchelem vi editorral
Tenyleg ne vedd bantasnak, de szerintem nem erdemes lebeszelni a disassemblerekrol, foleg ha azok ingyen vannak
köszi én is ezekre a lépésekre gondoltam.
Emulált soros portot hogy kell egy I/O lábon megvalósítani?? Hamarosan elkészül a progi, ha kész felrakom és majd várom az építő jellegű észrevételeket Addig is emulált soros port??? |
Bejelentkezés
Hirdetés |