Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 07.11.2010, 21:45  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Начинается, старая песня о главном

Сообщение от Gnider Посмотреть сообщение
Могу конечно. Просто я на Си,ты на АВР. Как сравнить то? Каков диапазон частот? Сколько бит?
Сравнивать надо по тактам, 8 битный МК, диапазон 0-fCLK/2, 32-битный аккумулятор фазы. Не надо тыкать.
Реклама:

Последний раз редактировалось =GM=; 07.11.2010 в 21:48.
=GM= вне форума  
Непрочитано 07.11.2010, 21:55  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Начинается, старая песня о главном

Сообщение от =GM= Посмотреть сообщение
Сравнивать надо по тактам, 8 битный МК, диапазон 0-fCLK/2, 32-битный аккумулятор фазы. Не надо тыкать.
ВАМ подойдет такой исходняк:
#include ‹math.h›
int next_amp(int dph)
{
static int phase=0;
int amp;
phase+=dph;
amp=511.5*sin(phase*2*M_PI/0x100000000L);
return amp;
}

Если нет скажите что исправить.
Gnider вне форума  
Непрочитано 07.11.2010, 22:16  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Начинается, старая песня о главном

Сколько тактов получилось?

1) Нужен бесконечный цикл, т.е. вместо вызова подпрограммы должен стоять оператор while(1).

2) int amp,phase,dph - 16-битные? Должно быть так uchar8 amp; long phase, dph.

3) синус берётся из 256-байтной таблицы

4) вы хотите делать вычисления с плавающей точкой? Займёт много-много тактов. Ну и 64-битные числа явно лишние, а M_PI явно не определено.

Последний раз редактировалось =GM=; 07.11.2010 в 22:19.
=GM= вне форума  
Непрочитано 07.11.2010, 22:34  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Хорошо!
Вот такой тогда катит?

#include ‹lpc11xx.h›

const unsigned char sinetable[256] = {
128,131,134,137,140,143,146,149,152,156,159,162,16 5,168,171,174,
176,179,182,185,188,191,193,196,199,201,204,206,20 9,211,213,216,
218,220,222,224,226,228,230,232,234,236,237,239,24 0,242,243,245,
246,247,248,249,250,251,252,252,253,254,254,255,25 5,255,255,255,
255,255,255,255,255,255,254,254,253,252,252,251,25 0,249,248,247,
246,245,243,242,240,239,237,236,234,232,230,228,22 6,224,222,220,
218,216,213,211,209,206,204,201,199,196,193,191,18 8,185,182,179,
176,174,171,168,165,162,159,156,152,149,146,143,14 0,137,134,131,
128,124,121,118,115,112,109,106,103,99, 96, 93, 90, 87, 84, 81,
79, 76, 73, 70, 67, 64, 62, 59, 56, 54, 51, 49, 46, 44, 42, 39,
37, 35, 33, 31, 29, 27, 25, 23, 21, 19, 18, 16, 15, 13, 12, 10,
9, 8, 7, 6, 5, 4, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 7, 8,
9, 10, 12, 13, 15, 16, 18, 19, 21, 23, 25, 27, 29, 31, 33, 35,
37, 39, 42, 44, 46, 49, 51, 54, 56, 59, 62, 64, 67, 70, 73, 76,
79, 81, 84, 87, 90, 93, 96, 99, 103,106,109,112,115,118,121,124
};


int main()
{
int phase=0,amp;


while(1)
{
LPC_GPIO0-›DATA=sinetable[phase++››24];
printf("%d",LPC_GPIO0-›DATA);
}



}
Gnider вне форума  
Непрочитано 07.11.2010, 23:22  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Нет, так не пойдёт

Должно быть как-то так
while(1)
{
phase+=dph;
PORTA=sinetable[phase››24]; //не знаю можно так выводить или нет
}

Вот мне интересно, вы только свои посты читаете? Сколько бит в phase и dph? Три четверти вопросов игнорируются!
=GM= вне форума  
Непрочитано 07.11.2010, 23:28  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Нет, так не пойдёт

Сообщение от =GM= Посмотреть сообщение
Должно быть как-то так
while(1)
{
phase+=dph;
PORTA=sinetable[phase››24]; //не знаю можно так выводить или нет
}

Вот мне интересно, вы только свои посты читаете? Сколько бит в phase и dph? Три четверти вопросов игнорируются!
Так и так же видно - "int" на АРМах 32-битное число.
LPC_GPIO0-›DATA это аналог PORTA.

dph чему равно сделать?
Gnider вне форума  
Непрочитано 07.11.2010, 23:38  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Ну так, сколько тактов на 32-разрядной машинке

получилось?

С этого кода винавр даёт 19 тактов.

dph, какой хотите, пусть будет код для 10 кГц.
=GM= вне форума  
Непрочитано 07.11.2010, 23:47  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Ну так, сколько тактов на 32-разрядной машинке

Сообщение от =GM= Посмотреть сообщение
получилось?

С этого кода винавр даёт 19 тактов.

dph, какой хотите, пусть будет код для 10 кГц.
Вот программа:
int main()
{
int dph=123,phase;


while(1)
{
phase+=dph;
LPC_GPIO0-›DATA=sinetable[phase››24];

}



}

вот для нее код:

28: while(1)
29: {
30: phase+=dph;
0x0000017E 1840 ADDS r0,r0,r1
31: LPC_GPIO0-›DATA=sinetable[phase››24];
0x00000180 1604 ASRS r4,r0,#24
0x00000182 5D14 LDRB r4,[r2,r4]
0x00000184 63DC STR r4,[r3,#0x3C]
28: while(1)
0x00000186 E7FA B 0x0000017E
Gnider вне форума  
Непрочитано 08.11.2010, 00:06  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Ну так, сколько тактов на 32-разрядной машинке

получилось? ИТОГО

Что ж такое, клещами надо ответы тянуть...
=GM= вне форума  
Непрочитано 08.11.2010, 00:47  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Ну так, сколько тактов на 32-разрядной машинке

Сообщение от =GM= Посмотреть сообщение
получилось? ИТОГО

Что ж такое, клещами надо ответы тянуть...
Ну что - 5 тактов,включая команду перехода . причем для 16-битной таблицы будут те-же 5 тактов.

Насчет кто из- кого должен тянуть.

Это вы предложили ДДС сравнить. И должны были обрисоавть условия задачи. А так я должен в инете исходняк искать,таблицу постоянно переспрашивая.
Gnider вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Народ, посмотрите quasm, Как ваши впечатления? suri Proteus, KiCAD и другие ECAD 5 14.10.2009 11:57


Часовой пояс GMT +4, время: 07:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot