Do you have a question? Post it now! No Registration Necessary

AVR vs PIC
Hi All !
Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых он
мне подошел.
Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том, что
сейчас занято около 98% памяти программ.
Если у AVR есть подобное с большей памятью, чем у этого ПИКа (4096 слов, это
8килобайт и 256 байт RAM), то буду смотреть. Чтобы знать куда сползать в случае
надобности.
Основные требования: небольшое потребление в SLEEP при работающих часах на
таймере (до 4 мкА), напряжение питания от 2.5В до 5.5В, небольшой корпус
(18-20ног SOIC-подобный), температуры -40...+70, наличие трех 10-битных АЦП с
возможностью работы от внешнего Uref.
Цена у него (PIC18LF1320-I/SS) сейчас в Москве 4$.
Hу, пусть будет что-то до 8$.
Может, есть что-то подходящее и не среди AVR, а TMS какой-нибудь?
Уж очень мне подошла возможность PIC18F1320 работать от разных источников
тактовой. У меня там:
1. часы на таймере TMR1 ( работают в том числе в режиме SLEEP процессора)
2. Тактирование ядра от внешнего кварца 500 кГц при приеме-передаче пакетов по
каналу связи (что понравилось- юзаю аппаратный ком при такой тактовой и 9600
бод, там расширенный относительно PIC16 Baud Rate Generator)
3. Тактирование ядра от внутреннего RC-генератора 8 МГц при обработке принятого
запроса и формировании ответного пакета.
4. Тактирование ядра от TMR1 при входе в режим калибровки (контроль частоты
часового кварцевого генератора).
А еще там есть хитрый start-up, когда до момента запуска кварцевого осциллятора
происходит тактирование от INTRC. Это значит, что для некритичных к тактовой
случаев выхода из SLEEP я успеваю много чего сделать еще до запуска кварцевого
генератора :)
WBRgrds
Ruslan
Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых он
мне подошел.
Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том, что
сейчас занято около 98% памяти программ.
Если у AVR есть подобное с большей памятью, чем у этого ПИКа (4096 слов, это
8килобайт и 256 байт RAM), то буду смотреть. Чтобы знать куда сползать в случае
надобности.
Основные требования: небольшое потребление в SLEEP при работающих часах на
таймере (до 4 мкА), напряжение питания от 2.5В до 5.5В, небольшой корпус
(18-20ног SOIC-подобный), температуры -40...+70, наличие трех 10-битных АЦП с
возможностью работы от внешнего Uref.
Цена у него (PIC18LF1320-I/SS) сейчас в Москве 4$.
Hу, пусть будет что-то до 8$.
Может, есть что-то подходящее и не среди AVR, а TMS какой-нибудь?
Уж очень мне подошла возможность PIC18F1320 работать от разных источников
тактовой. У меня там:
1. часы на таймере TMR1 ( работают в том числе в режиме SLEEP процессора)
2. Тактирование ядра от внешнего кварца 500 кГц при приеме-передаче пакетов по
каналу связи (что понравилось- юзаю аппаратный ком при такой тактовой и 9600
бод, там расширенный относительно PIC16 Baud Rate Generator)
3. Тактирование ядра от внутреннего RC-генератора 8 МГц при обработке принятого
запроса и формировании ответного пакета.
4. Тактирование ядра от TMR1 при входе в режим калибровки (контроль частоты
часового кварцевого генератора).
А еще там есть хитрый start-up, когда до момента запуска кварцевого осциллятора
происходит тактирование от INTRC. Это значит, что для некритичных к тактовой
случаев выхода из SLEEP я успеваю много чего сделать еще до запуска кварцевого
генератора :)
WBRgrds
Ruslan

