Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mikrokontroleri od A do Sh

[es] :: Elektronika :: Mikrokontroleri :: mikrokontroleri od A do Sh
(TOP topic, by veselinovic)
Strane: < .. 1 2 3 4 5 6 7 8

[ Pregleda: 64862 | Odgovora: 150 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh28.01.2008. u 14:47 - pre 150 meseci
Aj da i ja bacim neku u vezi upotrebe kontrolera, kompajlera i njihove efikasnost. Kao prvo, svako ko iole ima nameru da se ozbiljno bavi ovom rabotom i ne zna za koji kontroler da se odluči, neka izabere onaj za koji misli da mu se najviše sviđa. Ovo kažem iz više razloga, bilo koji je bolji nego ni jedan, isto kao i bicikl, kada naučite da terate mali lako možete preći na višebrzinski ili onaj sa štanglom (zavisi opet od dužine nogu).
Moja priča počinje 85-86 i zx spektruma, naravno u upotrebi je bio basic a asembler je bio samo za "izabrane". Prve programe sam pisao u bejziku ali ni blizu nisu bili brzi kao tamo neke "fabričke" igrice. U međuvremenu su neki časopisi počeli objavljivati listinge pisane u asm-u. Tada je na scenu stupio "Z80 tools" i moji prvi koraci u pisanju (prekucavanju) polu-razumljivog koda. Nije bilo interneta, pdf-a i raznih tutorijala. I taman kada sam počeo da kontam komande, pređem na Amigu1200 (motorola 68hc020 32bit) i program "max asembler" na nemačkom?! Naravno, dižem ruke od asm. programiranja (izvini Korak) :).
Sad se vi pitate čemu sve ovo gore pišem, a odgovor je jednostavan: nemam pojma!

Da ne bude da sam džabe krečio uradio sam jednostavan test nekih kompajlera, svi su komercijalni osim jednog. U pitanju je AVR familija kontrolera a programi (kompajleri) su: BascomAVR (bejzik), FastAVR (bejzik), CodeVisio (C) i WinAVR (C). Ovaj zadnji je gcc što će reći besplatan. Test program je jednostavan, for (next) petlja 0 do 255, vrednost se šalje na neki port a u okviru petlje sabiranje dve 16-bitne varijable. Rezultati su sledeći:

FastAvr: 390 byte, trajanje jednog ciklusa 5uS
Bascom: 770 byte, --------------------- 9uS
CodeVisin: 940 byte, ------------------- 5.2uS
WinAvr: 533 byte, -------------------- 1.5uS

Test kontroler mega16 na 8MHz.

Asembler nisam uvrstio u konkurenciju jer bi zbog autorove optimizacije i jednostavnosti programa bio "nedodirljiv" u oba pogleda (duzina hex koda i brzine).
Upotreba makroa u asembleru drastično smanjuje vreme pisanja programa i uz to poboljšava čitljivost istog. Svakome preporučujem da proba napisati asm program za omiljeni kontroler, mnogo toga se može naučiti o samom hardveru kontrolera.
Sa druge strane C je veoma rasprostranjen što ne mora značiti da je najbolji (VHS je pobedio BETA sistem bez obzira što je ovaj drugi bolji) a asembler i dalje ostaje privilegija "underground raje".


__*__
*___*
 
Odgovor na temu

branko_g
Merna tehnika i elektronika

Član broj: 159227
Poruke: 756
*.static-fiber.styrion.net.



+9 Profil

icon Re: mikrokontroleri od A do Sh28.01.2008. u 15:32 - pre 150 meseci
Citat:

WinAvr: 533 byte, -------------------- 1.5uS


To nešto sumljam da je moguće, petlja od 0 do 255, vrednost šalje na port i još nešto sabira?
To je nemoguće.
Mora da je kompajler nešto "optimirao"
Jesi li pogledao .asm listing?
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh28.01.2008. u 20:01 - pre 150 meseci
Merenje se odnosi samo na jedan prolaz kroz petlju ili promenu na najnizem pinu. Nije bitno vreme kao vreme vec odnos medju kompajlerima.
__*__
*___*
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh28.01.2008. u 20:40 - pre 150 meseci
_str_

