# PIC mikrokontrolleri >  PIC16F688

## sharps

Lieta taada. Shim kontrolierim kaaja Nr 12 ir Vref un ICSPCLK. Sheemaa es uz sho kaaju kaa Vref padodu stabilizeetu 2V. Tanii pashaa laikaa MCU programmeeshanai izmantoju arii ICSPCLK. Diemzheel man shiis abas lietas vienlaikus nestraadaa. Varbuut kaads ir saskaaries ar liidziigu probleemu un var sniegt padomu?

----------


## JDat

http://www.microchip.com/forums/m373197-print.aspx

IMHO diode un pretestība jāuzliek priekš izolācijas un jāpārregulē stabilizētais spriegums...
Vai ari uzliec vienkārši kādu jumper vai tml mehānisku ķīmiju, kas pārslēdz starp Vref un ICSP režīmiem.

----------


## sharps

jumper°is jau buutu pats vienkaarshaakais, bet gadaas ka par to aizmirst. kaa arii biezhi jaapaarshuj chips, tad apniciigi spraudeleeties. ok pachekoshu kaa tur ir.

----------


## JDat

kaut kur bija rekomendācijas kā atsaistīt. Jāpagooglē. Es domāju tā: kamēr būvē sava brīnuma prototipu, tikmēr ar slēdzīti vai tml. Esmu gatavs pieciest grūtības. Ta ka gatavs izstrādājums un atdodams pasūtītājam (vai liec uz ilgstošu strādāšanu), tad tev FW nav jāmaina un iztiec bez atsaistēm. Nez laikam esmu naivs čakarētājs, kurš ir gatavs jāties kamēr izstrādā prototipu un par ērtībām nedomā...  ::

----------


## sharps

pachakareeties var uz viena projektinja. uz gatava izstraadaajuma jau ICSP nelikshu. tik ja naaksies pie vairaakiem projektiem uz shii MCU straadaat, tad eertiibas labad jaatrod kaads risinaajums. tas chips ir eerts ar to ka iekshaa ACP un USARTs, tas dod iespeeju dazhaadas labas mantinjas uz taa uzbuuveet.
ok ja atradiishu probleemas risinaajumu, tad ieposteeshu. varbuut kaadam citam ar noder.

----------


## next

A ko tur var izdomaat?
Reziiklis jaaliek, ar pietiekami mazu pretestiibu lai netraucee pareizi straadaat adc un pietiekami lielu lai programators to liiniju var pavilkt.
Ja vidusceljsh nav atrodams tad jaaiztiek bez icsp.

PS. Neenu var jau arii kaadu analogo komutatoru tur ielipinaat...

----------


## kaspich

vo, neredzu autora probleemu:
1. prototipa liimenii [liidz optimizeeshanai] izmantojam ieksheejo Ref;
2. no aareja ref R un/vai jumper, no programmatora diode un R [kaa rekomendee Microchip].
ja shaadas nenoziimiigas neertiibas skjiet trauceejoshas, piedaavaajuL

sho chipu nomainit pret kaadu 16C54, dzeest ar ultravioleeto, par ISC aizmirst. tad - peec taa shis liksies debesu daavana..

----------


## Vikings

Es gan neiedziļinājos konkrētā PICa pdfā, bet pieņemu, ka 2V refs iekšējais var arī nebūt. HZ, es izvēlētos drīzāk bootloaderi. Tam gan iesākumā jāvelta vairāk laika, bet pēc tam tas noņem daudzas problēmas ne tikai šim projektam.

----------


## JDat

heh. Vikings ka vienmēr izceļas ar ģeniālām idejām. tik ģeniāli, ka varbūt man jāsāk skatīties arī bootloaderu virzienā reizēm. laba lieta. var noderēt.

ja jau tik tālu...

ir kādi standarti bootloaderu protokolos. piemēram standartizēts pārsūtīšanas protokols, kas der programmu ielādei gan uz avr, gan uz pic? negribas katrā gadījumā kaut ko savu. vienk paņem programmu un nospied SEND vai UPLOAD, bet liekām problēmām un setingiem. pie tam lai strādā gan logos gan uz pingvīna.

----------


## sharps

> Es gan neiedziļinājos konkrētā PICa pdfā, bet pieņemu, ka 2V refs iekšējais var arī nebūt.


 Tur tev taisniiba. Ieksheejais Vref ir 5V.

----------


## kaspich

nu, ja es pareizi saprotu, tad ir 2 izplatiitaajie ref liimenji:
2500mV
4096mV