AVR vs PIC
Fri, 02 Jul 2004 13:52:35 +0400 Ruslan Mohniuc wrote to All:
RM> Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых
RM> он мне подошел.
RM> Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том,
RM> что сейчас занято около 98% памяти программ.
RM> Если у AVR есть подобное с большей памятью, чем у этого ПИКа (4096 слов,
RM> это 8килобайт и 256 байт RAM), то буду смотреть. Чтобы знать куда сползать
RM> в случае надобности.
RM> Основные требования: небольшое потребление в SLEEP при работающих часах на
RM> таймере (до 4 мкА), напряжение питания от 2.5В до 5.5В, небольшой корпус
RM> (18-20ног SOIC-подобный), температуры -40...+70, наличие трех 10-битных АЦП
RM> с возможностью работы от внешнего Uref.
Если бы не питание в 5.5В, то MSP430 подошел бы идеально.
RM> Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых
RM> он мне подошел.
RM> Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том,
RM> что сейчас занято около 98% памяти программ.
RM> Если у AVR есть подобное с большей памятью, чем у этого ПИКа (4096 слов,
RM> это 8килобайт и 256 байт RAM), то буду смотреть. Чтобы знать куда сползать
RM> в случае надобности.
RM> Основные требования: небольшое потребление в SLEEP при работающих часах на
RM> таймере (до 4 мкА), напряжение питания от 2.5В до 5.5В, небольшой корпус
RM> (18-20ног SOIC-подобный), температуры -40...+70, наличие трех 10-битных АЦП
RM> с возможностью работы от внешнего Uref.
Если бы не питание в 5.5В, то MSP430 подошел бы идеально.
--
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
We've slightly trimmed the long signature. Click to see the full one.

Re: AVR vs PIC
Доброго здоровья, Harry!
29 Jun 04 09:05, Harry Zhurov написал для Vladimir Vassilevsky:
VV>>>> Переход 2.26 -> 2.28 сьэкономил ~ 200 байт на ~28k проекте.
HZ>>> В этой эхе есть парень, у которого на ~60к проекте сократилось 4-5к.
HZ>>> Я даже очень удивился, что так много.
VV>> Hеуж-то они сделали многофайловую оптимизацию в 3.x ?
HZ> Вряд ли. Я заметил, что там намного лучше сделано распределение
HZ> регистров-указателей - то, что в 2.2х порой очень интенсивно юзался
HZ> X-pointer,
HZ> что влекло за собой кучу команд для его модификации, т.к. он не
HZ> поддерживает
HZ> адресацию со смещением. В 3.хх в таких случаях чаще используется
HZ> Z-pointer,
HZ> что дает весомую экономию кода. Возможно, у него много такого кода было,
HZ> вот и
HZ> выигрыш. Хотя все равно удивительно.
я тот самый парень :)
ну я склонен все-таки отнести такое существенное улучшение на счет лучшей
реализации с++ -ных классов (в 2.28 это же были первые шаги, емнип?).
WBR, Сергей. ICQ: 101347299
29 Jun 04 09:05, Harry Zhurov написал для Vladimir Vassilevsky:
VV>>>> Переход 2.26 -> 2.28 сьэкономил ~ 200 байт на ~28k проекте.
HZ>>> В этой эхе есть парень, у которого на ~60к проекте сократилось 4-5к.
HZ>>> Я даже очень удивился, что так много.
VV>> Hеуж-то они сделали многофайловую оптимизацию в 3.x ?
HZ> Вряд ли. Я заметил, что там намного лучше сделано распределение
HZ> регистров-указателей - то, что в 2.2х порой очень интенсивно юзался
HZ> X-pointer,
HZ> что влекло за собой кучу команд для его модификации, т.к. он не
HZ> поддерживает
HZ> адресацию со смещением. В 3.хх в таких случаях чаще используется
HZ> Z-pointer,
HZ> что дает весомую экономию кода. Возможно, у него много такого кода было,
HZ> вот и
HZ> выигрыш. Хотя все равно удивительно.
я тот самый парень :)
ну я склонен все-таки отнести такое существенное улучшение на счет лучшей
реализации с++ -ных классов (в 2.28 это же были первые шаги, емнип?).
WBR, Сергей. ICQ: 101347299

AVR vs PIC
Mon, 05 Jul 2004 14:24:39 +0400 Sergei Tuchinski wrote to Harry Zhurov:
[...]
HZ>> выигрыш. Хотя все равно удивительно.
ST> я тот самый парень :)
ST> ну я склонен все-таки отнести такое существенное улучшение на счет лучшей
ST> реализации с++ -ных классов (в 2.28 это же были первые шаги, емнип?).
Да не, 2.28 - это уже далеко не первые шаги. Первые шаги - это 2.20
(afair). Я начал работу с 2.25, там еще было, над чем упорно трудиться. А
2.28 - уже вполне себе ничего. Единственное, там для нормальной реализации
конструкторов надо было юзать ключ --enable_improved_new_delete. В 3.хх это
пофиксили окончательно.
В 3.хх однозначно лучше сделано распределение регистров при кодогенерации.
[...]
HZ>> выигрыш. Хотя все равно удивительно.
ST> я тот самый парень :)
ST> ну я склонен все-таки отнести такое существенное улучшение на счет лучшей
ST> реализации с++ -ных классов (в 2.28 это же были первые шаги, емнип?).
Да не, 2.28 - это уже далеко не первые шаги. Первые шаги - это 2.20
(afair). Я начал работу с 2.25, там еще было, над чем упорно трудиться. А
2.28 - уже вполне себе ничего. Единственное, там для нормальной реализации
конструкторов надо было юзать ключ --enable_improved_new_delete. В 3.хх это
пофиксили окончательно.
В 3.хх однозначно лучше сделано распределение регистров при кодогенерации.
--
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
We've slightly trimmed the long signature. Click to see the full one.

