реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ATTINY10, Программирование, прошивка
nicks80
сообщение Apr 5 2011, 09:51
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485



Уважаемые кто имел дело с этим контроллером?
Планируется реализовать простой 1 проводной протокол. и программный ШИМ на 3 канала.
и программировать на С а не на ASM.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 5 2011, 16:46
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Глянул, он таки поддерживается avr-gcc, но при размере ОЗУ в 32 байта-регистра о Си, я думаю, стоит забыть.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
nk@
сообщение Apr 5 2011, 17:44
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138



Цитата(nicks80 @ Apr 5 2011, 12:51) *
Уважаемые кто имел дело с этим контроллером?
Планируется реализовать простой 1 проводной протокол. и программный ШИМ на 3 канала.
и программировать на С а не на ASM.

Я сделал диммер на tiny10 (ASM), правда у меня всего один PWM используется. Там ножек, которыми можно подрыгать всего 4, так что Вам попасть надо с первого раза, тк прийдется отключить reset. Разумно будет отладить на tiny2313, а потом уже портировать, или делайте сразу программатор с подачей 12V на reset. Родной AVRISPmkII равно как и JTAGICEmkII этого не могут, и надо слепить специальный адаптер. На фриксе есть схемка и обсуждение http://www.avrfreaks.net/index.php?name=PN...ic&p=679616 - может пригодится. Я себе пока не делал, нет нужды, но максик 622 на всякий случай прикупил sm.gif
Вот тока у меня одна проблема: где бы ZIF панельку под такой чип раздобыть, а то при массовом производстве припаивать сопли както напрягаетsad.gif Вы об этом не думали? Может есть идеи? Ставить разъем для внутрисхемного программирования както не хочется - он ведь больше контроллера получается, вся прелесть миниатюрности теряется sad.gif
Еще один ньюанс замечен - если использовать вывод reset как выход, амплитуда на нем почти на 1V меньше (при питании +3.3V). Для меня это было не критично, но имейти ввиду.
Если есть вопросы, вопрошайте. Макетка еще не разобрана, могу даже ченить проверить.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2011, 23:21
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(nicks80 @ Apr 5 2011, 12:51) *
Уважаемые кто имел дело с этим контроллером?
Планируется реализовать простой 1 проводной протокол. и программный ШИМ на 3 канала.
и программировать на С а не на ASM.

Советую использовать tiny13A.
tiny10 давненько снят с производства (вот смотрю AVR Technical Library за 2006-й год, его уже там нет).
В tiny13 есть встроенный debugWire и памяти 64 байта, плюс более быстрый internal oscillator (9.6Mhz), поддерживается в IAR и в WinAvr. возможно если отдать почти всю память под стеки и аккуратно промониторить глубину вызовов, то может быть что-то и получится на C....

Иначе пишите лучше на ASM, это как раз тот случай когда ASM более уместен чем Си, если взвесить все за и против.

Цитата
Разумно будет отладить на tiny2313, а потом уже портировать

с толстого контроллера переходить на более мелкий - часто чревато огромным разочарованием, когда как не крути код не укладывается..
На мой взгляд когда речь идет о программировании таких крошек как tiny10 - Си надо забыть и программу писать исключительно на ASM и сразу под целевой МК.
В контроллере всего __512 слов__ памяти программ, какие компиляторы? какие Си?!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 7 2011, 23:33
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Apr 8 2011, 03:21) *
Советую использовать tiny13A.
tiny10 давненько снят с производства (вот смотрю AVR Technical Library за 2006-й год, его уже там нет).

А это ничего, что в 2009-м году даташит на него еще был premilinary ?

Цитата
На мой взгляд когда речь идет о программировании таких крошек как tiny10 - Си надо забыть и программу писать исключительно на ASM и сразу под целевой МК.
В контроллере всего __512 слов__ памяти программ, какие компиляторы? какие Си?!

А в первую очередь - исходя из задачи. Три канала программного PWM - только asm, с оптимизацией каждого такта, и лишь тогда получится хоть что-то более-менее съедобное...
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 8 2011, 00:03
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(rx3apf @ Apr 8 2011, 02:33) *
А это ничего, что в 2009-м году даташит на него еще был premilinary ?

Приношу извинения, я его спутал с tiny11.
tiny10 действительно был анонсирован только в 2009-м, поэтому его и нет в AVR Tech Library за 2006-й год.

Цитата(rx3apf @ Apr 8 2011, 02:33) *
А в первую очередь - исходя из задачи. Три канала программного PWM - только asm, с оптимизацией каждого такта, и лишь тогда получится хоть что-то более-менее съедобное...

Там (и в tiny10 и в tiny13) есть таймер с OCRA и OCRB т.е. вполне реально сделать 3 канала и даже больше каналов на Си с высокой точностью и без особого напряга для проца - методом сортировки событий программируя OCRA / OCRB поочередно на следующий event. В одной из тем такой способ уже приводил. Меня здесь больше настораживает "простой" 1-wire протокол. Из практики, как раз реализация, как по-началу кажется "простого" протокола управления может занимать до 9/10 кода проекта.
Go to the top of the page
 