man pedejais patiik labaak, jo ir tieshi mv/bit. bet, ok, ja izmanto 2500, tad

njemot ieksheejo VDD, sanaak rovno 1 rindinja [ok, 2, ja gribam nodzeest jaunaako bitu] rlf.

nez, ja shaadas ir probleemas, tad kaadas taas buus taalaak..

par bootloaderu..  vareetu siikaak sho ideju? es vnk liidz galam nesapratu..
1. kaa shaada limenja kontrolieriishi ielaadees [neesmu informeets, ka vinji maak];
2. nuu, ja te jau rick un cisk kaads domaa sapaarot, vispaar woooooowwwwww

p.s. autor, ja nu nav slinkums, iemet visu 'obvesa' sheemu, paskatiisim, varbuut veel kas jaapiekorigjee  ::

----------


## sharps

> p.s. autor, ja nu nav slinkums, iemet visu 'obvesa' sheemu, paskatiisim, varbuut veel kas jaapiekorigjee


 man jau saak likties ka pajautaat kaut ko ir sliktais tonis dazham labam cilveekam. taadeelj jau ieprieksh atvainojos par "muljkjiigo" jautaajumu.  :: 
sheemaa tieshaam nekas cits nav jaakorigjee ja liidz tam jau ir nonaacis  :: 

paldies paareejiem par izraadiito interesi.
proveeshu to Vref padot caur rezistoru.

----------


## kaspich

> p.s. autor, ja nu nav slinkums, iemet visu 'obvesa' sheemu, paskatiisim, varbuut veel kas jaapiekorigjee 
> 
> 
>  man jau saak likties ka pajautaat kaut ko ir sliktais tonis dazham labam cilveekam. taadeelj jau ieprieksh atvainojos par "muljkjiigo" jautaajumu. 
> sheemaa tieshaam nekas cits nav jaakorigjee ja liidz tam jau ir nonaacis 
> 
> paldies paareejiem par izraadiito interesi.
> proveeshu to Vref padot caur rezistoru.


 
kaapeec esi tik parliecinaats, ka NAV jaakorigjee?  :: 

nee, jautaajums nebija mulkjiigs, jautaajums liecinaaja par zinaamu.. izlaishanos [ja taa driikst teikt].
respektiivi - mikrokontrolieru programmeeshana ir gana 'nudnijs' [nu, nepatiikams, ja akadas probleemas, darbietilpiigs, u.t.t.] process. taadelj - ja ir probleema paarmest jumper.. nuu, ka tik depresijs neiestajas  ::

----------


## sharps

> kaapeec esi tik parliecinaats, ka NAV jaakorigjee? 
> 
> nee, jautaajums nebija mulkjiigs, jautaajums liecinaaja par zinaamu.. izlaishanos [ja taa driikst teikt].
> respektiivi - mikrokontrolieru programmeeshana ir gana 'nudnijs' [nu, nepatiikams, ja akadas probleemas, darbietilpiigs, u.t.t.] process. taadelj - ja ir probleema paarmest jumper.. nuu, ka tik depresijs neiestajas


 100% paarliecinaats nekad nevar buut, bet paljaushos uz savu intuiiciju. sheeminja ir pietiekami vienkaarsha, lai nekaa tur taada nebutu.  :: 

pie labaam lietaam pierodam aatri.  :: 
probleema jau it kaa nav, bet kaut kaa gribaas uzlabot to darba kvalitaati mazliet. a mazums aizmirstu paarspraust jumperi un tad saac domaat a kaapeec neieprogrammeejaas.  ::  nu meedz buut taa ka uz vienu lietu iecikleejies un nevari atrast izeju. tad nu shis ir tas moments kad ir sanaacis pachakareeties  ::

----------


## kaspich

nu, iemet, iemet to vienkaarsho sheeminju :P

----------


## sharps

> nu, iemet, iemet to vienkaarsho sheeminju :P


 pashlaik gan attureeshos. kad buus gatavs, tad varbuut  iemetishu pie "lietotaaju izstraadaajumiem".

----------


## Vikings

> par bootloaderu..  vareetu siikaak sho ideju? es vnk liidz galam nesapratu..


 OK, atzīstos esmu iebraucis auzās. Tik tagad atvēru pdfu un jau ieraugot 14 izvadu korpusu sapratu, ka šams sevi pāršūt nemācēs. Tā kā - kā jau viss ir izspriests - pāris ārējie elementi un problēma būs atrisināta.