AVR vs PIC
Привет!
Fri Jul 02 2004 14:52, Ruslan Mohniuc wrote to All:
RM> Hi All !
RM> Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых
RM> он мне подошел.
RM> Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том,
RM> что сейчас занято около 98% памяти программ.
...
RM> Уж очень мне подошла возможность PIC18F1320 работать от разных источников
RM> тактовой. У меня там: 1. часы на таймере TMR1 ( работают в том числе в
RM> режиме SLEEP процессора)
Непонятно, а чем не годятся другие PIC'и? Любой из новых 28-выводных даст
необходимую память и режимы тактирования: 18F2431, 2439, 2410 и т.д.
Fri Jul 02 2004 14:52, Ruslan Mohniuc wrote to All:
RM> Hi All !
RM> Вот я применяю PIC18F1320. Hиже я опишу те его особенности, из-за которых
RM> он мне подошел.
RM> Подскажите, есть ли камни с подобными возможности среди AVR. Дело в том,
RM> что сейчас занято около 98% памяти программ.
...
RM> Уж очень мне подошла возможность PIC18F1320 работать от разных источников
RM> тактовой. У меня там: 1. часы на таймере TMR1 ( работают в том числе в
RM> режиме SLEEP процессора)
Непонятно, а чем не годятся другие PIC'и? Любой из новых 28-выводных даст
необходимую память и режимы тактирования: 18F2431, 2439, 2410 и т.д.

Re: AVR vs PIC
Hi Harry !
Совсем недавно 02 Jul 04 16:24, Harry Zhurov писал к Ruslan Mohniuc:
HZ> Если бы не питание в 5.5В, то MSP430 подошел бы идеально.
Да, я уже думал об этом (тут уже про MSP как-то заходил разговор). Hаверно, я
бы мог придумать как ограничится питанием 3В.
Бум все это глядеть.
WBRgrds
Ruslan
Совсем недавно 02 Jul 04 16:24, Harry Zhurov писал к Ruslan Mohniuc:
HZ> Если бы не питание в 5.5В, то MSP430 подошел бы идеально.
Да, я уже думал об этом (тут уже про MSP как-то заходил разговор). Hаверно, я
бы мог придумать как ограничится питанием 3В.
Бум все это глядеть.
WBRgrds
Ruslan

Re: AVR vs PIC
Hi Alexander !
Совсем недавно 03 Jul 04 14:13, Alexander Golov писал к Ruslan Mohniuc:
AG> Hепонятно, а чем не годятся другие PIC'и? Любой из новых 28-выводных
AG> даст необходимую память и режимы тактирования: 18F2431, 2439, 2410 и
AG> т.д.
Сенкс, посмотрю. Hаверно, отстал я от жизни. Они уже есть вживую в Москве?
Интересно, почем? (Хотя вопросы риторическия, счас даташиты надыбаю, и прайсы
тритоновские заодно).
WBRgrds
Ruslan
Совсем недавно 03 Jul 04 14:13, Alexander Golov писал к Ruslan Mohniuc:
AG> Hепонятно, а чем не годятся другие PIC'и? Любой из новых 28-выводных
AG> даст необходимую память и режимы тактирования: 18F2431, 2439, 2410 и
AG> т.д.
Сенкс, посмотрю. Hаверно, отстал я от жизни. Они уже есть вживую в Москве?
Интересно, почем? (Хотя вопросы риторическия, счас даташиты надыбаю, и прайсы
тритоновские заодно).
WBRgrds
Ruslan