+Quote Post
nk@
сообщение Apr 8 2011, 04:05
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138



Цитата(defunct @ Apr 8 2011, 03:03) *
Приношу извинения, я его спутал с tiny11.
Там (и в tiny10 и в tiny13) есть таймер с OCRA и OCRB т.е. вполне реально сделать 3 канала и даже больше каналов на Си с высокой точностью и без особого напряга для проца - методом сортировки событий программируя OCRA / OCRB поочередно на следующий event. В одной из тем такой способ уже приводил.

Вы даташит хоть посмотрите. Корпус SOT23-6 = всего 6 ног, из которых -2 земля+питание = остается 4. Одна для однопроводного управления = в сухом остатке 3 ножки.
Вопрос: как Вы сможете сделать больше 3-х каналов PWM? Даже для 3-х каналов прийдется "отрубить" reset, что пртводит к трудностям, о которых я уже писАл.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 8 2011, 07:45
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Apr 8 2011, 04:03) *
Там (и в tiny10 и в tiny13) есть таймер с OCRA и OCRB т.е. вполне реально сделать 3 канала и даже больше каналов на Си с высокой точностью и без особого напряга для проца - методом сортировки событий программируя OCRA / OCRB поочередно на следующий event.

Не реально, на самом деле. Когда речь идет о управлении LED, разрядность должна быть высокая, частота большая, и ничего хорошего не получается. Я пробовал - оказалось, что один обработчик и три программных PWM работают быстрее.
Цитата
Меня здесь больше настораживает "простой" 1-wire протокол. Из практики, как раз реализация, как по-началу кажется "простого" протокола управления может занимать до 9/10 кода проекта.

Тривиально. Я, например, применил самосинхронизирующееся бифазное кодирование (что позволяет в очень широких пределах варьировать битовую скорость). Синхробайт, адресат, содержание, CRC.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 8 2011, 13:26
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(nk@ @ Apr 8 2011, 07:05) *
Вы даташит хоть посмотрите.

Смотрел, и как это влияет на мой пост о производительности?

Цитата
Вопрос: как Вы сможете сделать больше 3-х каналов PWM? Даже для 3-х каналов прийдется "отрубить" reset, что пртводит к трудностям, о которых я уже писАл.

Очевидно буду использовать все имеющиеся 4 в tiny10 или все 6 в tiny13 GPIO.
Вообще не надо приплетать ножки когда речь идет о производительности и вылизывании кода программного PWM "до такта" на асм, либо использования более продвинутого алгоритма на C.

Цитата(rx3apf @ Apr 8 2011, 10:45) *
Не реально, на самом деле. Когда речь идет о управлении LED, разрядность должна быть высокая, частота большая, и ничего хорошего не получается. Я пробовал - оказалось, что один обработчик и три программных PWM работают быстрее.

для управления яркостью LED хватит 60Гц, какую вам надо разрядность? 10 бит -> 66kHz, 12bit -> 246kHz. Заметьте, прерывания в системе по моему способу будут идти с частотой в 60Гц * (Fd / разрядность таймера), где Fd/разрядность таймера не меньше 1, Fd - частота PWM (66kHz 10bit, 246kHz 12bit и т.д.).
для МК на 9.6Mhz с прерываниями только от одного таймера это как семечки пощелкать. МК будет курить 99% процентов веремени на 3-х каналах.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 8 2011, 15:48
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Apr 8 2011, 17:26) *
для управления яркостью LED хватит 60Гц,

Это только так кажется. Тому, кто никогда не пробовал. Реально - и 200 Hz маловато (при малой яркости). 60 - ну это примерно как лампочка через диод, стробоскоп для дискотеки.
Цитата
какую вам надо разрядность? 10 бит -> 66kHz, 12bit -> 246kHz.

Это что за альтернативная арифметика такая, что с ростом разрядности частота дискретизации растет ?
Цитата
Заметьте, прерывания в системе по моему способу будет идти с частотой в 60Гц * (Fd / разрядность таймера), где Fd/разрядность таймера не меньше 1, Fd - чатота PWM (66kHz 10bit, 246 12bit и т.д.).
для МК на 9.6Mhz с прерываниями только от одного таймера это что семечки пощелкать. МК будет курить 99% процентов веремени на 3-х каналах.

Ну вот когда попробуете сделать реально, там и увидите, кто и что будет курить. На tiny10 чуть проще, потому как таймер 16-битный, на tiny13 с 8-битным - получилось очень грустно. Намекну, что шкала логарифмическая, на начальном участке разрешение критично, и если отчесты для разных каналов близки, но не равны, будет совсем плохо.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 8 2011, 16:02
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(rx3apf @ Apr 8 2011, 18:48) *
Это только так кажется. Тому, кто никогда не пробовал. Реально - и 200 Hz маловато (при малой яркости). 60 - ну это примерно как лампочка через диод, стробоскоп для дискотеки.