JDat, neviens jau neliedz Tev pašam uzrakstīt savu loaderi, kas vienādi strādā gan uz AVR, gan PIC, gan vēl rindas kontrolieru. Var takš pat paņemt kādu jau gatava loadera protokolu, tik jāpameklē. Biju pat redzējis reiz tādu figņu, ka kontrolieris softiski izliekas par STK500 kitu, bet programmē pats sevi.
Patiesībā jau labu laiku gribu pieķerties šai tēmai, bet tik atlieku...

----------


## next

> par bootloaderu..  vareetu siikaak sho ideju? es vnk liidz galam nesapratu..
> 
> 
>  OK, atzīstos esmu iebraucis auzās. Tik tagad atvēru pdfu un jau ieraugot 14 izvadu korpusu sapratu, ka šams sevi pāršūt nemācēs.


 Kapeec ne, flashrakstiishanas mehaanisms tur ir.

----------


## Vikings

HZ, vispusēji apskatot šo te pdfu atradu vienīgi Flasha programmisku nolasīšanu, bet ne rakstīšanu.

----------


## JDat

Man ir tas gods pamācit pašu kaspich.  :: 

Ir daļa no mikrokontrolieriem kuri paši var savā program flash atmiņā ierakstīt vai nolasīt kodu vai datus.
Ko tas dod?
Ar bootloaderi ir tā: iecep program FLESHā nelielu kodu ar programmatora palīdzību, kurš māk komunicēt pa RS232 (vai SPI vai IIC utt) un...
Palaid kontrolieri... Vairs programmatoru ne maz nevajadzēs.
Tiek izpildīts bootloaderis.
Bootloaderis saņem datus pa RS232 un raksta programmas atmiņā. Ta ka viss ir ierakstīts, MCU tiek restartēts.
Atkal palaižas botloaderis, bet tagad bootlodaeris zina ka FLASH atmiņā ir ierakstīta arī pamatprogramma. Attiecīgi bootloderis uztais Jumb vai Call (utt) uz programmu. Programma griežas un dara to ko liekam.

Vajag pa jaunu pāršut? nospiežam Reset un pa RS232 nosūtam jaunu programmu. Bootloaderis saprot ko jādara. Ieraksta jaunu programmu FLESHaa un viss.
Nav jāāķē ne kādi ICSP uc kabeļi kad grib pāršūt. Pietiek tikai ar RS232 kabeli.
Tas viss teorijā. Praksē ir daudz nianses kuras tev atradīs googles tante un attiecīgi datasheeti. Tā pat kā kāda bootlodera koda izpēte.
Tas viss ir iespējams pateicoties tam ka programma, kas atrodas FLASHā var modificēt to pašu FLASHu kurā pati dzīvo. Iedomājies ka tev ir kaut kāda figņa uzbūvēta, kura komunicē pa seriālo portu ar datoru vai citu figņu. Gribi apgriedot FW savai figņai? Ne kādu problēmu. Pieslēdz pie PC un at attiecīgu programmiņu nosūti jaunu versiju. PAt nevajag taisīt vāku vaļā tavai figņai. Slinkums ir viens no progresa bīdītājiem.  :: 

Bet ne visi PICi atļāuj modificēt programmu FLASHu. Vecais zēns PIC16F84 no neļāuj darīt, tā pat kā autora pieminētais PIC16F688. Sīkāk datasheetos.
AVR laikam bija labāk. MEGA sērija praktiski visi var tādu triku taisīt. Tiny.. Arī jāskatās konkrētajos datasheet.
Tas viss teorijā. Nianses protams jāizmēģina praksē. Ne vienmēr ir jēga izgudrot divriteni, tobiš rakstīt savu bootloaderi. Neta plašumos ir daudz bootloaderu jebkurai gaumei. Tikai nedaudz jāpagooglē.

----------


## JDat

Vikinds atkal runā taisnību. Arī es neatradu info ka PIC16F688 ir self programming fīča. Tas var tikai nolasīt no program FLASH.

----------


## Vikings

> Man ir tas gods pamācit pašu kaspich
> Bla bla bla bootloadera pamati


 Ahahā! Kāpēc man šķiet, ka kāds tūdaļ virtuāli norausies?

----------


## JDat

Pofig. Neba pirmo reizi esmu atrāvies. A veltījums kaspicham ir sekojoša iemesla dēļ:



> par bootloaderu..  vareetu siikaak sho ideju? es vnk liidz galam nesapratu..
> 1. kaa shaada limenja kontrolieriishi ielaadees [neesmu informeets, ka vinji maak];
> 2. nuu, ja te jau rick un cisk kaads domaa sapaarot, vispaar woooooowwwwww