AVR vs PIC
Привет Vladimir!
Пон Июн 28 2004 17:03, Vladimir Vassilevsky -> Harry Zhurov:
VV>>> Переход 2.26 -> 2.28 сьэкономил ~ 200 байт на ~28k проекте.
HZ>> В этой эхе есть парень, у которого на ~60к проекте сократилось
HZ>> 4-5к. Я даже очень удивился, что так много.
У меня то-же на одном пpоекте около 8% сокpатилось.
VV> Hеуж-то они сделали многофайловую оптимизацию в 3.x ?
Hет. А зачем? Им еще однофайловую pазвивать да pазвивать. Компилятоp все еще не
помнит, что он положил в pегистpы на пpедыдущей стpочке.
Hа этом все, пока.
Anton Abrosimov.
... Кто юзал мой логин и весь его выюзал?!
Пон Июн 28 2004 17:03, Vladimir Vassilevsky -> Harry Zhurov:
VV>>> Переход 2.26 -> 2.28 сьэкономил ~ 200 байт на ~28k проекте.
HZ>> В этой эхе есть парень, у которого на ~60к проекте сократилось
HZ>> 4-5к. Я даже очень удивился, что так много.
У меня то-же на одном пpоекте около 8% сокpатилось.
VV> Hеуж-то они сделали многофайловую оптимизацию в 3.x ?
Hет. А зачем? Им еще однофайловую pазвивать да pазвивать. Компилятоp все еще не
помнит, что он положил в pегистpы на пpедыдущей стpочке.
Hа этом все, пока.
Anton Abrosimov.
... Кто юзал мой логин и весь его выюзал?!

AVR vs PIC
Привет Vladimir!
Пят Июн 25 2004 09:55, Vladimir Vassilevsky -> Anton Abrosimov:
AA>> 8641 такт с IAR AVR 3.10B пpи том-же pазмеpе кода.
VV> Кстати, вопросы использующим IAR AVR 3.10
VV> 1. Hасколько он глюкав?
Пока не встpечал.
VV> 2. Что там нового/полезного?
Компилит заметно лучше и интеpфейс удобнее. По мелочи улучшений много.
VV> 3. Как с совместимостью проектов от предыдущих версий?
Хоpошо. Только настpойки пpоекта пpовеpять надо, ибо пpи откpытии файла стаpого
пpоекта не все настpойки пеpеносятся.
VV> 4. Ради чего стоит на него переходить со старого доброго IAR 2.28?
Hу типа камни новые выходят, котоpые стаpый не поддеpживает. Да и пpогpесс
двигать надо. :)
Hа этом все, пока.
Anton Abrosimov.
... Внимание: идет подготовка к последнему запуску Windows 95
Пят Июн 25 2004 09:55, Vladimir Vassilevsky -> Anton Abrosimov:
AA>> 8641 такт с IAR AVR 3.10B пpи том-же pазмеpе кода.
VV> Кстати, вопросы использующим IAR AVR 3.10
VV> 1. Hасколько он глюкав?
Пока не встpечал.
VV> 2. Что там нового/полезного?
Компилит заметно лучше и интеpфейс удобнее. По мелочи улучшений много.
VV> 3. Как с совместимостью проектов от предыдущих версий?
Хоpошо. Только настpойки пpоекта пpовеpять надо, ибо пpи откpытии файла стаpого
пpоекта не все настpойки пеpеносятся.
VV> 4. Ради чего стоит на него переходить со старого доброго IAR 2.28?
Hу типа камни новые выходят, котоpые стаpый не поддеpживает. Да и пpогpесс
двигать надо. :)
Hа этом все, пока.
Anton Abrosimov.
... Внимание: идет подготовка к последнему запуску Windows 95

AVR vs PIC
Привет Dennis!
Втp Июн 29 2004 15:40, Dennis Opanasenko -> All:
>> Hу типа камни новые выходят, котоpые стаpый не поддеpживает. Да и
>> пpогpесс
DO> двигать надо.
DO> А где его покупают? Зашел в будку, там пусто...
Так будок вpоде много. Я в ru-embedded00 находил.
DO> Еще может подскажешь как хотя бы в старом 2.28 включить EC++ syntax: у
DO> меня чекбокс неактивный серый и на слово class в исходнике ругается.
DO> Проект под
DO> мегу16.
Я плюсы не использую. Hо дело вpоде в том, что сначала надо library в закладке
general на ++ пеpеключить.
Hа этом все, пока.
Anton Abrosimov.
... Hет повести печальнее на свете, чем повесть о заклинившем Reset'е
Втp Июн 29 2004 15:40, Dennis Opanasenko -> All:
>> Hу типа камни новые выходят, котоpые стаpый не поддеpживает. Да и
>> пpогpесс
DO> двигать надо.
DO> А где его покупают? Зашел в будку, там пусто...
Так будок вpоде много. Я в ru-embedded00 находил.
DO> Еще может подскажешь как хотя бы в старом 2.28 включить EC++ syntax: у
DO> меня чекбокс неактивный серый и на слово class в исходнике ругается.
DO> Проект под
DO> мегу16.
Я плюсы не использую. Hо дело вpоде в том, что сначала надо library в закладке
general на ++ пеpеключить.
Hа этом все, пока.
Anton Abrosimov.
... Hет повести печальнее на свете, чем повесть о заклинившем Reset'е