50 гц уже не видно на глаз, 60 тем более. Не надо сказок про 200 hz.
Плюс никто не мешает поставить ФНЧ на выходе шима.

Цитата
что с ростом разрядности частота дискретизации растет ?

Естессно растет. 60Hz * 2^10, и 60Hz * 2^12. 66kHz / 1024 = 60Hz, 246kHz / 4096 = 60Hz.

Цитата
Намекну, что шкала логарифмическая, на начальном участке разрешение критично, и если отчесты для разных каналов близки, но не равны, будет совсем плохо.
Это я в курсе, но лично мне выше 8-битной разрядности для светодиодов пока было не нужно. Табличка в 256 элементов рулит.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 8 2011, 16:24
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Apr 8 2011, 20:02) *
50 гц уже не видно на глаз, 60 тем более. Не надо сказок про 200 hz.

Включите лампочку накаливания через диод и посмотрите, как оно "не видно". 50 Hz при половинной яркости. А 200 Hz при 10-процентной яркости с безинерционным светодиодом - очень даже видно. Я сделал порядка 270 Hz (OSCCAL на максимум) - и все равно боковым зрением заметно при малой яркости.
Цитата
Плюс никто не мешает поставить ФНЧ на выходе шима.

Ню-ню...
Цитата
Естессно растет. 60Hz * 2^10, и 60Hz * 2^12. 66kHz / 1024 = 60Hz, 246kHz / 4096 = 60Hz.

Это растет _требуемая_ частота дискретизации. А реально достижимая (при ограниченной тактовой) - падает. При тактовой 9.6 MHz 8-битный PWM - меньше 40 kHz.
Цитата
Это я в курсе, но лично мне выше 8-битной разрядности для светодиодов пока было не нужно. Табличка в 256 элементов рулит.

Вообще бред. 8-битная разрядность хорошо если 16 градаций яркости обеспечит, зачем там 256 элементов ?
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 9 2011, 04:20
Сообщение #13


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(rx3apf @ Apr 8 2011, 19:24) *
Это растет _требуемая_ частота дискретизации. А реально достижимая (при ограниченной тактовой) - падает. При тактовой 9.6 MHz 8-битный PWM - меньше 40 kHz.

Говорим про одно и то же только с разных сторон. Я говорю про требуемую частоту дискретизации для заданной частоты шим и заданной разрядности, потому как обычно у меня выполняется не только ШИМ, точнее ШИМ это как правило второстепенная задачка, которой позволено пользовать не более 5% ресурса МК.. Вы же подходите с другой стороны - "какая частота шим получится при заданной тактовой", вероятно кроме ШИМ ваш МК больше ничего не делает.

В атаче набросал пример программного 8-ми канального PWM с профайлером (под mega16 на STK500, порт B подключен к светодиодам - которые зажигаются низким уровнем)
В примере задан 11-ти битный PWM, но разрядность можно легко поменять, см. параметры функции pwm_Init(). Код писан без особых оптимизаций, баги тоже вероятно все не отловил, глубину прерываний оценивал вообще на глаз +/- 100 тактов.
При этом работает прекрасно.
При тактировании МК 8Mhz - частота PWM в примере будет ~60Гц, если заметите мерцания - поздравляю, можете записываться в космонавты, т.к. ваше зрение явно лучше 1.0. sm.gif
Профайлер показывает 7.6млн свободных циклов в секунду, т.е. как и говорил ранее МК более 90% времени просто курит.
Удачи.
Прикрепленные файлы
Прикрепленный файл  8ChannelPwm.zip ( 40.25 килобайт ) Кол-во скачиваний: 64
 
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 9 2011, 08:59
Сообщение #14


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(defunct @ Apr 9 2011, 08:20) *
Профайлер показывает 7.6млн свободных циклов в секунду, т.е. как и говорил ранее МК более 90% времени просто курит.
Что за профайлер? Позвольте полюбопытствовать.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 9 2011, 09:24
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Apr 9 2011, 08:20) *
Вы же подходите с другой стороны - "какая частота шим получится при заданной тактовой", вероятно кроме ШИМ ваш МК больше ничего не делает.

Хватает ресурсов, чтобы принимать еще и управляющие команды. А на большее - там просто уже ничего нет...

Цитата
При тактировании МК 8Mhz - частота PWM в примере будет ~60Гц, если заметите мерцания - поздравляю, можете записываться в космонавты, т.к. ваше зрение явно лучше 1.0. sm.gif

Посмотрите на китайские светодиодные гирлянды (фазовое управление на 100 Hz) - если не видите мерцание при малых яркостях - надо обратиться к окулисту. Аналогично с дешевыми светодиодными с емкостным балластом - мерцание совершенно дикое.

Что же до "набросков" - совершенно не интересно. Вот когда попробуете реализовать "железе", поймете, что теория теорией, а вот к реальной жизни это отношения не имеет.

Сообщение отредактировал rx3apf - Apr 9 2011, 09:27
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016