Volim konkretne podatke.

Isto sam uradio sa CodeWarrior za MC9S08 i dobio sam:

potroseno 38 bajta flash-a;
vreme jednog prolaza 2.25us

Pozdrav
 
Odgovor na temu

sander
Aleksandar Golovic
Beograd

Član broj: 21336
Poruke: 211
*.adsl-a-1.sezampro.yu.



Profil

icon Re: mikrokontroleri od A do Sh31.01.2008. u 01:06 - pre 150 meseci
Interesantno, rekoh ajd da probam sa PIC-om i CCS C kompajlerom, rezlutati isti kao kod Korak-a: 38byta flash-a, 2,25us prolaz za 8Mhz ins. clock, cudno da AVR potrosi najmanje 390 byta. Ali ako se vratimo na rezultate koje je dobio _str_ ispada da je WinAVR najbolje resenje za programiranje AVR familije mikrokontrolera, a da li je tako? Da li se ocena nekog kompajlera moze svesti samo na test neke petlje ili prava snaga dolazi do izrazaja kod optimizovanih biblioteka za rad sa periferijama, spoljnim svetom .... na kraju krajeva i sa pouzdanoscu dobijenog koda (proizvoda kompajliranja). Mozda bi ovo uporedjenje moglo da sugerise da je C bolja varijanta od BASIC-a, posto se program u C-u brze izvrsava. To nije sprecilo niti ce spreciti ljude da programiraju kontrolere u svojim projektima recimo u Bascom-u ili PIC Basic-u niti znaci da ti uredjaji rade losije od slicnih uradjenih u drugim programskim jezicima. Ono sto je najvaznije u svemu ovome je da se poznaje mikrokontroler (hardware) sa kojim se radi kako bi svestan svih vrlina i mana mogao da odradis postavljeni zadatak a orudje kojim to postizes moze ali i ne mora da bude odlucujuce. Takoje, neko je pomenuo da zavisi i od afiniteta koji cemo programsi jezik koristiti, tu se nadovezuje cuvena programerska dilema oko potrebe koriscenja GOTO instrukcije, ima je i u C-u ali se retko ili gotovo nikada ne koristi. Mozda i zavisi, afiniteti mogu doci kasnije, ali mi se cini da je stepenica zvana "asembler" nezaobilazna.
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh31.01.2008. u 10:34 - pre 150 meseci
Samo da primetim: AVR ubedljivo najvise trosi bajtove flash-a za iste softverske probleme u odnosu na druge MCU-ove.

Pozdrav.
 
Odgovor na temu

branko_g
Merna tehnika i elektronika

Član broj: 159227
Poruke: 756
*.static-fiber.styrion.net.



+9 Profil

icon Re: mikrokontroleri od A do Sh31.01.2008. u 13:50 - pre 150 meseci
Citat:
Samo da primetim: AVR ubedljivo najvise trosi bajtove flash-a za iste softverske probleme u odnosu na druge MCU-ove.


To je paušalna ocena, zavisi od kompajlera i Start-Up koda koji on proizvede.
Napravio sam sledeći minimalni program:
Code:

#include "test.h"

int main(void)
{
    while(1)
    {
    }
return (1);
}


Procesor je ATmega8, kompajler GCC(WinAVR), optimizacija 1.
Generisani kod je dugačak 102 bajta.
Startup kod postavlja interrupt vektorsku tabelu, inicijalizuje Stack, briše deo memorije...
Uostalom pogledal asm listing:
Code:

Disassembly of section .text:

