AVR vs PIC - Page 6

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

Threaded View
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



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 подошел бы идеально.


--
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


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.хх однозначно лучше сделано распределение регистров при кодогенерации.

--
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

 02 июля 04, Ruslan Mohniuc wrote to All  
RM> Вот я пpименяю PIC18F1320. Hиже я опишу те его особенности, из-за
RM> котоpых он мне подошел.

IMHO, cамое близкое из AVR - ATmega88/168.

Bye

Re: AVR vs PIC
Hello, Oleg Saharuk !

 > Я о другов - насколько разнятся в потреблении ресурсов
 > задачи с и с++? Мне почемуто казалось всегда, что
 > с++ более расточителен.

Сам по себе нет, но провоцирует к более расточительному стилю.


С уважением, Дима Орлов.


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 и т.д.


Re: AVR vs PIC
Hi Harry !

 Совсем недавно 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



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.
... Кто юзал мой логин и весь его выюзал?!

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

Re: AVR vs PIC
сообщил/сообщила в новостях следующее:
Quoted text here. Click to load it
двигать надо.

А где его покупают? Зашел в будку, там пусто...

Еще может подскажешь как хотя бы в старом 2.28 включить EC++ syntax: у меня
чекбокс неактивный серый и на слово class в исходнике ругается. Проект под
мегу16.

Денис.



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'е

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 не заменяется...

 > Еще как заменяется, причем не в пользу ПИКа.

Если документацию не читать.

С уважением, Дима Орлов.


Re: AVR vs PIC
Всем привет.

Quoted text here. Click to load it

Уже нашел... :( :)


                                 АртемКАД



Re: AVR vs PIC
  Привет!

Wed, 23 Jun 2004 19:00:40 +0400, Vladimir Vassilevsky писал:

...

Quoted text here. Click to load it



...

При компилляции предъявленного куска в практически неизменном
состоянии компиллятор 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)


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

Чем тебя так указатели прикалывают?



С уважением, Дима Орлов.


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)


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


Site Timeline