10-22-2014, 03:20 AM
Da. Tako je. U datasheet je to lepo napisano.
Međutim to se radi kada se piše u asm, a za pisanjem u asm stvarno ima potrebe tek za nešto što mora da radi neverovatno brzo ili da stane u malo fleša.
Odnosno, kada se radi strašno velika serija sa superjevtinim PIC, gde se bira najjevtiniji u kog aplikacija još uvek može da stane, ili za specijalizovane potrebe gde je neophodna maksimalna brzina izvršenja.
Kada se radi u višim jezicima, poput Basic, C ili slično, obično je napravljen makro, u vidu jedne reči, koji to automatski odradi.
Ne znam koju verziju Basic za Pic MCU ima MILANNN, jer ih ima podosta, od Swordfish pa do MCSplus?
MILANNN teba da pogleda u uputstvu za svoj Basic kako mu glasi makro za upis i čitanje eeprom, i onda je to sasvim jednostavno za korišćenje.
--------------------------------
Nešto oko tih 16F vs 18F...
Postoji više razloga zašto treba napustiti 16F seriju i preći na 18F seriju.
- manja cena
- veća brzina
- bogatiji hardverskim modulima
- linearno adrresiranje (nema arbitracije dosadnim bankama)
- mnogo više memorije u svakom smislu
- ispravljena gomila prethodnih zaglupa na 16F seriji
Na primer, prilično ozbiljnom 16F877A, kao skoro direktnu zamenu možete upotrebiti 18F452, potom kao njegovu još bolju zamenu na primer 18F4620.
Koliko može biti ozbiljan stari 16F877 dovoljno pokazuju desetine kontrolera sa 128 I/O, sa LCD displejem, tastaturom, SPI i RS232 komunikacijom, oba aktivna PWM multipleksitranih na 8 mogućih izvršnih lokacija, itd...
Takvim napravama sam pokrenuo desetine vrlo složenih mašina za preradu plastičnih masa koje i dan danas rade bez greške, i to je sve vukao jedan jedini 16F877, sa nekoliko in-out ekspandera.
Generalno su razlike sledeće:
- 16F877, 20MHz, 14K fleša, 368 Bytes SRAM, 256 Bytes EEPROM, 8 ADC 10bit, 2 PWM, I2C, SPI, USART, 3 Timers, 2 comparators, 4 dosadne banke u flešu, trenutno košta 6.6$ .
- 18F452, 40MHz, 32K fleša, 1536 Bytes RAM, 256 Bytes EEPROM, 8 ADC 10bit, 2 PWM, I2C, SPI, USART, 4 Timers, no comparators, linearno adresiranje, trenutno košta 6,2$.
- 18F4620, 40MHz, 64K fčeša, 3968 Bytes RAM, 1024 Bytes EEPROM, 13 ADC 10bit, 2 PWM, I2C, SPI, EUSART, 4 Timers, 2 comparators, linearno adresiranje, trenutno košta 5.4$.
---------------------------------
Sam 16F84 je bio svojevremeno pravi "BUM" sa flešom za programsku memoriju.
Umesto EPROM staklenog prozorčeta kao na primer kod PIC16C74, gde se brisalo UV lampom po deset minuta, 16F84 je ponudio elegantnije rukovanje i ako je "zapreminski" siromašan.
Međutim, 16F84 je veoma zastareo i ništa nije bolji za učenje od ovih novijih PIC.
Da bi početničko učenje bilo uspešno, počev od led blink i slično, dovoljno je napraviti ispravnu hardversku konfiguraciju nekog konkretnog PIC, a tu će iskusnii sa foruma pomoći.
Led blink se može vežbati i na mnogo moćnijem na primer 18F4620 umesto na 16F84 ili 16F877, bez osećaja "klaustrofobije", jer na raspolaganju stoji ogroman memorijski prostor i velika brzina, a sve što je napisano za 16F84 će raditi tu, tj. portabilno je, osim bespotrebnog prenošenja softverski rešenih komunikacija, jer postoje hardverski moduli koji to mnogo jednostavnije rade.
Da bi se vežbalo ono iz 16F84 (samo digitalni I/O) a na primer na snažnom 18F4620, dovoljno je osim konfiguracije kloka koja zavisi od alata koje koristite, napisati negde na početku koda samo ovo:
Ako je u Basic:
ADCON1 = $0F ;adc off
CMCON = $07 ;comparators off
Ako je u C:
ADCON1 = 0x0F; /* adc off */
CMCON = 0X07; /* comparators off */
I 18F4620 će postati naprava sa gomilom digitalnih I/O i ogromnom količinom memorije.
Nešto kao džinovski 16F84 koji sad liči na stonogu sa čitava 3 cela osmobitna porta i četvrtim nepotpunim :-).
Višak prostora nikada nije smetao. Jednostavno ga možete upotrebiti ili ne.
Nema ni jednog razloga za korišćenjem malenog oldtajmera 16F84. Čak mu ni cena nije "umiljata", jer košta 3.7$, za koje se može kupiti čak i poneki od 16-to bitnih DSPIC.
Prodaju ga još uvek zato što ne znaju šta će sa zalihama, a ne bi hteli da bace, pri čemu prodaju i palamuđevinu da je najlakši za početnike, samo da bi ga prodali.
Nema tu razlike oko učenja.
Ono što ih razlikuje je konfiguracija hardvera (koja se mora uraditi u nekoj malo manjoj količini i na tom oldtajmeru 16F84) i tu totalni početnik valja da se nekom iskusnijem obrati za prvu pomoć.
Posle vremenom sve bude jasnije i lakše.
Konfiguracija se ne može izbeći, bio to malecki 16F84 neki mnogo veći.
Radi se samo o nekoliko reči teksta više.
---------------------------------------
Inače oko tih jezika nešto iz ličnog iskustva:
Basic "jede" popriličnu količinu fleša, i kada sam ranije pisao neku mašinu u 16F877A, koja koristi 128 In/Out, onda je postajalo tesno, pa sam morao ponekad da sve to ponovo napišem sa nekih 5-6 Kilolinija u asm. Pitanje je koliko je kompiler tada bio optimizovan, ali stvarno nisam želeo da se bakćem sa tim.
C je tu daleko optimalniji, posebno za seriju 18F koja je prilagođenija tom jeziku.
Napravio sam nekada test sa istim prilično masivnim algoritmom u asm i u C, i C je "pojeo" tek 30% više fleša od asm, za razliku od Basic koji je "jeo" skoro dvostruko.
Tada sam napustio Basic i prešao na C (pre možda 10-11 godina).
Možda je sada neki moderniji Basic optimizovan dobro, ali ne bih nešto da se vraćam na to...
Jedan od najmoćnijih programerskih alata koga sam se u nekom periodu dohvatio je metajezik Forth (ne mešajte ga sa Fortran).
Žao mi je što nisam ostao dovoljno uporan u tome i svakodnevno razmišljam da se ponovo vratim na tu esencijalnu moć koju Forth nudi.
Forth "jede" svega 10-tak% fleša više nego asm, i skoro je jednako brz u izvršavanju.
Forth definitivno zaslužuje novu temu da ne gušim ovde, i ko od programera želi apsolutnu kontrolu nad MCU do poslednjeg bita u njemu. i ekstremne mogućnosti, Forth je savršen izbor i ako zahteva totalni preokret u načinu razmišljanja. Zahteva vreme i potpuno posvećivanje na početku, ali posle toga postaje veoma nadmoćan alat (ko ostane dovoljno uporan :-)
Pretpostavljam da mislite da je Forth retko u upotrebi, ali se varate.
U pozadini ispod vaših Windows, Linux, OSX, "tutnji" Forth, koji arbtrira ogromnim delovima najbržeg hardvera na vašim mašinama.
Tu je zbog svojih izuzetnih mogućnosti, i to nije slučajno tako, no o tome ćemo u novoj temi...
-------------------------
Pozz
Međutim to se radi kada se piše u asm, a za pisanjem u asm stvarno ima potrebe tek za nešto što mora da radi neverovatno brzo ili da stane u malo fleša.
Odnosno, kada se radi strašno velika serija sa superjevtinim PIC, gde se bira najjevtiniji u kog aplikacija još uvek može da stane, ili za specijalizovane potrebe gde je neophodna maksimalna brzina izvršenja.
Kada se radi u višim jezicima, poput Basic, C ili slično, obično je napravljen makro, u vidu jedne reči, koji to automatski odradi.
Ne znam koju verziju Basic za Pic MCU ima MILANNN, jer ih ima podosta, od Swordfish pa do MCSplus?
MILANNN teba da pogleda u uputstvu za svoj Basic kako mu glasi makro za upis i čitanje eeprom, i onda je to sasvim jednostavno za korišćenje.
--------------------------------
Nešto oko tih 16F vs 18F...
Postoji više razloga zašto treba napustiti 16F seriju i preći na 18F seriju.
- manja cena
- veća brzina
- bogatiji hardverskim modulima
- linearno adrresiranje (nema arbitracije dosadnim bankama)
- mnogo više memorije u svakom smislu
- ispravljena gomila prethodnih zaglupa na 16F seriji
Na primer, prilično ozbiljnom 16F877A, kao skoro direktnu zamenu možete upotrebiti 18F452, potom kao njegovu još bolju zamenu na primer 18F4620.
Koliko može biti ozbiljan stari 16F877 dovoljno pokazuju desetine kontrolera sa 128 I/O, sa LCD displejem, tastaturom, SPI i RS232 komunikacijom, oba aktivna PWM multipleksitranih na 8 mogućih izvršnih lokacija, itd...
Takvim napravama sam pokrenuo desetine vrlo složenih mašina za preradu plastičnih masa koje i dan danas rade bez greške, i to je sve vukao jedan jedini 16F877, sa nekoliko in-out ekspandera.
Generalno su razlike sledeće:
- 16F877, 20MHz, 14K fleša, 368 Bytes SRAM, 256 Bytes EEPROM, 8 ADC 10bit, 2 PWM, I2C, SPI, USART, 3 Timers, 2 comparators, 4 dosadne banke u flešu, trenutno košta 6.6$ .
- 18F452, 40MHz, 32K fleša, 1536 Bytes RAM, 256 Bytes EEPROM, 8 ADC 10bit, 2 PWM, I2C, SPI, USART, 4 Timers, no comparators, linearno adresiranje, trenutno košta 6,2$.
- 18F4620, 40MHz, 64K fčeša, 3968 Bytes RAM, 1024 Bytes EEPROM, 13 ADC 10bit, 2 PWM, I2C, SPI, EUSART, 4 Timers, 2 comparators, linearno adresiranje, trenutno košta 5.4$.
---------------------------------
Sam 16F84 je bio svojevremeno pravi "BUM" sa flešom za programsku memoriju.
Umesto EPROM staklenog prozorčeta kao na primer kod PIC16C74, gde se brisalo UV lampom po deset minuta, 16F84 je ponudio elegantnije rukovanje i ako je "zapreminski" siromašan.
Međutim, 16F84 je veoma zastareo i ništa nije bolji za učenje od ovih novijih PIC.
Da bi početničko učenje bilo uspešno, počev od led blink i slično, dovoljno je napraviti ispravnu hardversku konfiguraciju nekog konkretnog PIC, a tu će iskusnii sa foruma pomoći.
Led blink se može vežbati i na mnogo moćnijem na primer 18F4620 umesto na 16F84 ili 16F877, bez osećaja "klaustrofobije", jer na raspolaganju stoji ogroman memorijski prostor i velika brzina, a sve što je napisano za 16F84 će raditi tu, tj. portabilno je, osim bespotrebnog prenošenja softverski rešenih komunikacija, jer postoje hardverski moduli koji to mnogo jednostavnije rade.
Da bi se vežbalo ono iz 16F84 (samo digitalni I/O) a na primer na snažnom 18F4620, dovoljno je osim konfiguracije kloka koja zavisi od alata koje koristite, napisati negde na početku koda samo ovo:
Ako je u Basic:
ADCON1 = $0F ;adc off
CMCON = $07 ;comparators off
Ako je u C:
ADCON1 = 0x0F; /* adc off */
CMCON = 0X07; /* comparators off */
I 18F4620 će postati naprava sa gomilom digitalnih I/O i ogromnom količinom memorije.
Nešto kao džinovski 16F84 koji sad liči na stonogu sa čitava 3 cela osmobitna porta i četvrtim nepotpunim :-).
Višak prostora nikada nije smetao. Jednostavno ga možete upotrebiti ili ne.
Nema ni jednog razloga za korišćenjem malenog oldtajmera 16F84. Čak mu ni cena nije "umiljata", jer košta 3.7$, za koje se može kupiti čak i poneki od 16-to bitnih DSPIC.
Prodaju ga još uvek zato što ne znaju šta će sa zalihama, a ne bi hteli da bace, pri čemu prodaju i palamuđevinu da je najlakši za početnike, samo da bi ga prodali.
Nema tu razlike oko učenja.
Ono što ih razlikuje je konfiguracija hardvera (koja se mora uraditi u nekoj malo manjoj količini i na tom oldtajmeru 16F84) i tu totalni početnik valja da se nekom iskusnijem obrati za prvu pomoć.
Posle vremenom sve bude jasnije i lakše.
Konfiguracija se ne može izbeći, bio to malecki 16F84 neki mnogo veći.
Radi se samo o nekoliko reči teksta više.
---------------------------------------
Inače oko tih jezika nešto iz ličnog iskustva:
Basic "jede" popriličnu količinu fleša, i kada sam ranije pisao neku mašinu u 16F877A, koja koristi 128 In/Out, onda je postajalo tesno, pa sam morao ponekad da sve to ponovo napišem sa nekih 5-6 Kilolinija u asm. Pitanje je koliko je kompiler tada bio optimizovan, ali stvarno nisam želeo da se bakćem sa tim.
C je tu daleko optimalniji, posebno za seriju 18F koja je prilagođenija tom jeziku.
Napravio sam nekada test sa istim prilično masivnim algoritmom u asm i u C, i C je "pojeo" tek 30% više fleša od asm, za razliku od Basic koji je "jeo" skoro dvostruko.
Tada sam napustio Basic i prešao na C (pre možda 10-11 godina).
Možda je sada neki moderniji Basic optimizovan dobro, ali ne bih nešto da se vraćam na to...
Jedan od najmoćnijih programerskih alata koga sam se u nekom periodu dohvatio je metajezik Forth (ne mešajte ga sa Fortran).
Žao mi je što nisam ostao dovoljno uporan u tome i svakodnevno razmišljam da se ponovo vratim na tu esencijalnu moć koju Forth nudi.
Forth "jede" svega 10-tak% fleša više nego asm, i skoro je jednako brz u izvršavanju.
Forth definitivno zaslužuje novu temu da ne gušim ovde, i ko od programera želi apsolutnu kontrolu nad MCU do poslednjeg bita u njemu. i ekstremne mogućnosti, Forth je savršen izbor i ako zahteva totalni preokret u načinu razmišljanja. Zahteva vreme i potpuno posvećivanje na početku, ali posle toga postaje veoma nadmoćan alat (ko ostane dovoljno uporan :-)
Pretpostavljam da mislite da je Forth retko u upotrebi, ali se varate.
U pozadini ispod vaših Windows, Linux, OSX, "tutnji" Forth, koji arbtrira ogromnim delovima najbržeg hardvera na vašim mašinama.
Tu je zbog svojih izuzetnih mogućnosti, i to nije slučajno tako, no o tome ćemo u novoj temi...
-------------------------
Pozz