00000000 <__vectors>:
   0:    12 c0           rjmp    .+36         ; 0x26 <__ctors_end>
   2:    2b c0           rjmp    .+86         ; 0x5a <__bad_interrupt>
   4:    2a c0           rjmp    .+84         ; 0x5a <__bad_interrupt>
   6:    29 c0           rjmp    .+82         ; 0x5a <__bad_interrupt>
   8:    28 c0           rjmp    .+80         ; 0x5a <__bad_interrupt>
   a:    27 c0           rjmp    .+78         ; 0x5a <__bad_interrupt>
   c:    26 c0           rjmp    .+76         ; 0x5a <__bad_interrupt>
   e:    25 c0           rjmp    .+74         ; 0x5a <__bad_interrupt>
  10:    24 c0           rjmp    .+72         ; 0x5a <__bad_interrupt>
  12:    23 c0           rjmp    .+70         ; 0x5a <__bad_interrupt>
  14:    22 c0           rjmp    .+68         ; 0x5a <__bad_interrupt>
  16:    21 c0           rjmp    .+66         ; 0x5a <__bad_interrupt>
  18:    20 c0           rjmp    .+64         ; 0x5a <__bad_interrupt>
  1a:    1f c0           rjmp    .+62         ; 0x5a <__bad_interrupt>
  1c:    1e c0           rjmp    .+60         ; 0x5a <__bad_interrupt>
  1e:    1d c0           rjmp    .+58         ; 0x5a <__bad_interrupt>
  20:    1c c0           rjmp    .+56         ; 0x5a <__bad_interrupt>
  22:    1b c0           rjmp    .+54         ; 0x5a <__bad_interrupt>
  24:    1a c0           rjmp    .+52         ; 0x5a <__bad_interrupt>

00000026 <__ctors_end>:
  26:    11 24           eor    r1, r1
  28:    1f be           out    0x3f, r1    ; 63
  2a:    cf e5           ldi    r28, 0x5F    ; 95
  2c:    d4 e0           ldi    r29, 0x04    ; 4
  2e:    de bf           out    0x3e, r29    ; 62
  30:    cd bf           out    0x3d, r28    ; 61

00000032 <__do_copy_data>:
  32:    10 e0           ldi    r17, 0x00    ; 0
  34:    a0 e6           ldi    r26, 0x60    ; 96
  36:    b0 e0           ldi    r27, 0x00    ; 0
  38:    e6 e6           ldi    r30, 0x66    ; 102
  3a:    f0 e0           ldi    r31, 0x00    ; 0
  3c:    02 c0           rjmp    .+4          ; 0x42 <.do_copy_data_start>

0000003e <.do_copy_data_loop>:
  3e:    05 90           lpm    r0, Z+
  40:    0d 92           st    X+, r0

00000042 <.do_copy_data_start>:
  42:    a0 36           cpi    r26, 0x60    ; 96
  44:    b1 07           cpc    r27, r17
  46:    d9 f7           brne    .-10         ; 0x3e <.do_copy_data_loop>

00000048 <__do_clear_bss>:
  48:    10 e0           ldi    r17, 0x00    ; 0
  4a:    a0 e6           ldi    r26, 0x60    ; 96
  4c:    b0 e0           ldi    r27, 0x00    ; 0
  4e:    01 c0           rjmp    .+2          ; 0x52 <.do_clear_bss_start>

00000050 <.do_clear_bss_loop>:
  50:    1d 92           st    X+, r1

00000052 <.do_clear_bss_start>:
  52:    a0 36           cpi    r26, 0x60    ; 96
  54:    b1 07           cpc    r27, r17
  56:    e1 f7           brne    .-8          ; 0x50 <.do_clear_bss_loop>
  58:    01 c0           rjmp    .+2          ; 0x5c <main>

0000005a <__bad_interrupt>:
  5a:    d2 cf           rjmp    .-92         ; 0x0 <__vectors>

0000005c <main>:
#include "test.h"