Re: AVR vs PIC
Hello, Artem Kamburov !
>> AB>>> Сколько у него памяти? Иначе atmega8 с 8кб подходит.
>> GS>> Hе подходит. Этот PIC (включая PWM) работает на 40 МГц.
> Еще раз - PWM в ПИКах работает максимум на Fosc/4. Т.е. на 10МГц.
Ты бы чем еще раз глупости повторять, даташит прочитал. Hа Fosc в pic'е таймеры
работают и при 20MHz кристалле получается ~78kHz несущая.
> А у АВР на CLK_i/o=Fclk (16МГц у atmega8, 20МГц у atmega48).
А AVR на 20MHz мягко говоря не все работают.
>> GS>> Так что "скоростной ЦАП" на PIC не заменяется...
> Еще как заменяется, причем не в пользу ПИКа.
Если документацию не читать.
С уважением, Дима Орлов.
>> AB>>> Сколько у него памяти? Иначе atmega8 с 8кб подходит.
>> GS>> Hе подходит. Этот PIC (включая PWM) работает на 40 МГц.
> Еще раз - PWM в ПИКах работает максимум на Fosc/4. Т.е. на 10МГц.
Ты бы чем еще раз глупости повторять, даташит прочитал. Hа Fosc в pic'е таймеры
работают и при 20MHz кристалле получается ~78kHz несущая.
> А у АВР на CLK_i/o=Fclk (16МГц у atmega8, 20МГц у atmega48).
А AVR на 20MHz мягко говоря не все работают.
>> GS>> Так что "скоростной ЦАП" на PIC не заменяется...
> Еще как заменяется, причем не в пользу ПИКа.
Если документацию не читать.
С уважением, Дима Орлов.

Re: AVR vs PIC
Привет!
Wed, 23 Jun 2004 19:00:40 +0400, Vladimir Vassilevsky писал:
...

...
При компилляции предъявленного куска в практически неизменном
состоянии компиллятор Hi-Tech PICC18 8.20PL4, дал полный код 658
байтов и время выполнения 14 800 циклов, т.е. около 60 000 тактов.
При ближайшем рассмотрении выясняется, что в данном "тесте" более 2/3
времени выполняется одна строка:
if(syndrome==syndtable[cj]) // Error position found
Небольшие манипуляции на уровне C-исходника, учитывающие особенности
работы компиллятора Hi-Tech, привели к снижению времени выполнения до
10 240 циклов (40 960 тактов) и размеру исходника 626 байтов:
// Nonzero syndrome - Iterative search of errors
ci = 31 ; // Cycle for all bits except parity
do
{
{
unsigned char * synd_tab_ptr = ( char * ) syndtable ;
cj = 0 ;
do
{
char a, b ;
a = * synd_tab_ptr ;
synd_tab_ptr ++ ;
b = * synd_tab_ptr ;
synd_tab_ptr ++ ;
if ((( char )( syndrome ) == a ) && (( char )( syndrome >> 8 )) == b )
goto AA ;
}
while ( ++ cj < ci ) ;
}
syndrome <<= 1 ; // Recalculate the syndrome for next
iteration
if ( syndrome & 0x400 ) syndrome ^= 0x369 ;
syndrome &= 0x3ff ;
}
while ( -- ci != 0 ) ;
return 0xFF; // Error position not found -
uncorrectable
AA:
if ( ! cj ) // Single error?
{
InvertBit ( bchword, ci ) ;
if ( parity == 1 ) return 1 ; // no error in parity
( * bchword ) ^= 1 ; // Correct parity
return 2 ;
}
if ( parity ) return 0xff ; // More then 2 errors - uncorrectable
InvertBit ( bchword, ci ) ; // Correct double error
InvertBit ( bchword, ci - cj ) ;
return 2 ;
При ручной оптимизации участка ищущего значение в syndtable на асме
время снизилось до 8100 циклов.
Резюме:
Тест с подобной нагрузкой на однострочный участок кода способен
отразить относительную производительность МК наверное в ещё меньшей
степени чем рекламные заявления производителей этих МК. Всё что можно
здесь увидеть это насколько удачно ложится данная языковая конструкция
в данном контексте на архитектуру МК, а применительно к описанному
случаю скорее оценивает реализацию конкретного компиллятора.
Александр Голов, Москва, Alex.Nippel@mtu-net.ru
Wed, 23 Jun 2004 19:00:40 +0400, Vladimir Vassilevsky писал:
...

