|
Szerző |
Üzenet |
Elektromann
gyémánt tag
Csatlakozott: hétf. jún. 23, 2008 14:30 Hozzászólások: 1274 Tartózkodási hely: Hódmezővásárhely
|
Re: PIC kérdések
Itt tanultam a PIC programozását: http://kapcsolasok.hu/pic-iskolaEz nagyon jó néhány egyszerű programhoz, de most már szeretnék egy RGB LED vezérlőt is készíteni. Ezen felől zavar, hogy csak akkor tudom használni a gombot, ha lement egy programrész. Szeretném megtudni, hogy lehet-e valami módon szabályozni a LED-ek fényerejét, és hogy van-e megoldás arra, hogy bármikor használhassam a gombot?
|
szer. jún. 22, 2016 20:09 |
|
|
Hertz
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 102
|
Re: PIC kérdések
Értem, akkor majd arrafelé keresgélek szükség esetén. Kösz mégegyszer!
|
kedd ápr. 15, 2014 22:46 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Re: PIC kérdések
Tényleg, nemis figyeltem a dátumot Csak jött értesítés valami hozzászólásról, aztán láttam, hogy van itt is olvasatlan. Amúgy valami olyan volt, hogy egy jó ideig nem működött a fórum, aztán átkerült ehhez a wikitech-hez, és újraindult, de a társaság nem jött vissza. Hobbielektronika.hu-n vagyunk aktívak elég sokan, akik itt voltunk.
|
hétf. ápr. 14, 2014 18:22 |
|
|
Hertz
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 102
|
Re: PIC kérdések
Köszi szépen, közben sikerült megoldani, de igen, így, ahogy írtad. Azt hiszem a következő napon összejött végre. Azóta eltelt 8 hónap. Mi történt, régen olyan nagy élet volt itt? Emlékszem, hogy Watt és Te segítettetek a legtöbbet nekem... Azóta nem foglalkoztam PIC-el, de holnap érkezik egy 12F683-as példány. Ezt még sosem használtam, remélem menni fog de, ha elakadok lehet, hogy kérdezek is. Köszönöm előre is, ha ide nézel néha!
|
hétf. ápr. 14, 2014 17:08 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Re: PIC kérdések
Teszel a kód elejére egy ORG 0x08-t, és utána teszed a megszakítási rutint. Kód: ORG 0x00 ; reset után itt indul a program GOTO FOPROGRAM
ORG 0x08 ; itt kezdődik a megszakítási rutin ; magas szintű megszakításnál nem kell menteni a WREG, STATUS és BSR regisztereket, azok mentve vannak hardveresen ; egyéb regiszterek mentése (FSRx, PRODH, PRODL, stb.), amennyiben kell
BTFSS INTCON, T0IF BRA ISR_VEGE BCF INTCON, T0IF ; itt csinálod, amit akarsz
ISR_VEGE ; regiszterek visszaállítása itt, amennyiben kell RETFIE FAST ; WREG, STATUS és BSR hardveres visszaállítása, és visszatérés a főprogramba
FOPROGRAM ; ide kerül a főprogram Ezt most csak fejből írtam, de valami ilyesmi
A hozzászólást 1 alkalommal szerkesztették, utoljára potyo kedd ápr. 15, 2014 9:17-kor.
|
hétf. ápr. 14, 2014 7:55 |
|
|
Hertz
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 102
|
Re: PIC kérdések
Sziasztok! Jó rég jártam itt... 18f2320-as PIC-et használok és az a célom, hogy Timer0-val hozzak létre megszakítást. A Timer0-át sikerült beállítanom, legalábbis a T0if állapotát lekérdezgetve működik. A globális megszakítást és a Timer0 megszakítást engedélyeztem (a GIE és a TMR0IE 1-re van állítva). Kérdésem az, hogy most hogyan, hová kell elhelyeznem azt a programrészt, amit a megszakításkor szeretnék futtatni? Sajnos eddig nem jöttem rá, pedig tegnap szinte egész nap ezzel próbálkoztam... Esetleg egy néhány soros példát tudnátok írni? Köszönöm előre is, ha segítetek! Ja, ASM-ben írom.
|
kedd aug. 06, 2013 7:47 |
|
|
világos
vas-tag
Csatlakozott: hétf. júl. 29, 2013 16:12 Hozzászólások: 1
|
Re: PIC kérdések
Tisztelt Fórumtársak! Segítségeteket szeretném kérni (olvastam van itt olyan aki tanít is) hogy érdemes-e belefogni ennek a projektnek a megvalósításába , működhet-e mi a véleményetek?! Kiváltképen a negatív feszültségmérésre. ezt találtam: http://www.goldpaka.atw.huKöszönöm.
|
hétf. júl. 29, 2013 16:55 |
|
|
stubiflex
arany tag
Csatlakozott: pén. ápr. 23, 2004 0:10 Hozzászólások: 463 Tartózkodási hely: Magyarorszag
|
Re: PIC kérdések
Pár soros program. Mégsem akar működni megfelelően. Mindig újraindul a PIC. Hol a hiba szerintetek?
program Usart_Test;
var txt, delim : string[10];
begin
TRISB := %11111110; PORTB := %00000001; Usart_Init(4800); delay_ms(100); delim := 'OK';
while TRUE do
begin
if Usart_Data_Ready() = 1 then
begin Usart_Read_Text(txt, delim);
if (txt[0] = 'K') and (txt[1] = 'B') and (txt[2] = 'e') and (txt[3] = ' ') then
begin Usart_Write_Text('Kazan Be'); SetBit(PORTB, 0); end; if (txt[0] = 'K') and (txt[1] = 'K') and (txt[2] = 'i') and (txt[3] = ' ') then
begin Usart_Write_Text('Kazan Ki'); ClearBit(PORTB, 0); end;
if (txt[0] = 'H') and (txt[1] = 'M') and (txt[2] = '?') and (txt[3] = ' ') then Usart_Write_Text('Homerseklet'); end; end;
end.
Lehet, hogy a 16F877A-n nem működik az Usart_Read_Text?
|
kedd márc. 26, 2013 21:21 |
|
|
YZ7PA
ezüst tag
Csatlakozott: csüt. máj. 19, 2005 7:24 Hozzászólások: 86 Tartózkodási hely: ÓBecse, Vajdaság
|
Re: PIC kérdések
Kellemes napot minden kedves fórumozónak!
Én is hasonló (de lehet hogy semmi köze sincs hozzá) gondal találoztam. Töltögettem egy progit 12f675-ös PIC-ekbe. Egyszer az egyik megmakacsolta magát és bár a Willemet használom az IC-Proggal eggyütt, felismeri a tipusát, kiolvasható a pic meg minden de beirni azt már nem lehet. Ahogy indul a beirás az első cimnél azonnal leáll mert nem azt olvassa vissza amit beiirt. A Bandgap értékét még beirja, megváltoztatja de amikor a memóriába kellene irni csak elszáll, persze a Konfiget már nem is irja be. Utána még találtam hármat ami ugyanigy viselkedik. Eyeken felül ketőt viszönt tökéletesen beirt, visszaellenőrzött. Átnéztem a programozó vasat és nem találok benne semmi hibát, reszettáltam a számitógépet és mindent ami eszembe jutott. Azóta sem tudom azokat az MCU-kat irni. Találkozott valalki hasonló hibával, mert most nem tudom eldönteni elszáltak a pic-ek, vagy csak bezáródtam valami módon vagy mi van. Segitsen aki tud de az is aki nem.
További jó elfoglaltságot és szórakozást!
|
vas. dec. 11, 2011 9:26 |
|
|
totya334
ezüst tag
Csatlakozott: vas. aug. 26, 2007 19:42 Hozzászólások: 71 Tartózkodási hely: Kecskemét
|
Pickit2 probléma
Üdv Még nem jártam itt de kezdek ismerkedni a pic el van egy pickit2 programozóm amit eddig sikeresen használtam most jelentkezett egy kis gond vele. Sajnos a szoftveres részéhez nem nagyon értek a dolognak inkább hardveres vagyok. A gondom a következő lenne,16f628A szeretnék égetni a csip külön panelon van semmi nincs körülötte a 10 láb földre kötve olvasás törlés rendben írni viszont nem hajlandó. Végső elkeseredésemben kerestem a netten pár hex et ami 628a ra van írva és elkezdtem kísérletezni a tapasztalat hogy ameik hex kb 8-10 sor volt azt hibátlanul beírja akár többször is viszont ha a hex hosszabb tehát nagyobb a program akkor egyáltalán nem írja be és hibával leáll. Találkozott e valaki hasonló gonddal? A program 2.61 a firmware 2.32 device file 1.62.03
|
szer. jan. 05, 2011 14:05 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Re: PIC kérdések
Koszonom szepen. Minden vilagos mar a c nyelvi megszakitassal kapcsolatban. Masik kerdesem lenne: Van egy szenzorom ami egy fizikai mennyiseget mer, es a kimeneten a mennyisegnek megfelelo (aranyos) frekvencia jelenik meg(7kHz...9,5kHz), allando amplitudoju negyszogjel formajaban. Ahhoz hogy egy szabalyozast felepitsek, ki kell ertekelnem a jelet. Ugy keszitettem el hogy a jelado kimenetet osszekotottem a PIC RB0-as labaval es a jelek detektalasat a megszakitasi rendszerrel inteztem oly modon, hogy elmenti a TMR1 16bites szamlalo allasat, majd megszamol 4db felfuto elt, majd megint elmenti a TMR1 allasat. Ekkor kivonja egymasbol a ket idot, igy megkapom mennyi ido kellett a negy impulzusnak. Ebbol mar tudok kovetkeztetni a vett fizikai mennyisegre. A 16 bites kivonast egy nemet oldalrol koppintottam, ugy csinaltak meg,hogy a kisebb helyierteken ha atvitel keletkezikmakkor a nagyobb helyierteken a kissebbitendobol (amibol kivonunk) kivon egyet, kozben jelezve, hogy atvitel tortent... (erdekes, hogy mi altalanos iskolabon mi a kivonandohoz adtunk egyet, vegulis az ugyanez) Szoval a problemam az, hogy a nagyobb helyierteken kapott eredmeny "ugral", neha eggyel tobb, neha jo, neha eggyel kevesebb mint a varhato ertek, de a legnagyobb baj az, hogy fogalmam sincs mi okozza. Megvaltoztattam a szamolt impulzusok szamat 4-rol 8-ra, de tovabbra is 1-gyel +-ba vagy minuszba teved. Eszerint az impulzusokat jol szamolja, a Tmr1 sem tevedhet, akkor csak a 16bites kivonassal van a baj. Pedig meg egy osszehasonlito utasitas reszt is tettem a rutin ele,hogy ha carry gyanus (mert a kivonando szam nagyobb es minusz lesz az eredmeny - hisz adodhat az a specialis eset, hogy pont akkor csordult tul a timer ) akkor ne is kezdjen szamolni vele, igy csak a legkedvezobb eseteket nezi. Sajnos ennek ellenere is jelentkezik a hiba. Megint probalkozhatok majd orakon keresztul annak kitalalasaval, hogy vajon mi hiusithatta meg a pontos eredmenyt a felso helyierteken.
|
csüt. dec. 30, 2010 5:02 |
|
|
atta
arany tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 228
|
Re: PIC kérdések
tubybb írta: Kezembe került egy C nyelven írt pic projekt. Az a baj, hogy ilyet még sosem láttam, és alapvető dolgokat nem tudom hogy hol keressek. Eddig csak assemblyben programoztam PIC-et, C nyelven pedig PC-t, de a kettőt együtt soha. (Na jó assemblyben sem programoztam PC-t)
Már ott kezdődik a gondom, hogy nem találom a megszakítási rutint. Nincs külön jelezve. Assemblyben könnyű mert Org 4h-nál van, de itt, egy olyan programnyelvben, ahol igazából nincs külön címzési rendszer, mert "magasabb" szinten van annál mint hogy ő memóriacímeket használjon... Halvány lila gőzöm sincs egyáltalán miként lehet egy C nyelvben megszakítási rutint elhelyezni. Szia, Hi-TECH C esetében: void interrupt intHandler(void) { //ide kell írni a megszakítás rutint } "The function qualifier interrupt may be applied to C function definitions to allow them to be called directly from the hardware interrupts. The compiler will process the interrupt function differently to any other functions, generating code to save and restore any registers used and return using a special instruction." "An interrupt function must be declared as type void interrupt and may not have parameters. This is the only function prototype that makes sense for an interrupt function since they are never directly called in the source code." Forrás: Microchip HI-TECH C® for PIC10/12/16 User’s Guide DS51865A "ahol igazából nincs külön címzési rendszer, mert "magasabb" szinten van annál mint hogy ő memóriacímeket használjon" - a valóságnak nincs alapja.... atta
|
kedd dec. 21, 2010 20:14 |
|
|
tubybb
gyémánt tag
Csatlakozott: vas. feb. 05, 2006 19:53 Hozzászólások: 1170 Tartózkodási hely: Győr
|
Re: PIC kérdések
Kezembe került egy C nyelven írt pic projekt. Az a baj, hogy ilyet még sosem láttam, és alapvető dolgokat nem tudom hogy hol keressek. Eddig csak assemblyben programoztam PIC-et, C nyelven pedig PC-t, de a kettőt együtt soha. (Na jó assemblyben sem programoztam PC-t)
Már ott kezdődik a gondom, hogy nem találom a megszakítási rutint. Nincs külön jelezve. Assemblyben könnyű mert Org 4h-nál van, de itt, egy olyan programnyelvben, ahol igazából nincs külön címzési rendszer, mert "magasabb" szinten van annál mint hogy ő memóriacímeket használjon... Halvány lila gőzöm sincs egyáltalán miként lehet egy C nyelvben megszakítási rutint elhelyezni.
|
csüt. dec. 16, 2010 16:13 |
|
|
optikus
ezüst tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 19
|
Re: PIC kérdések
udv mesterek! de reg jartam erre... lenne egy apro kerdesem. biztos volt mar vagy van ra topic de ennyi hozzaszolasban tu a szenakazalban esete. szoval 16f87x-el szeretnek egyszeru lcd kijelzot meghajtani. eleg a sima karakteres (pl 16x4 v hasonlo). melyik a legegyszerubben vezerelheto? no persze kaphato is? total tajekozatlan vagyok lcd temaban. a conrad honlapjan leltem egy jopar anag vision tipust. de eleg sok labat igenyelnek (ha jol latom 10-et). mondjuk nem gond de legalabb egyszeru legyen a progizasa es illesztese. mit javasoltok?
|
kedd nov. 23, 2010 22:25 |
|
|
dekszter
ezüst tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 58
|
Re: PIC kérdések
Régen írtam ide, "csak olvasaás" módban üzemeltem. Viszont most lenne nekem is egy kérdésem. Nézegetem az újabb PIC-kekben lévő CTMU modult, amivel érintésérzékelést lehet detektálni. Ezt az AD-val kell együtt használni vhogy. Megnéztem a MC-s példákat, stb., de mégsem értem egészen pontosan, hogy ez hogy a francba működik. Azt értem, hogy vmi kondenzátort tölt konstans árammal, mégse világos a működése. Használta ezt már vki? Ha igen, le tudná írni röviden, hogy működik, hogyan kell inicializálni? Ill. az analóg bemenetre csak magát az érzékelő felületet kell kötni, más passzív, aktív elemre nincs szükség?
|
pén. szept. 03, 2010 20:31 |
|
|
lindermen
vas-tag
Csatlakozott: pén. júl. 02, 2010 18:53 Hozzászólások: 2
|
Re: PIC kérdések
Köszi!!
|
szer. júl. 07, 2010 11:21 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Re: PIC kérdések
lindermen írta: sziasztok!
Alapvetően közöm nincs a témához, egy ismerős kért meg hogy segítsek neki. A problémája a következő: Van egy PIC 16C 711-04/P-je, és ezt kellene helyettesíteni. Mely PIC alkalmas erre, illetve hol lehet ilyesmit beszerezni? Kecskemét lenne a legjobb helyileg, aki esetleg ismerős errefelé, talán tud ajánlani valamit.
Előre is köszönöm! Microchip a 16F716-ot ajánlja helyette. De kétlem, hogy direktben bemenne a helyére, valószínűleg valamit kell módosítani a firmware-en is. Beszerzés: chipcad.hu
|
pén. júl. 02, 2010 19:11 |
|
|
lindermen
vas-tag
Csatlakozott: pén. júl. 02, 2010 18:53 Hozzászólások: 2
|
Re: PIC kérdések
sziasztok!
Alapvetően közöm nincs a témához, egy ismerős kért meg hogy segítsek neki. A problémája a következő: Van egy PIC 16C 711-04/P-je, és ezt kellene helyettesíteni. Mely PIC alkalmas erre, illetve hol lehet ilyesmit beszerezni? Kecskemét lenne a legjobb helyileg, aki esetleg ismerős errefelé, talán tud ajánlani valamit.
Előre is köszönöm!
|
pén. júl. 02, 2010 18:58 |
|
|
laci3041
ezüst tag
Csatlakozott: szomb. dec. 15, 2007 22:32 Hozzászólások: 14 Tartózkodási hely: Nógrád megye
|
Szia T68m !
Köszönöm a segítséget. Az adattábla megoldása tényleg egyszerűbb a Te módszereddel. Alkalmazni fogom.
Ez a lapozás dolog fog még nekem egy-két kellemetlen percet okozni, abban biztos vagyok.
Tehát valószínűleg járok még erre a jövőben a kérdéseimmel...
Üdv.: Laci.
|
vas. máj. 09, 2010 22:41 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
laci3041 írta: Szia !
Köszönöm a választ. Miután átgondoltam, már világos. Most nézem, nemrég hasonló dolgokról volt itt szó. Olvasnom kellett volna... Olvastam valahol egy kimerítõ írást a PCLATH mõködésérõl, ott ez volt az utolsó mondat: "Tehát a PCLATH segítségével válthatunk a memórialapok között" Ez zavart meg. Most nem találom a fájlt, de az idézett mondatra szó szerint emlékszem. Gondoltam, mivel végig a 0-dik lapon vagyok, a PCLATH-val még nincs dolgom. Tévedtem...
ne keverd össze az adat és a programmemória lapozást! Az adatmemóriában a status regiszter RP bitjeivel lapozhatsz direkt címzés esetén. Indirekt címzésnél az IRP használandó!!!!!!!!!!!
De a te esetedben a PROGRAMMEMÓRIÁBAN kell lapozni, erre a pclath való úgy, hogy számított ugrás esetén a pclath 8.-tõl felfele hatáozza meg a címet, normál goto és call esetén pedig 11.bittõl. Ez utóbbi csak akkor játszik (mint nálam), ha nem fér el az program+adattábla az alsó 2k-ban.
|
pén. máj. 07, 2010 11:40 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
én nem szeretek számolgatni, ezt rábízom a programomra, ezért úgy szoktam megoldani, hogy pl.:
org 700
adattabla movwf PCL
ch_level_meter dt "LEVEL METER",0
ch_bass_level dt "BASS LEVEL",0
.
.
.
így a kezdõcímet nem kell számolgatni, hanem a
movlw low ch_bass_level utasítással töltöm be, és a hosszt se kell számolgatni, mivel a 0-ig tart a string.
|
pén. máj. 07, 2010 11:32 |
|
|
laci3041
ezüst tag
Csatlakozott: szomb. dec. 15, 2007 22:32 Hozzászólások: 14 Tartózkodási hely: Nógrád megye
|
Szia !
Köszönöm a választ. Miután átgondoltam, már világos.
Most nézem, nemrég hasonló dolgokról volt itt szó. Olvasnom kellett volna...
Olvastam valahol egy kimerítő írást a PCLATH mőködéséről, ott ez volt az utolsó mondat:
"Tehát a PCLATH segítségével válthatunk a memórialapok között"
Ez zavart meg. Most nem találom a fájlt, de az idézett mondatra szó szerint emlékszem.
Gondoltam, mivel végig a 0-dik lapon vagyok, a PCLATH-val még nincs dolgom. Tévedtem...
Válasz a kérdésedre: Ha valamit ki akarok írni a táblából,
W-be a kiírandó szöveg első karakterének táblabeli sorszámát írom.
A BASS LEVEL esetében ez a decimális 11. Mivel a tábla gyakorlatilag RETLW-k egymásutánja.
A kiírandó karakterek számát pedig úgy határozom meg,
hogy egy regisztert feltöltök a kiírandó karakterek számával (itt dec. 10),
és minden visszatérés után csökkentem eggyel. Ha 0-ra csökken megállok és továbbmegyek.
Laci.
|
pén. máj. 07, 2010 10:38 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
ha megnézed, akkor az addwf utasítás 8bites, ahogy a PCL is az. Nyolc biten 255-ig lehet elszámolni, a te 264 soros programod eleve hosszabb + az adattábla hossza.
Azt tanácsolom, hogy az adattáblát helyezd $300-ra vagy $400-ra, stb. (de $800-nál kevesebbre!!!) és a PClath-ot még a program elején állítsd be ennek megfelelõen. Valahogy így: (a tábla így sem haladhatja meg a 256 byte-ot!!!)
;program eleje
movlw high LCD_Tabla
movwf PClath
.
.
.
org 300 vagy 400, 500, 600, 700...
LCD_Tabla movwf PCL, f; (én a movwf-t használom)
.
.
Egyébként, ha a "BASS LEVEL"-t ki akarod írni, akkor honnan tudod, hogy mennyit kell a W-be tölteni? És honnan tudod, hogy a milyen hosszú a stringed?
|
csüt. máj. 06, 2010 23:54 |
|
|
laci3041
ezüst tag
Csatlakozott: szomb. dec. 15, 2007 22:32 Hozzászólások: 14 Tartózkodási hely: Nógrád megye
|
Sziasztok!
Most ismerkedem a PIC-ek programozásával, és volna egy kérdésem.
Rengeteg elmélet átrágása után elkezdtem írni egy programot assemblyben.
Egy LCD-s kivezérlés mérő lesz, + egy-két extra.
Jelenleg úgy a felénél tarthatok (kb. 260 sor), de elakadtam.
Egy adattáblából írok ki szöveget az LCD-re, az aktuálisan kijelzett paraméter nevét.
Működik is szépen, de csak akkor, ha az említett adattáblát a program elejére írom.
Ha a főprogram végére (a szubrutinok elé) akkor csak bizonyos dolgokat nem csinál meg a szoftver,
ha teljesen a végére írom, akkor pedig teljesen meghal.
Kérdésem: miért nem mindegy, hová írom a programon belül az adattáblát?
Ennyi az adattábla:
LCD_Tabla addwf PCL,1
dt "LEVEL METER"
dt "BASS LEVEL"
dt "HIGH LEVEL"
dt "SUBWOOFER LEVEL"
Elvileg még annyira kicsi a program (264 sor), hogy végig a 0-s memórialapon marad a szoftver.
Így lapozási probléma nem lehet. Jól gondolom ?
Biztos, hogy valamit rosszul tudok, csak nem tudom mi az ...
10 regisztert foglalok le az elején, a 0x20 címtől kezdve.
Elvileg ezek mind a 0-s bankba kerülnek, tehát nem sokszor kell bankot váltanom.
Szeretném megtudni mi a gond, különben később nagy gáz lesz...
Ja, 16F877A-ról van szó.
Légyszi' segítsetek ! Köszönöm !
Laci.
|
csüt. máj. 06, 2010 21:52 |
|
|
icserny
vas-tag
Csatlakozott: hétf. ápr. 26, 2010 12:05 Hozzászólások: 1 Tartózkodási hely: Debrecen
|
aszasza írta: :D köszi! Megoldottam már. PIC12F683-mal lett volna az igazi...
|
hétf. ápr. 26, 2010 12:08 |
|
|
aszasza
arany tag
Csatlakozott: szer. okt. 24, 2007 17:18 Hozzászólások: 185 Tartózkodási hely: budapest
|
köszi! Megoldottam már.
|
pén. ápr. 23, 2010 0:15 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
aszasza írta: Sziasztok.
Építeni szeretnék egy PWM generátort 12f675 el, de nem tudom hogy álljak neki. 2 poti állását szeretném figyelni és a PWM frekvenciát szabályozni 5-100 hz ig, illetve a kitöltést 0-100% ig. Tudnátok segíteni ebben? Azért ezt a picet választottam mert ez van kéznél. Elõre is köszi.
ne mondd, hogy senki se segít, itt az adatlap:
http://ww1.microchip.com/downloads/en/D ... 41190F.pdf
|
csüt. ápr. 22, 2010 13:40 |
|
|
aszasza
arany tag
Csatlakozott: szer. okt. 24, 2007 17:18 Hozzászólások: 185 Tartózkodási hely: budapest
|
Sziasztok.
Építeni szeretnék egy PWM generátort 12f675 el, de nem tudom hogy álljak neki. 2 poti állását szeretném figyelni és a PWM frekvenciát szabályozni 5-100 hz ig, illetve a kitöltést 0-100% ig. Tudnátok segíteni ebben?
Azért ezt a picet választottam mert ez van kéznél.
Előre is köszi.
|
szer. ápr. 21, 2010 10:32 |
|
|
Ktulu
arany tag
Csatlakozott: szomb. nov. 29, 2008 11:08 Hozzászólások: 106 Tartózkodási hely: Bolyaiak városa
|
Idézet: Köszi a választ. A PICKit 3-nak milyen hátránya van? Vagy csak felesleges egy kezdőnek?
A PICkit3 elegge gyengere sikerult. Sok minden hianyzik belole, ami a 2-ben megvan, nem beszelve, hogy az ara is magasabb. Igaz, hogy a kozeljovoben valoszinuleg megszunik a tamogatottsaga, de ettol nem igazan erdemes tartani.
|
szomb. ápr. 17, 2010 20:40 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
fenti okok miatt hibás a microchip mintpéldája is:
http://ww1.microchip.com/downloads/en/A ... 00556e.pdf
Kód: "The code in Example 5 will allow the user to place and access a table anywhere in program memory."
EXAMPLE 5:
org 0x80 movlw LOW Table; get low 8 bits of address addwf offset,F do an 8-bit add operation movlw HIGH Table; get high 5 bits of address btfsc status,c; page crossed? addlw 1; yes then increment high address movwf PCLATH; load high address in latch movf offset,w; load computed offset in w reg call Table . . org 0x9FD Table: movwf PCL,F; load computed offset in PCL retlw ’A’; return the ASCII char A retlw ’B’; return the ASCII char B retlw ’C’; return the ASCII char C . . .
1. ha a lekérdezni kívánt lookup elem másik 8lapon van, mint a lekérdezõ rutin, akkor a call Table után a PClath-ot helyre kell állítani, különben a következõ call/goto utasításnál elszáll a program!
2. ha a lookup tábla átnyúlik a 8lapos határon (pl. 0x800), akkor a 8lapos határon túlnyúló elemek lekérdezése esetén már a call Table-nál elszáll a program. A program helyesen: a kiszámolt PClath értéket el kell menteni, a call Table elõtt a PClath-ot a Table magas bitjeivel kell beállítani, majd a movwf PCL elõtt a kiszámolt és elmentett PClath értéket kell a PClath-ba tölteni.
|
szomb. ápr. 17, 2010 18:08 |
|
|
Kerka
vas-tag
Csatlakozott: pén. ápr. 16, 2010 8:51 Hozzászólások: 2 Tartózkodási hely: Budapest
|
Köszi a választ. A PICKit 3-nak milyen hátránya van? Vagy csak felesleges egy kezdőnek?
|
szomb. ápr. 17, 2010 12:08 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
Tehát a megoldás ez lett:
Kód: movlw high mGetChar andlw b'111' movwf PClath_reg ... org 7f0 GetChar bsf PClath_reg, 3 call mGetChar bcf PClath_reg, 3 return org 800 mGetChar movwf PCL_reg LCDInitSt dt ... ... org 0xc00 LCDNevek dt ... ...
tehát a PClath-ba csak az alsó három bitet töltöm fel fixen. Mikor le akarok kérdezni egy karaktert, akkor meghívom a még elérhetõ címen, 0x7f0-án lévõ GetChar rutint, amely bekapcsolja a 11.bitet, majd meghívja a tényleges mûveletet végzõ, felsõ memóriában (0x800-tól) elhelyezkedõ mGetChar rutint, majd annak végeztével törli a 11.bitet.
Ezzel a megoldással a szövegkonstansokat 0x800 fölé helyeztem, 2k szót biztosítva számukra és az alsó memórián felszabadítottam 1,5k szót a program számára. Viszont hátrányai:
1. minden GetChar mûvelet 6 órajelciklussal hosszabb lett!
2. minden GetChar mûvelet eggyel mélyebb, tehát 2 vermet igényel. Ami miatt legfeljebb hat mélységbõl lehet meghívni.
Van ötleted fenti hibák mérséklésére?
|
szomb. ápr. 17, 2010 11:12 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
Igen, ez volt a gond. Tehát mivel pclath-ot elõre beállítom arra az értékre, ahonnan a lookup táblát használni akarom, (hogy ne kelljen minden táblamûvelet elõtt közvetlenül állítgatni), ezét a $800-as cím fölé állítása után az elsõ goto vagy call-nál már elszáll a progi. Tehát $800-as cím fölé csak közvetlen a lookup tábla használata elõtt szabad beállítani a pclath-ot, majd használat után törölni kell belõle a 11. és afeletti biteket. (mert azok már nem csak a computed goto-ra, hanem minden goto és call-ra hatnak.)
|
szomb. ápr. 17, 2010 4:16 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
Hm. ebből még nem teljesen látom, hogy használod. Azt figyelembe vetted, hogy a CALL és GOTO utasítás mellé is csak 11 címbit fér el a kódmemóriába, és a maradék két bitet ezek is a PCLATH-ból veszik az ugrásnál? Tehát ha te feltöltötted a PCLATH-t 0x08-al, elmentél a táblához, onnan egy RETLW visszaküldött pl. a 0x0052 című utasításra, majd itt kiadsz egy CALL (GOTO) utasítást, ami pl. a 0x0147 címet hívná meg, akkor az előzőleg beállított PCLATH 11 és 12. bitek miatt valójában a 0x0947 címre fog ugorni a kontroller a CALL (GOTO) hatására? Miután a táblából a RETLW visszaküldött, ott ismét be kell állítani a PCLATH 11 és 12. bitjét arra a lapra, amin a továbbiakban ugrálni akarsz. Van valami PAGESEL nevű makró, sosem használtam, de ennek a valamilyen szintű automatizálására való. Illetve a Figure 2-3-at nézd meg az adatlapban, az mutatja be ezt a lapozás dolgot. Esetleg vannak még további makrók, LGOTO, LCALL, ezeket is nézd meg, hátha hasznukat veszed.
Mondjuk 16F877 adatlapjában értelmesebben le van rajzolva a programmemóriatérkép...
|
pén. ápr. 16, 2010 15:08 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
potyo írta: T68m írta: 2048($800) és feletti lookup táblába való ugrásnál vagy visszatérésnél elszáll a progi. 16f688.
Van valakinek valami ötlet? Nem elég csak a pclath-ba 0x8-at tölteni, mint alatta? Tudsz mutatni kódot?
persze! (Köszi, hogy foglalkozol a kérdéssel)
Kód: org 300 GetChar movwf PCL_reg LCDInitSt dt ... LCDInitSor1 dt ... ... org 400 hGetChar hLCDMerre dt ... hLCDFelfele dt ... ... org 700 LCDNevek dt ... dt ... ...
meghívás: movlw high GetChar movwf PClath_reg ... movlw high LCDNevek movwf PClath_reg
jó, ha org 700-ig használom. Ha org 800-ra kerül az LCDNevek, akkor pclath_reg 11. bitjebe is értékes jegy kerül, és ez a legközelebbi - bármilyen - call-t vagy goto-t elb*a! :twisted: :twisted: :twisted:
ez az oka, a k. életbe! és org 300 alatt már csak 50 szó helyem maradt a programnak és még kéne bõvíteni. Tehát mindenképp org 800 fölé (is) kell tennem szövegkonstansokat. De pclath-ot nem állíthatom oda fixen - mint kiderült -, mert a 11. bittõl kezdve a (z egyéb, programban lévõ) call és goto utasításokra is hatással van. Na, ezen még gondolkodnom kell.
|
pén. ápr. 16, 2010 14:54 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
T68m írta: 2048($800) és feletti lookup táblába való ugrásnál vagy visszatérésnél elszáll a progi. 16f688.
Van valakinek valami ötlet? Nem elég csak a pclath-ba 0x8-at tölteni, mint alatta? Tudsz mutatni kódot?
|
pén. ápr. 16, 2010 11:57 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
2048($800) és feletti lookup táblába való ugrásnál vagy visszatérésnél elszáll a progi. 16f688.
Van valakinek valami ötlet? Nem elég csak a pclath-ba 0x8-at tölteni, mint alatta?
|
pén. ápr. 16, 2010 11:45 |
|
|
Ktulu
arany tag
Csatlakozott: szomb. nov. 29, 2008 11:08 Hozzászólások: 106 Tartózkodási hely: Bolyaiak városa
|
|
pén. ápr. 16, 2010 9:43 |
|
|
Kerka
vas-tag
Csatlakozott: pén. ápr. 16, 2010 8:51 Hozzászólások: 2 Tartózkodási hely: Budapest
|
Sziasztok,
Milyen készen kapható PIC égetőt érdemes venni? Szeretnék elkezdeni PIC-el foglalkozni, van egy régi 16F84-es égetőm darabokban. Nincs kedvem forrasztgatni, meg az már butuska is. Ezért gondoltam beruházok valami modernebbe. Tudnátok küldeni valami linket? Jó lenne ha égetni is tudna, meg ott a helyén lehetne próbálgatni is a beleégetett progit. Olyan 15-20 rongyig gondoltam.
Előre is köszönöm
|
pén. ápr. 16, 2010 9:18 |
|
|
elektro25
vas-tag
Csatlakozott: szomb. ápr. 03, 2010 22:04 Hozzászólások: 4
|
sziasztok.
Nincs valakinek PIC16-hoz 1wire search algoritmusa leprogramozva ASM-ben? A maxim honlapján csak C nyelvűt találtam, és néhány dolog nem tiszta. De lehet az is inkább megcsinálom magam, csak haladjak vele.
|
vas. ápr. 04, 2010 15:04 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
Potyo: írtam neked e-mail-t, megkaptad?
|
hétf. márc. 22, 2010 15:31 |
|
|
HiMen
arany tag
Csatlakozott: kedd szept. 07, 2004 14:53 Hozzászólások: 147
|
Ahogyan más belsőkvarcos RTC-nél is. Az OSCO-n kijön az IC saját rezegése... Az OSCI-n pedig rezeghetek neki ha úgy akarom...
|
hétf. márc. 22, 2010 15:13 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
HiMen írta: Az adatlapján jelezve van hogy van benne kristály:
Tisztál logikai alapon: ha lenne benne kvarc, akkor minek vezettek volna ki OSCI és OSCO lábat?
|
hétf. márc. 22, 2010 15:11 |
|
|
HiMen
arany tag
Csatlakozott: kedd szept. 07, 2004 14:53 Hozzászólások: 147
|
Az Oscillator 32,768 KHz nekem azt jelenti hogy rezeg. Akkor rezegjen...
Informatikus a tanult szakmám, az elektronikát kényszerből művelem, hogy legyen mit programoznia a kontrollernek. De ez érezhető is
Az R2025 nem tud századmásodpercet, az meg éppen kell. Ráadásul nincs belőle DIP tokozású. A radirgumira ragasztott felületszerelt cucc bekötésekor majd kifolik a szemem, ráadásul bűn ronda...
|
hétf. márc. 22, 2010 15:10 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
HiMen írta: Az adatlapján jelezve van hogy van benne kristály:
Adatlap, 4. oldal, Fig. 1 Block Diagram
Abból jön ki az OSCO és abba megy be az OSCI Szépen az egész körbekeretezve mint az IC belseje
Lehet, hogy neked inkább költészettel kéne foglalkoznod? Oda csak annyi van írva, hogy OSCILLATOR! Semmi kvarc.
22. oldal, Fig. 22, világosan oda van rajzolva a külsõ kvarc! Ráadásul egy trimmer kondi a Vdd felé. Szerintem a kondi nélkül is elmegy, illetve lehet azt a Vss felé is kötni. De kvarc az kell.
Különben meg nem értem: miért választottad ezt a tipust, ha egy másikkal már boldogultál???
|
hétf. márc. 22, 2010 14:15 |
|
|
HiMen
arany tag
Csatlakozott: kedd szept. 07, 2004 14:53 Hozzászólások: 147
|
Az adatlapján jelezve van hogy van benne kristály:
Adatlap, 4. oldal, Fig. 1 Block Diagram
Abból jön ki az OSCO és abba megy be az OSCI
Szépen az egész körbekeretezve mint az IC belseje
|
hétf. márc. 22, 2010 13:59 |
|
|
potyo
gyémánt tag
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 3691 Tartózkodási hely: Ada
|
HiMen írta: De hiszen van neki sajátja...! Nincs
|
hétf. márc. 22, 2010 10:59 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
HiMen írta: De hiszen van neki sajátja...!
Mi?
|
hétf. márc. 22, 2010 10:53 |
|
|
HiMen
arany tag
Csatlakozott: kedd szept. 07, 2004 14:53 Hozzászólások: 147
|
De hiszen van neki sajátja...!
|
hétf. márc. 22, 2010 8:12 |
|
|
T68m
a fórum lelke
Csatlakozott: szer. márc. 24, 2004 13:43 Hozzászólások: 12729 Tartózkodási hely: FLF
|
mert az osci és az osco közé egy 32k-s kristályt kell benyomni.
|
hétf. márc. 22, 2010 0:16 |
|
|
Ki van itt |
Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 17 vendég |
|
Nem nyithatsz témákat ebben a fórumban. Nem válaszolhatsz egy témára ebben a fórumban. Nem szerkesztheted a hozzászólásaidat ebben a fórumban. Nem törölheted a hozzászólásaidat ebben a fórumban.
|
|
|