int main(void)
{
  5c:    cf e5           ldi    r28, 0x5F    ; 95
  5e:    d4 e0           ldi    r29, 0x04    ; 4
  60:    de bf           out    0x3e, r29    ; 62
  62:    cd bf           out    0x3d, r28    ; 61
    while(1)
  64:    ff cf           rjmp    .-2          ; 0x64 <main+0x8>
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh31.01.2008. u 15:07 - pre 150 meseci
Gore sam naveo duzinu generisanog hex koda a ne zauzeće flash-a koje je naravno manje.

(jedna ispravka od ranije, nije 68HC020 nego 68EC020)





[Ovu poruku je menjao _str_ dana 31.01.2008. u 17:04 GMT+1]
__*__
*___*
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh31.01.2008. u 16:38 - pre 150 meseci

Za duzinu generisanog koda (ako je C u pitanju) ne racunajte generisani startup kod.

Da AVR generise vise bajtova koda od ostalih 8-bitnih MCU-ova nije pausalna ocena vec dokaziva istina. Samo u jednom slucaju je on najefikasniji MCU: a to je za male programe koji imaju malo varijabli koje mogu sve da stanu u njegove registre. Cak i da se pisa program u asembleru utrosak programske memorije ce biti osetno veci. Primer: uvecaj zaq 1 proizvoljnu memorijsku lokaciju. PIC, 8051 i MC908 to rade jednom naredbom uz utrosak 2 ili 4 bajta najvise. AVR-u treba 4 bajta da unese podatak u registar, 2 bajta da inkrementira vrednost podatka i 4 bajta da je vrati u memorijsku lokaciju, to je ukupno 10 bajtova. Mozemo dokazivati isto i na drugim primerima, i isto ce biti jer direktan pristup proizvoljnoj adresi trosi 4 bajta. No i pored toga mislim da je AVR bolji od PIC-a zbog drugih dobrih osobina.

Pozdrav.

 
Odgovor na temu

sander
Aleksandar Golovic
Beograd

Član broj: 21336
Poruke: 211
*.smin-1.sezampro.yu.



Profil

icon Re: mikrokontroleri od A do Sh01.02.2008. u 19:13 - pre 150 meseci
Citat:
korak: Za duzinu generisanog koda (ako je C u pitanju) ne racunajte generisani startup kod.


E onda moj kod sa PIC-om i CCS C kompajlerom za nekih 10b kraci.
Ovo sa AVR-om mi se nedopada. Ako je uvek potrebno da se generise 100b sta bi mi ostalo za program za mcu slican 6-pinskom PIC10F200 sa 0,375Kb flasha i 16b RAM-a.

Za Korak-a:

Ako ti nije problem opisi u par reci zasto mislis da je AVR bolji, vidim da si radio i sa PIC-ovima pa bih voleo da cujem tvoje misljenje.
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh01.02.2008. u 23:30 - pre 150 meseci
Uopste nije tacno da je AVR-u potrebno 100 bajtova inicjalizacije. Prvih 3-20 bajtova (zavisi od velicine kontrolera) otpada na interapt vektore i jos nekoliko (~10 ) za deklaraciju steka. Za neku mini varijantu sabrati 3 i 10.
Jedina stvar kod AVR-a koja mi malo smeta, a Korak je dobro primetio, jeste nemogucnost direktne manipulacije varijablama smestenih u SRAM. Na srecu to je ublazeno kratkim vremenom izvrsavanja komandi uz nesto povecanu potrosnju flash-a, a na raspologanju stoje 32 registra opste namene i ~130 efikasnih komandi.
A sto se tice glupog primera koji sam gore naveo pisan u asm-u bi mogao biti dug 15 bajtova sa vremenom prolaska kroz petlju 750nS @8MHz.
Imali neko brzi :)
__*__
*___*
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh02.02.2008. u 14:17 - pre 149 meseci
Kada kazem bolji, ne mislim mnogo bolji.

1. AVR moze da stavlja varijable na stek, i stek mu je ogranicen samo velicinom RAM-a. PIC to ne moze.
2. AVR ima dvoadresne naredbe kada manipulise podacima koji su u registrima. To znaci da jednom naredbom moze da nekom registru, naprimer, doda sadrzaj drugog registra.
3. AVR ima kontinualan pristup RAM memoriji bez stranicenja. Doduse, za to trosi 4 bajta koda.
4. Tajmerska jedinica mu je bolja.