...
При компилляции предъявленного куска в практически неизменном
состоянии компиллятор Hi-Tech PICC18 8.20PL4, дал полный код 658
байтов и время выполнения 14 800 циклов, т.е. около 60 000 тактов.
При ближайшем рассмотрении выясняется, что в данном "тесте" более 2/3
времени выполняется одна строка:
if(syndrome==syndtable[cj]) // Error position found
Небольшие манипуляции на уровне C-исходника, учитывающие особенности
работы компиллятора Hi-Tech, привели к снижению времени выполнения до
10 240 циклов (40 960 тактов) и размеру исходника 626 байтов:
// Nonzero syndrome - Iterative search of errors
ci = 31 ; // Cycle for all bits except parity
do
{
{
unsigned char * synd_tab_ptr = ( char * ) syndtable ;
cj = 0 ;
do
{
char a, b ;
a = * synd_tab_ptr ;
synd_tab_ptr ++ ;
b = * synd_tab_ptr ;
synd_tab_ptr ++ ;
if ((( char )( syndrome ) == a ) && (( char )( syndrome >> 8 )) == b )
goto AA ;
}
while ( ++ cj < ci ) ;
}
syndrome <<= 1 ; // Recalculate the syndrome for next
iteration
if ( syndrome & 0x400 ) syndrome ^= 0x369 ;
syndrome &= 0x3ff ;
}
while ( -- ci != 0 ) ;
return 0xFF; // Error position not found -
uncorrectable
AA:
if ( ! cj ) // Single error?
{
InvertBit ( bchword, ci ) ;
if ( parity == 1 ) return 1 ; // no error in parity
( * bchword ) ^= 1 ; // Correct parity
return 2 ;
}
if ( parity ) return 0xff ; // More then 2 errors - uncorrectable
InvertBit ( bchword, ci ) ; // Correct double error
InvertBit ( bchword, ci - cj ) ;
return 2 ;
При ручной оптимизации участка ищущего значение в syndtable на асме
время снизилось до 8100 циклов.
Резюме:
Тест с подобной нагрузкой на однострочный участок кода способен
отразить относительную производительность МК наверное в ещё меньшей
степени чем рекламные заявления производителей этих МК. Всё что можно
здесь увидеть это насколько удачно ложится данная языковая конструкция
в данном контексте на архитектуру МК, а применительно к описанному
случаю скорее оценивает реализацию конкретного компиллятора.
Александр Голов, Москва, Alex.Nippel@mtu-net.ru

