Komšijin mali treba da nađe ne najbržeg već tipičnog predstavnika familije u pogledu brzine jer ATMEL možda sutra izbaci ATMegaxx na 200MHz. Za PIC18 seriju to je neki mcu sa 40Mhz clock-om (PIC18F4520npr.). Inače se PIC18 maksimalno serija vrti na 64MHz (PIC18F23K20 recimo). Kod AVR je to 16MHz i ATMega16. Mislim da su ATMega16 i PIC18F4520 po svim pitanjima dva porediva kontrolera ovih proizvođača. Testovi koje Odin predlaže su OK i treba ih pisati u asembleru da bi poređenje imalo svrhu. Način na koji neki C kompajler optimizuje kod za jednu ili drugu vrstu kontrolera moze napraviti značajnu razliku i zašto te dileme ne eliminisati odmah u startu izborom asemblera.
AVR je u prednosti jer ima 32 registra opšte namene a naredbe nad promenljivima smeštenim u te registre se izvršavaju u jednom instrukcionom ciklusu. Pogedajte npr:
ADD Rd,Rr ili AND RD,Rr
Registri R26 do R31 se koriste kod indirektnog adresiranja (pointeri - to beše C!?) i još jedna su prednost AVR. Pogledajte sledeći primer preuzet sa:
http://www.myplace.nu/avr/minidds/minidds.asm
ldi r29,0x00 ; clear accumulator
ldi r28,0x00 ; clear accumulator
; setup adder registers
ldi r24,0x55 ; setup adder value
ldi r25,0x35 ; to 1 kHz
ldi r26,0x00 ;
; main loop
;
; r28,r29,r30 is the phase accumulator
; r24,r25,r26 is the adder value determining frequency
; add value to accumulator
; load byte from current table in ROM
; output byte to port
; repeat
;
LOOP1:
add r28,r24 ; 1
adc r29,r25 ; 1
adc r30,r26 ; 1
lpm ; 3
out PORTB,r0 ; 1
rjmp LOOP1 ; 2 => 9 cycles
Main loop se izvršava u samo 9 ciklusa!!! To PIC ne može za ovakvu aplikaciju (DDS). Dakle, u matematici i radu sa tabelama, u interaptima, arhitektura i skup naredbi daju brzinsku prednost AVR. To komšijin mali treba da dokaže.
Prednost PIC je kad gazda kaže da ćemo za sledeći projekat koristiti PICxxx i što ga možeš kupiti kod nas na trafici. Vremenom me mrzelo da prelazim na nešto drugo pa ga koristim i za svoje stvari.
gorankg