AVR ima i neke mane koje nema PIC. A takodje PIC ima neka bolja resenja od AVR-a. Trebalo bi mnogo vise pisati da bi se sve objasnilo.

Medjutim, ako se programira na C-u, kompajler vodi racuna da PIC bez obzira na nedostatke vezane za stek i stranicenje memorije generise kod tako da programer ne oseca ove nedostatke. Rezultata ce biti malo veca potrosnja RAM-a, ali zato manja potrosnja flash-a.

Ipak se sve ocene vrte u okviru ukusa i navika programera.
 
Odgovor na temu

sander
Aleksandar Golovic
Beograd

Član broj: 21336
Poruke: 211
*.smin-1.sezampro.yu.



Profil

icon Re: mikrokontroleri od A do Sh02.02.2008. u 15:06 - pre 149 meseci
1. Moze i PIC18F serija sa instrukcijama PUSH i POP. Stek je velik 32 bajta stim da je omogucena implementacija software-skog steka koji je ogranicen velicinom RAM-a.
2. Ako je puko kopiranje sadrzaja postoji instrukcija MOVFF kojom je moguce sadrzaj bilo koje lokacije dodeliti bilo kojoj drugoj lokaciji u RAM-u (12bit adresa, 4Kb RAM) bez selekcije bilo kakve memoriske banke, ako je neka racunska operacija u pitanju onda mora preko W (working) registra.
3. Kod 18F serije RAM-u se pristupa ili preko acces ram-a ili kroz banke (zbog kompatibilnosti sa 16F serijom). E sad, to je u necemu prednost (manje zauzetog flash-a) a negde nije, ako je potrebno raditi sa vecom kolicinom RAM-a.
4. Kod 18Fserije postoje 5 tajmer modula koja mogu raditi samostalno ili uz neku od periferija, sta je to sto ti deluje bolje kod AVR-a?

Ono sto je interesantno je da je microchip poboljsavao mnogo stosta iz predhodnih serija a zadrzavao kompatibilnost, recimo kod koji je pisan za recimo 16F877 prebacen na 18F seriju promenjen izbacivanjem BANKSELECT macroa u asembleru. Inace pojavile su se novije verzije kontrolera PIC18 povecane brzine 16Mips-a.
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh02.02.2008. u 18:08 - pre 149 meseci
sander,

Ocenjujem da su nijanse u pitanju:

1. Ali stek od 32 bajta je skoro neupotrebljiv za podatke. Ja uvek rezervisem za stek 100 bajtova. Softverski stek je OK, ali on moze na svakom MCU da se implementira (gde mora) nije automatski i mora da se opsluzuje.

2. Nisam mislio na MOV vec na aritmeticke i logicke operacije.

3. Vazi samo za mov (4 bajta), pa ako mislis da tako mozes da postavis podatak u zeljenu stranicu, potrosices 16 bajta za long podatak (4-o bajtni)

4. Da, ima nekoliko tajmera, razlicitih konfiguracija koji se mogu koristiti u razlicitim modovima. Ja radim za Motorolom i tamo su tajmeri najbolje reseni: MC908 ima po pravilu 8 i vise (zavisno od pakovanja naravno) istih tajmerskih kanala podeljenih u dve tajmerseke jedinice. Svako kanal moze biti input capture, output compare ili PWM sa centralnom modulacijom ili on/off fiksne frekvencije. Slicna je i tajmerska jedinica AVR-a. Ali ovo ne mora da bude presudno u aplikacijama u kojima se ne koristi mnogo tajmera.

To sto microchip stalno poboljsava svoje MCU-ove govori da su predhodni imali neke mane u odnosu na konkurenciju, ko zna, mozda ce posle 18Fxx doci 20Fxx 8-o bitni MCU.