AVR vs PIC
Wed Jun 23 2004 15:04, Vladislav Baliasov wrote to Vladimir Vassilevsky:
DO>>> Hет, не правда. PIC выполняет команду за 4 такта генератора.
VV>> Это недокоманды. Так что в ~10 раз медленнее, чем AVR - реальная
VV>> оценка.
VB> нужно что-то типа плавучки - AVR не спасет даже вчетверо большая
VB> скорострельность, все уйдет на перезагрузку регистров.
Плавучка. Вычисление прямого + обратного БПФ на 64 точки. IAR 2.28A,
Mega16, оптимизация на скорость. 2.0/1.9M тактов, 3.4/2.8 килобайт
полного кода с библиотеками соответственно ANSI lib/IAR lib.
Привет всем остальным :)
/*
Radix 2 FFT calculation
param = FFT - performs FFT
param = REV_FFT - performs reverse FFT
order = the order of FFT ( pow(2,order) calculated complex points )
x = pointer to real
y = pointer to imaginary
C code (c) VLV 1995
*/
main()
{
unsigned char ci;
float x[64],y[64];
for(ci = 0;ci < 64; ci++) x[ci] = y[ci] = (float)ci;
fft(x, y, 6, FFT);
fft(x, y, 6, REV_FFT);
}
#include <math.h>
#include "fft.h"
#if !defined M_PI
#define M_PI 3.14159265359
#endif
void fft(float *x,float *y,int order,int param)
{
unsigned int n,l,e,f,i,j,o,o1,j1,i1,k;
float u,v,z,c,s,p,q,r,t,w,a;
n=1u<<order;
for(l=1;l<=order;l++)
{
u=1.0;
v=0.0;
e=1u<<(order-l+1);
f=e/2;
z=M_PI/f;
c=cos(z);
s=sin(z);
if(param=FF%T) s=-s;
for(j=1;j<=f;j++)
{
for(i=j;i<=n;i+=e)
{
o=i+f-1;
o1=i-1;
p=x[o1]+x[o];
r=x[o1]-x[o];
q=y[o1]+y[o];
t=y[o1]-y[o];
x[o]=r*u-t*v;
y[o]=t*u+r*v;
x[o1]=p;
y[o1]=q;
}
w=u*c-v*s;
v=v*c+u*s;
u=w;
}
}
j=1;
for(i=1;i<n;i++)
{
if(i<j)
{
j1=j-1;
i1=i-1;
p=x[j1];
q=y[j1];
x[j1]=x[i1];
y[j1]=y[i1];
x[i1]=p;
y[i1]=q;
}
k=n/2;
while(k<j)
{
j=j-k;
k=k/2;
}
j+=k;
}
if(param=FF%T) return;
a=1.0/n;
for(k=0;k<n;k++)
{
x[k]*=a;
y[k]*=a;
}
return;
}
"There is no business other then show business " (c)
DO>>> Hет, не правда. PIC выполняет команду за 4 такта генератора.
VV>> Это недокоманды. Так что в ~10 раз медленнее, чем AVR - реальная
VV>> оценка.
VB> нужно что-то типа плавучки - AVR не спасет даже вчетверо большая
VB> скорострельность, все уйдет на перезагрузку регистров.
Плавучка. Вычисление прямого + обратного БПФ на 64 точки. IAR 2.28A,
Mega16, оптимизация на скорость. 2.0/1.9M тактов, 3.4/2.8 килобайт
полного кода с библиотеками соответственно ANSI lib/IAR lib.
Привет всем остальным :)
/*
Radix 2 FFT calculation
param = FFT - performs FFT
param = REV_FFT - performs reverse FFT
order = the order of FFT ( pow(2,order) calculated complex points )
x = pointer to real
y = pointer to imaginary
C code (c) VLV 1995
*/
main()
{
unsigned char ci;
float x[64],y[64];
for(ci = 0;ci < 64; ci++) x[ci] = y[ci] = (float)ci;
fft(x, y, 6, FFT);
fft(x, y, 6, REV_FFT);
}
#include <math.h>
#include "fft.h"
#if !defined M_PI
#define M_PI 3.14159265359
#endif
void fft(float *x,float *y,int order,int param)
{
unsigned int n,l,e,f,i,j,o,o1,j1,i1,k;
float u,v,z,c,s,p,q,r,t,w,a;
n=1u<<order;
for(l=1;l<=order;l++)
{
u=1.0;
v=0.0;
e=1u<<(order-l+1);
f=e/2;
z=M_PI/f;
c=cos(z);
s=sin(z);
if(param=FF%T) s=-s;
for(j=1;j<=f;j++)
{
for(i=j;i<=n;i+=e)
{
o=i+f-1;
o1=i-1;
p=x[o1]+x[o];
r=x[o1]-x[o];
q=y[o1]+y[o];
t=y[o1]-y[o];
x[o]=r*u-t*v;
y[o]=t*u+r*v;
x[o1]=p;
y[o1]=q;
}
w=u*c-v*s;
v=v*c+u*s;
u=w;
}
}
j=1;
for(i=1;i<n;i++)
{
if(i<j)
{
j1=j-1;
i1=i-1;
p=x[j1];
q=y[j1];
x[j1]=x[i1];
y[j1]=y[i1];
x[i1]=p;
y[i1]=q;
}
k=n/2;
while(k<j)
{
j=j-k;
k=k/2;
}
j+=k;
}
if(param=FF%T) return;
a=1.0/n;
for(k=0;k<n;k++)
{
x[k]*=a;
y[k]*=a;
}
return;
}
"There is no business other then show business " (c)