----------


## Vikings

Ēēēēē, mmmm, zinot konkrēto subjektu dzīvē tā vairāk izskatās pēc ķircināšanās  :: .

----------


## JDat

Nu jā. Ķircināt viņam patīk. Es, labu gribēdams, uzrakstīju ko zinu par zābaklādētāju. Ja ne kaspicham, tad varbūt kādam citam noder.

----------


## next

> HZ, vispusēji apskatot šo te pdfu atradu vienīgi Flasha programmisku nolasīšanu, bet ne rakstīšanu.


 A es pat nezinaaju ka taadi arii ir.   ::

----------


## JDat

No vienas puses stulbi ka var tikai lasīt, bet...
tas tomēr ir labāk ne ka nevar pat nolasīt.
Var iekačāt character generat datus FLAShā kopā ar savu kodu un no turienes vilkt āra un rādīt uz LCD vai tml.
Teorētiski...

Man tāds triks iepatikās ar AtTiny2313A un 7 segmentu displeju.

----------


## Vikings

Mjā, man arī pirmā redzēšana. Varētu būt ērti lai glabātu daudz statiskus datus, piemēram, uz LCD izvadāmu tekstu vai kādas funkcijas datus.

----------


## kaspich

nuu, jdat, kas ir bootloader, kaa ar vinju darbojas, es zinu. atvainojos, ka Tevi saruugtinu.
es tikai neredzu, aka to izveikt 16F886, vai kaa vinjsh tur bija  :: 
jaaskata 18/24F vai 30/33 DSP prochi, tie maak.
tas par pirmo sadalju.

par otro:
kaa var vispar domaat par vienotu/vienaadu loaderi tik atskjiriigiem prochiem kaa risc baazetam microchip un cisc peec buutiibas uz vecaa/labaa 51 attiistiitajiem Atmeliem.. tas peec buutiibas ir fail.

ar cienju, K

p.s. jdat, sorre, Tavu garo monologu nelasiiju, bet sha sanjemshos..  ::

----------


## kaspich

ja par eepromiem/flashiem.

tie 16series satur/paredz tikai data, ir rakstaami/lasaami gan no aarpuses, gan iekspuses.
bet, shie dati nav nekaadaa veidaa saistiiti ar izpildaamo kodu. to shiis seerijas kontrolieri nemaak.

----------


## JDat

emm. Viena daļa no PIC16 vispār var...
Piemēram PIC16F87 var gan lasīt gan rakstīt program FLASH memory...
Jārokās pa tabulu, tur ir norādīts kuri var kuri nevar.
http://www.microchip.com/ParamChartS...g=en&pageId=74

----------


## Vikings

Māk, māk arī 16. sērija sevi pārrakstīt. Piemēram 16F877 ar kuru pats bakstījos sen sen atpakaļ.
P.S. Var būt esmu ko svarīgu palaidis garām, bet kāda gan varētu būt problēma izveidot pa vienādu protokolu runājošu bootloaderi dažādām proču arhitektūrām? Tā pat programma glabājas, piemēram, .hex failā, tā pat tā tiek glabāta atmiņā pa adresēm. Svarīgākais jau šajā idejā ir noorganizēt lai kompja softs kaut cik unificēti mācētu upgreidot dažādu ražotāju pročus.

----------


## kaspich

> emm. Viena daļa no PIC16 vispār var...
> Piemēram PIC16F87 var gan lasīt gan rakstīt program FLASH memory...
> Jārokās pa tabulu, tur ir norādīts kuri var kuri nevar.
> http://www.microchip.com/ParamChartS...g=en&pageId=74


 nu, bet Tu paskati [kaut peec peedejiem 4 ciparinjiem] name. 
cilveekam te ir n paaudzu vecaaks apparatus. 
turklaat, puse no tiem self write ir vispaar tikai attiistiibas stadijaa - pat ceeeeena veel nav noteikta..

da nu. es saprotu taa - ja ir normaala int vektoru sisteema, atminja vismaz 2 kopijaam ar kodu, tad ir veerts chammaaties ar loaderu.
un tad pashu bootu arii taisiit nomainaamu..

----------


## JDat

Ja protokols unificēts tad kaut vai ar seriālo termināli upgrade...
Galvenais lai ir unificēts protokols.
Program pointeru litas lai koriģē kompilators.
Protokols tiešām varētu sūtīt zābaklādētājam kaut ko līdzīgu HEX failam. Pārejo lai menedžē MCU un kompilators.

