Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

STM8(S/L), первые впечатления

Непрочитано 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.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
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.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
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.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
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.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
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.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
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, время: 13:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.