AVR vs PIC
Hello, Vladimir Vassilevsky !
> DO>>> Hет, не правда. PIC выполняет команду за 4 такта генератора.
> VV>> Это недокоманды. Так что в ~10 раз медленнее, чем AVR - реальная
> VV>> оценка.
> VB> нужно что-то типа плавучки - AVR не спасет даже вчетверо большая
> VB> скорострельность, все уйдет на перезагрузку регистров.
> Плавучка. Вычисление прямого + обратного БПФ на 64 точки. IAR 2.28A,
> Mega16, оптимизация на скорость. 2.0/1.9M тактов, 3.4/2.8 килобайт
> полного кода с библиотеками соответственно ANSI lib/IAR lib.
> Привет всем остальным :)
Так уж и всем...
> x = pointer to real
> y = pointer to imaginary
Чем тебя так указатели прикалывают?
С уважением, Дима Орлов.
> DO>>> Hет, не правда. PIC выполняет команду за 4 такта генератора.
> VV>> Это недокоманды. Так что в ~10 раз медленнее, чем AVR - реальная
> VV>> оценка.
> VB> нужно что-то типа плавучки - AVR не спасет даже вчетверо большая
> VB> скорострельность, все уйдет на перезагрузку регистров.
> Плавучка. Вычисление прямого + обратного БПФ на 64 точки. IAR 2.28A,
> Mega16, оптимизация на скорость. 2.0/1.9M тактов, 3.4/2.8 килобайт
> полного кода с библиотеками соответственно ANSI lib/IAR lib.
> Привет всем остальным :)
Так уж и всем...
> x = pointer to real
> y = pointer to imaginary
Чем тебя так указатели прикалывают?
С уважением, Дима Орлов.

AVR vs PIC
Wed Jun 23 2004 20:28, Dima Orlov wrote to Vladimir Vassilevsky:
>> x = pointer to real
>> y = pointer to imaginary
DO> Чем тебя так указатели прикалывают?
Язык C, однако.
Вообще, наличие глобальных и статических переменных - дурной тон
и причина глобальных и статических ошибок.
Все, что можно - доступ снаружи через this.
VLV
P.S. Так я не увидел, сколько тактов PIC занимает коррекция BCH слова 0x06.
"There is no business other then show business " (c)
>> x = pointer to real
>> y = pointer to imaginary
DO> Чем тебя так указатели прикалывают?
Язык C, однако.
Вообще, наличие глобальных и статических переменных - дурной тон
и причина глобальных и статических ошибок.
Все, что можно - доступ снаружи через this.
VLV
P.S. Так я не увидел, сколько тактов PIC занимает коррекция BCH слова 0x06.
"There is no business other then show business " (c)

AVR vs PIC
Hi Vladimir, hope you are having a nice day!
23 Июн 04, Vladimir Vassilevsky wrote to Dima Orlov:
VV> Вообще, наличие глобальных и статических переменных - дурной тон
VV> и причина глобальных и статических ошибок.
С чего бы?
VV> Все, что можно - доступ снаружи через this.
Hет. Это называется через задницу, т.к. кроме накладных расходов не дает
абсолютно ничего. Hе того масштаба проекты,
чтобы жертвовать производительностью.
VV> P.S. Так я не увидел, сколько тактов PIC занимает коррекция BCH
VV> слова
VV> 0x06.
742 байта (со страртапом). Компилятор mcc18, оптимизациия на скорость (без
абстракции процедур). Тактов 13744 по твоей
реализации. Если завтра будет время, попробую переписать код более оптимально.
Допускаю, что HTPIC18 сделает несколько
оптимальнее, чем mcc18.
Второй семпл с плавучкой откомпилировать в данный момент не могу, т.к. mcc18 не
имеет в библиотеке sin/cos, а хайтека в
пределах досягаемости нет.
WBR,
AVB
23 Июн 04, Vladimir Vassilevsky wrote to Dima Orlov:
VV> Вообще, наличие глобальных и статических переменных - дурной тон
VV> и причина глобальных и статических ошибок.
С чего бы?
VV> Все, что можно - доступ снаружи через this.
Hет. Это называется через задницу, т.к. кроме накладных расходов не дает
абсолютно ничего. Hе того масштаба проекты,
чтобы жертвовать производительностью.
VV> P.S. Так я не увидел, сколько тактов PIC занимает коррекция BCH
VV> слова
VV> 0x06.
742 байта (со страртапом). Компилятор mcc18, оптимизациия на скорость (без
абстракции процедур). Тактов 13744 по твоей
реализации. Если завтра будет время, попробую переписать код более оптимально.
Допускаю, что HTPIC18 сделает несколько
оптимальнее, чем mcc18.
Второй семпл с плавучкой откомпилировать в данный момент не могу, т.к. mcc18 не
имеет в библиотеке sin/cos, а хайтека в
пределах досягаемости нет.
WBR,
AVB
Site Timeline
- » МС часов нужна: ма-а-аленькая и не пpожоpливая, типа PCF8583. ...
- — Next thread in » Microcontrollers (Russian)
-
- » Гpабли с SD
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » Re: Najważniejszy jest stały etat!
- — The site's Newest Thread. Posted in » Electronics (Polish)
-