----------


## JDat

> emm. Viena daļa no PIC16 vispār var...
> Piemēram PIC16F87 var gan lasīt gan rakstīt program FLASH memory...
> Jārokās pa tabulu, tur ir norādīts kuri var kuri nevar.
> http://www.microchip.com/ParamChartS...g=en&pageId=74
> 
> 
>  nu, bet Tu paskati [kaut peec peedejiem 4 ciparinjiem] name. 
> cilveekam te ir n paaudzu vecaaks apparatus. 
> turklaat, puse no tiem self write ir vispaar tikai attiistiibas stadijaa - pat ceeeeena veel nav noteikta..
> ...


 hmm, gaumes jautājums. Ne nravitsa ņe ješ...

----------


## kaspich

te gan jaasaprot viena elementtaara lieta - shaads te bootloaders kljuust par vaariigaako vietu softa paarspieshanai.
nu, ja akads veelas, var meegjianat ar 16series kodeetu hex paarsuutit, dekodeet picaa un tad pa lapaam/dalajam paarkodeet..  ::

----------


## next

Vispaar jau programmas ierakstiishana ir fonneimana arhitektuuras priekshrociiba un vaajums.
Ja mcu var rakstiit programmatminju, bet tu to neizmanto tad tik un taa tas verkjis tur ir un var iedarboties no trauceejumiem nelaikaa un sabojaat visu kas labi domaats un taisiits.
Ja tas mehaanisms ir un tiek izmantots, tad arii nav labi - var samaitaat softu taapeec ka pats kaadu kljuudu esi atstaajis.

----------


## JDat

Tās jau ir pusbēda. 

Bootlodaderim jābūt arī muļķudrošam. Lai nav tā ka FW update noraujas pusceļā un tad bez programmatora neiztikt.
Vēl jau ir tā ka paņem produktu X. Gribi nolasīt FW. Ar programmatoru iedzen savu "bootloaderi" un tas eleganti pārsūta firmwari uz PC. Teorētiski...   ::

----------


## kaspich

> Tās jau ir pusbēda. 
> 
> Bootlodaderim jābūt arī muļķudrošam. Lai nav tā ka FW update noraujas pusceļā un tad bez programmatora neiztikt.
> Vēl jau ir tā ka paņem produktu X. Gribi nolasīt FW. Ar programmatoru iedzen savu "bootloaderi" un tas eleganti pārsūta firmwari uz PC. Teorētiski...


 
nu, tasir tas, par ko paaris postus augstaak rakstiiju.
tb,ja var taisiit civilizeeti:

page0=aktiivaa, darbam
1.pic sanjem hex, ieraksta page1
2.paarbauda checksum
tikai tad, ja p1 un p2 ok, paarsleedz vektorus uz p2, ja kaads=fail, kancelee, un turpina straadaat.
ja p1 un p2 ir ok, bet tomeer funkcionalitaate=fail, ir metode [pogu kombinaacijas] fiksajam pag0 aktivizeeshanai.

ar pasha boota paarladi - veel papildus chakars.


tb, mana doma:

ja sho meegjina izveikt taapeec, lai nebuutu spraudnis jaasprauzh = fail. ICD tomeer maak nostopeet, regjistrus nolasiit, turklaat, arii rs var nakties spraudeleet.

ja shis ir paredzeets funkcionalitaates upgrade, tad jaapienjem, ka taa [funkcionalitate] ir gana sarezgjita, un tad njemam nopietnaaku riiku  ::

----------


## JDat

Arī taisnība.

Kā vienmēr: katram uzdevumam savs rīks. Ja izvēlies nepareizo darba rīku tad i jājies vesels. Ar šo gribu teikts: ideja laba, bet satur daudz zemūdens akmeņu. Use at Your own risk. Ja māk uztaisīt lai ir droši, tad labi. Ja dunduks nokačā no neta pusfabrikātu, bez poņas kas un kā strādā. Pēc tam palaiž ražošanā. Tad ir smieklīgi no malas paskatīties kā cilvēks pēc tam jājas ar to sūdu. Epy style.  ::

----------


## M_J

Daudz kas, protams, ir gaumes lieta, bet man personīgi bootloaderis stipri palīdz un paātrina programmas izstrādi. Arī ar to, ka nav tās štepseļu spraudīšanas. Ir arī citi "debugošanas" mehānismi, bet man bootloaderis komlektā ar programmiņu, kurai mikrokontrolieris sūta visu, kas mani tobrīd intresē, patīk vislabāk.

----------

