защита от перенапряжений.Dimon456 писал(а):51 51 TVS350V 330 и 13009?
кто знает?astrahard писал(а):Или я что-то не понимаю?
защита от перенапряжений.Dimon456 писал(а):51 51 TVS350V 330 и 13009?
кто знает?astrahard писал(а):Или я что-то не понимаю?
На чистом СИjcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц. Загрузка CPU правда тогда - по самые гланды, на ассемблере большая часть кода.
В моих тестах на мега168 16МГц, при частоте ШИМ 7,8кГц(128мкс), на расчет табличного синтеза и амплитуды для 6 каналов ШИМ требуется всего 11мкс, с учетом вхождения в прерывания и выхода, грубо, остается еще 100мкс, вагон времени.
На чистом СИjcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц. Загрузка CPU правда тогда - по самые гланды, на ассемблере большая часть кода.
[/uquote]Ну во-первых: у меня частота ШИМ немного по-больше.В моих тестах на мега168 16МГц, при частоте ШИМ 7,8кГц(128мкс), на расчет табличного синтеза и амплитуды для 6 каналов ШИМ требуется всего 11мкс, с учетом вхождения в прерывания и выхода, грубо, остается еще 100мкс, вагон времени.
jcxz писал(а):всего с 8КБ флеша.
Для тестаjcxz писал(а):Даже в этом случае у меня при компиляции в режиме debug размер образа был ~7КБ (в release с оптимизацией = ~6КБ). Т.е. - и так еле влезало.
Код: Выделить всё
AVR Memory Usage
----------------
Device: atmega168p
Program: 1026 bytes
(.text + .data + .bootloader)
Data: 6 bytes
(.data + .bss + .noinit)Код: Выделить всё
AVR Memory Usage
----------
Device: atmega168p
Program: 1026 bytes
(.text + .data + .bootloader)
Data: 6 bytes
(.data + .bss + .noinit)Блин, я то думал, что речь шла о том что бы просто покрутить.jcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц.
Какой смысл от такой точности?jcxz писал(а):точность расчёта синуса была около 16 бит
Какой смысл от такой точности?jcxz писал(а):точность расчёта синуса была около 16 бит
если у вас брать таблицу в 16 бит, это у вас 65536 точек что ли?jcxz писал(а):таблица в 128 значений имеет точность 7 бит (по аргументу), у меня =16 бит
У вас ШИМ 10кГц, туда физически нельзя запихать более 10000 точек.jcxz писал(а):Таймеры у STM8 - 16 битные
А это не верно.jcxz писал(а):И частота у меня меняется плавно, а не как у вас с таблицей - скачками.
А если мало таблицы в 128 точек, ни вопрос, можно и 256 точек, 512 точек, 1024 точек.Пусть мне нужно генерировать частоту 50Гц, учитывая, что основную процедуру таймер исполняет 7812 раз в секунду
65536 / (7812 / 50Гц) = 419
65536 / (7812 / 50,25Гц) = 422
65536 / (7812 / 50,5Гц) = 424
65536 / (7812 / 50,75Гц) = 426
65536 / (7812 / 51Гц) = 428
Точность установки данного метода ~0,125Гц
И все таки мне не понятно, откуда взялись 16 бит и 7 бит?jcxz писал(а):что вычисления с точностью 16 бит однозначно точнее чем 7 бит.
но что бы получить 16 битный ШИМ, если конечно речь о этих 16 битах идет, то по вашей формуле: FFFF*10кГц = 655МГц? Может что-то опять не так?jcxz писал(а):Поделите частоту тактирования таймера на 10кГц - вот такую дискретность позволяют обеспечить таймеры.
Раз таблицу не используете - значит просчитываешь синус на лету (не которые тут уже пытались просчитывать синус быстрее 4 пня в месте с атлоном, а один да же умудрился за 30 тактов), по другому синус не получить.jcxz писал(а):Ну пускай не квадратных, а 128-угольных.
Не нравится?jcxz писал(а):360/128=~2.8
NCO модуль есть только в PIC, таймер это делитель, 2 4 8 16 и т.п.jcxz писал(а):А это что если не скачки?
Я же сказал - это шутка, но, к примеру, на F100 с размером флеша 128кБат вполне реализуем.jcxz писал(а): Объясните - как?
Значит скачки есть, куда уж без них.jcxz писал(а):Есть конечно.
Матом загнуть что ли?jcxz писал(а):Только у меня они размером = 360/65536 градусов, а не 360/128. Почувствуйте разницу!
Код: Выделить всё
127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
129,129,129,129,129,129,129,129,130,130,130,130,130,130,130,130,130,130,130,130,130,130,
130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,
130,130,130,130,130,130,130,130,130,130,130,130,130,130Код: Выделить всё
65536 точек 128 точек
0 127 127
512 133 133
1024 139 139
1536 146 146
2048 152 152
2560 158 158
3072 164 164
3584 170 170
4096 176 176
4608 181 181
5120 187 187
5632 192 192
6144 198 198
6656 203 203