Da se uozbiljim: mane koje ja vidim stvaraju probleme prilikom asemblerskog programiranja (mora da se vodi racuna o mnogim stvarima), ali ako se radi sa C-om onda problemi prividno nestaju, sa njima se bori kompajler.

Inace i AVR ima mana:
1. Vec sam napisao da je skupo proizvoljano direktno pristupanje memoriji: 4 bajta koda;
2. Ne postoji potpuni skup naredbi za uslovno granjanje;
3. Indirektno indeksno adresiranje samo sa ofsetom do 63;
4. Sve registarske naredbe nisu primenjljive na sve registre i t. d.

Pozdrav
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh02.02.2008. u 20:27 - pre 149 meseci
Evo i primera pisanog za at90s1200, najmanjeg predstavnika avr familije i mnogo toga moze stati na 1K flash-a. Ko ima proteus moze raspakovati i zip.

Code:

.include "1200def.inc"




.cseg
.org 0


    rjmp    reset
    reti
    reti
    reti
    
reset:
    ldi    r16,255
    out    DDRB,r16
petlja:
    out    PORTB,r16
    inc    r16
    add    r7,r17
    adc    r8,r18
    rjmp    petlja

__*__
*___*
Prikačeni fajlovi
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh03.02.2008. u 11:51 - pre 149 meseci

_str_

Ja sam napisao: ako su sve varijable AVR-a u njegovim registrima, onda je on sampion medju MCU-ovima. Ti si bas taj primer naveo, takav program ne postoji u praksi. Napisi primer tako da su umesto r7:r8 i r17:r18 varijable u memoriji na proizvoljnim lokacijama, pa da vidimo. Takav je slucaj u realnom programu.

Pozdrav.
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh03.02.2008. u 20:13 - pre 149 meseci
Siguran sam da ovakvi programi postoje i da rade u praksi jer primer je pisan za kontroler koji ne poseduje SRAM. A kod ovih drugih stvari stoje drugacije. Za sabiranje varijabli smestenih u sram, potrebno je 14 taktova i tada primer od ranije ima vreme 2.25uS, prilicno ujednaceno?!

[Ovu poruku je menjao _str_ dana 03.02.2008. u 23:39 GMT+1]
__*__
*___*
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 562
*.dynamic.sbb.co.yu.



+6 Profil

icon Re: mikrokontroleri od A do Sh04.02.2008. u 12:44 - pre 149 meseci
Ako hoces da cepidlacis, OK,

Primer ne postoji u praksi jer ko bi vrteo beskonacnu petlju u kojoj se nesto izracunava i ne moze da se koristi van nje (osim interrupt-a ali sumnjam da si na to mislio).

Primer rada sa registrima mora ispred da sadrzi punjenje tih registara, jer po resetu imaju neodredjenu vrednost ili 0 (ne znam), a takodje i vracanje rezultata u memoriju. Slucaj aplikacije kojoj su dovoljna samo 32 bajta nisam nikada radio i, osim prilikom nekih proba, ali to nikada nisu bili pravi programi.

Napisi ti pravi kompletan primer pa da vidimo onda situaciju. Sto ne uzmes algoritam za sortiranje?

Pozdrav.
 
Odgovor na temu

sander
Aleksandar Golovic
Beograd

Član broj: 21336
Poruke: 211
*.smin-1.sezampro.yu.



Profil

