(09-19-2014, 12:39 AM)sax778 Wrote: @Macola
U potpunosti se slazem da je bolje ici na 18F seriju,16F seriju pa npr. 16F628A sam izabrao iz razloga sto su ovo moji prvi koraci u C.Znaci dovoljno je
CMCON = 7;
pa mi je on OK za dalje sa prostim primerima.
Vidi drugar,
Veličina i dodatni hardverski moduli na nekom PIC nisu uopšte neka bitna stavka oko reda kojim treba učiti programiranje.
Čist primer za to je sledeće:
-za taj tvoj komad 16F628A je tebi dovoljno CMCON = 7;
-za neuporedivo moćniji 40 pinski 18F452 je dovoljno ADCON1 = 0x07; ili u decimalnom formatu ADCON1 = 7; , sve jedno.
-za još moćniji 18F4620, sa 64K fleša, oko 4K SRAM i oko 1K EEPROM je dovoljno samo ADCON1 = 0x0f; i još CMCON = 0x07; i za tvoj početnički nivo ti se upotreba svodi na isto.
U principu ti moraš na početku da postaviš config za bilo koji i on se ne razlikuje posebno preterano za ova tri navedena. Naravno, obimniji je kod ovih moćnjih, ali opet ništa posebno preterano. Nekoliko config reči više.
Nije u tome poenta učenja od početka.
Mlađe generacije su navikle na lepe i lake alate, koji rade tako što imaju gomilu sažvakanih prečica i njima obezbeđuju veliki broj potrebnih stvari, ali ne sve.
Ukucaš na primer neku sažvakanu instrukciju poput "button" ili slično, zavisno čim raspolaže neka biblioteka u pozadini, dobiješ softverski filter tastera i nemaš pojma šta stoji u pozadini toga.
Sve je to lepo dok ti ne zatreba tako nešto na drugačiji način, ili ti to nešto dođe u konflikt sa nečim drugim što ti je potrebno, e onda zaglaviš jer ne možeš "da živiš" bez te nečije gotove biblioteke...
------------------------
Neuporedivo važnije je da se počne od početka.
Valja početniku da makar jedan samo malo ozbiljniji programčić od blink led napiše baš u asembleru, gde će napraviti nekoliko delay, nekoliko skretanja, skokova, petlji...
Potom kad malo nauči da se bori sa tim, onda napiše bar još nekoliko još složenijih upravo u asembleru.
I za to ti je dovoljan MPASM kog imaš u svakom MPLAB
Posle toga se prelazi na viši jezik.
To je pravilan red učenja. Danas svi misle da im asembler nije potreban, a bilo kojim jezikom da pišeš to završava kao asemblerski kod,potom se opet kompajlira u mašinski.
Dovoljno je nešto pristojnije imati iskustva sa asemblerom i onda nalaženje problema u kodu bude lako.
PIC kontroleri su relativno skoro dobili privilegiju pisanja u višim jezicima.
Evo ti primera jedne vrlo složene mašine za plastiku, koji je napisan 2002. godine, što i nije bilo tako davno, a gde se koristi bootloader (ORG 100h), jedan PWM, I2C komunikacija, LCD, tastatura, itd itd...
Pisan je u asembleru i napisao ga je moj briljantni ortak Mladen, a ja posle nekoliko godina uradio reviziju prema nekim novim potrebama korisnika.
Trebalo mi je 6 godina da ni iz čega postanem sposoban da uradim veću reviziju tog koda.
Mladen je bio čika Zokijeva škola (počivši otac Mikijakg), a ja Mladenova škola i ako sam bio skoro dvostruko stariji od njega.
Tada nije bilo tih lepih gotovih stvarčica gde se piše upola linija koda i lako rešavaju neke stvari.
Pisalo se "peške", u asembleru. Držalo se na stotine informacija istovremeno u glavi. Bila potrebna enormna koncentracija i nije postojao debuger.
Programer je bio jedini debuger :-).
F20.txt (Size: 64,37 KB / Downloads: 2)
Samo promeni ekstenziju u .asm da bi ti editor lepo "ofarbao" reči.
Forum nema mogućnost za .asm ekstenziju.
TDA reaguj :-)
Postupni red učenja je doneo svoje prednosti. Ja sam samo priučeni neprofesionalni programer, koji mnogo stvari ne piše po tipičnom programerskom protokolu, ali mi programi rade kao sat i sasvim pristojno su efikasni za jednog neprofesionalca. A čitav vek sam proveo na realnim aplikacijama koje kontrolišu mašine sa velikim snagama, silama, brzinama, i po ljude opasnim hodovima.
I to sve radi na par stotina vrlo zahtevnih mašina.
U čitavoj svojoj nadriprogramerskoj praksi, verovao ili ne,
nisam još ni jedan jedini put uključio debuger. Ne znam čak ni kako se rukuje njim,
a i ne tiče me se! Nema boljeg i sigurnijeg debugera od mene samog.
Ta navika me je naučila da pišem pažljivo sa ekstremnim minimumom grešaka.
Da sve vreme stvari budu pod mojom kontrolom.
Radim kao pipe-line kod procesora: jedan deo mozga piše, drugi se vraća nazad i kontroliše. Posle pola sata ću se setiti da sam nešto pogrešno napisao 1000 linija iznad, vratiti se tamo i ispraviti.
To je sve upravo posledica pisanja u asembleru nekad. Steknu se navike koje povećavaju sigurnost i optimalnost pisanja. Praktično je to model razmišljanja koji je kasnije vrlo zahvalan.
Kad naučiš da voziš raspadnutog "Fiću", posle je sa bilo kojim boljim autom lako...
To je ispravan red učenja.
Sam gabarit MCU nije bitan.
Pozdrav
Još nešto, dok nisam zaboravio.
Čini mi se da si jednom prilikom rekao da si pisao u Basic...
Veruj mi da jezik kojim pišeš nema veze sa programerskim znanjem.
Svaki od tih jezika ili metajezika ima svoja mane i prednosti, nema savršenih.
Evo na primer neke poluautomatske sekvence mašine, napisane u metajeziku Forth (u kome je pokojni Zoki bio car):
Code:
: pauto-seq ( -- )
\ Poluautomatska sekvenca
toff clrerr \ clear error message
imera pp + @ to mera .mera
mera n / to mera/n \ deo mere
\ Ovde se podrazumeva da su zadate mere prvi parametri!
0 spok ! ssil silos !
begin
pauto-wait start? if napuni isprazni else isprazni then
again ;
Izgleda tako jednostavno i ima samo nekoliko linija teksta, a u stvari je čitav program unutra.
Ovo bi se u C moralo napisati sa mnooogo linija koda, međutim, ono što se ne vidi su definicije koje stoje ispred ovog i koje sadrže mnogo linija koda.
Konačni izraz je u Forth jednostavan i kompaktan, ali ukupna količina pisanja je slična.
Neke mogućnosti koje Forth ima su pravi luksuz za C, dok pak C ima neke olakšice za rad i lakši je za reverzno dekodovanje.
Sve je to slično i na kraju završava kao asm...
Pozz