icon Re: mikrokontroleri od A do Sh05.02.2008. u 12:45 - pre 149 meseci
Malo sam pogledao instrukciski set kod AVR-a i ono sto mi se cini na prvi pogled je da kao sto Korak kaze da ako su varijable u registrima racunske operacije radi brzo, verovatno najbrze od svih 8bit mcu na trzistu ali kao sto Korak rece nije verovatno da u programu imas samo toliko varijabli. Kod 8bitne matematike je razlika mala, dok kod operacija sa 16 ili 32bitnim varijablama zna da bude prilicna. U varijanti sa vise varijabli (zauzimaju vise od 32 byte) koja je najrealnija usporava drasticno u odnosu na mali broj varijabli koje se sve mogu smestiti u registre (kao i povecanje potrosnje flash-a za to). Kod PIC mikrokontrolera je filozovija drugcija, postoji 1 Wreg (working registar) i SFR (namenski registri) i GPR (registri opste namene) sa kojima su moguce racunske operacije sa Wreg. SFR i GPR registri su podeljeni u memoriske banke od po 256byte stim sto kod 18F serije bez preklapanja banaka moguce je pristupati svim SFR registrima i 96 + 256 byte GPR registrima sto je prilicno upotrebljivije za podatke od AVR-ovih 32. U tom slucaju PIC ce brze odraditi racunske operacije od AVR-a kao i kod pristupa RAM-u i varijablama u istoj memoriskoj banci. Prednost AVR-a bi ponovo dosla kod varijabli pozicioniranih u razlicitim bankama sto je u principu malo verovatno. Kod PIC-a instrukcija za mnozenje se izvrsava u jednom taktu dok AVR-a u 2. Kod instrukcija za granjanje PIC je u prednosti sto su dokazali i testovi pomenuti u ovom topiku. Saberi oduzmi opet mu to dodje manje vise na isto, stim ako je potrebna neka veca brzina racunanja i sa vecom kolicinom 16-bitnih ili 32-bitnih varijabli bio bih mazohista da to radim sa 8-bitnom 18F serijom kod cak i jeftinije alternative 24F, 24H, dsPIC30 i dsPIC33. Koja je alternativa za AVR, da li postoje 16-bit i dsp AVR kontroleri? Nemojte samo da mi pomenete 32-bit AVR koji se moze videti samo nacrtan i sa preliminarnim podacima.

A sto se tice toga da su prethodne serije imale manu, naravno da su imale ali to tada bilo sasvim OK. Tada nije bilo kontrolera sa USB ili Ethernet periferijama recimo tako da je kolicina rama zadovoljavala tadasnje potrebe. Microchip je razvio novo jezgro koje je tada bilo konkurentno sa tadasnjim intelom i motorolom, atmel je koristio intelovo jezgro za svoje kontrolere (kao i mnogi drugi) tako da je imao vremena da razvije jezgro prilagodjeno novim zahtevima. Lako je suditi sa danasnjeg stanovista kako su neke stvari bile ogranicene tada. Primera radi pic16f serija ima 35 instrukcija, pic18F 75 dok AVR ima 130. Mislim da je Microchip namerno prestao sa ozbiljnijom nadogradnjom 8-bitnih kontrolera i napravio prelaz ka 16-bitnim a sada i ka 32-bitnim jer se 8-bitni i dale dovoljno dobro drze sa konkurencijom.

[Ovu poruku je menjao sander dana 05.02.2008. u 18:11 GMT+1]
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: mikrokontroleri od A do Sh05.02.2008. u 22:11 - pre 149 meseci
Citat:
korak: Ako hoces da cepidlacis, OK,

Primer ne postoji u praksi jer ko bi vrteo beskonacnu petlju u kojoj se nesto izracunava i ne moze da se koristi van nje (osim interrupt-a ali sumnjam da si na to mislio).

Primer rada sa registrima mora ispred da sadrzi punjenje tih registara, jer po resetu imaju neodredjenu vrednost ili 0 (ne znam), a takodje i vracanje rezultata u memoriju. Slucaj aplikacije kojoj su dovoljna samo 32 bajta nisam nikada radio i, osim prilikom nekih proba, ali to nikada nisu bili pravi programi.

Napisi ti pravi kompletan primer pa da vidimo onda situaciju. Sto ne uzmes algoritam za sortiranje?

Pozdrav.


Bice da si stekao krivi dojam.
__*__
*___*
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: mikrokontroleri od A do Sh
(TOP topic, by veselinovic)
Strane: < .. 1 2 3 4 5 6 7 8

[ Pregleda: 64862 | Odgovora: 150 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.