|
ATTINY10, Программирование, прошивка |
|
|
|
Apr 5 2011, 17:44
|

Частый гость
 
Группа: Участник
Сообщений: 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 на всякий случай прикупил  Вот тока у меня одна проблема: где бы ZIF панельку под такой чип раздобыть, а то при массовом производстве припаивать сопли както напрягает  Вы об этом не думали? Может есть идеи? Ставить разъем для внутрисхемного программирования както не хочется - он ведь больше контроллера получается, вся прелесть миниатюрности теряется Еще один ньюанс замечен - если использовать вывод reset как выход, амплитуда на нем почти на 1V меньше (при питании +3.3V). Для меня это было не критично, но имейти ввиду. Если есть вопросы, вопрошайте. Макетка еще не разобрана, могу даже ченить проверить.
|
|
|
|
|
Apr 7 2011, 23:21
|

кекс
     
Группа: Свой
Сообщений: 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 слов__ памяти программ, какие компиляторы? какие Си?!
|
|
|
|
|
Apr 7 2011, 23:33
|
Гуру
     
Группа: Участник
Сообщений: 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, с оптимизацией каждого такта, и лишь тогда получится хоть что-то более-менее съедобное...
|
|
|
|
|
Apr 8 2011, 00:03
|

кекс
     
Группа: Свой
Сообщений: 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 кода проекта.
|
|
|
|
|
Apr 8 2011, 04:05
|

Частый гость
 
Группа: Участник
Сообщений: 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, что пртводит к трудностям, о которых я уже писАл.
|
|
|
|
|
Apr 8 2011, 07:45
|
Гуру
     
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Apr 8 2011, 13:26
|

кекс
     
Группа: Свой
Сообщений: 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-х каналах.
|
|
|
|
|
Apr 8 2011, 15:48
|
Гуру
     
Группа: Участник
Сообщений: 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-битным - получилось очень грустно. Намекну, что шкала логарифмическая, на начальном участке разрешение критично, и если отчесты для разных каналов близки, но не равны, будет совсем плохо.
|
|
|
|
|
Apr 8 2011, 16:02
|

кекс
     
Группа: Свой
Сообщений: 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 элементов рулит.
|
|
|
|
|
Apr 8 2011, 16:24
|
Гуру
     
Группа: Участник
Сообщений: 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 элементов ?
|
|
|
|
|
Apr 9 2011, 04:20
|

кекс
     
Группа: Свой
Сообщений: 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. Профайлер показывает 7.6млн свободных циклов в секунду, т.е. как и говорил ранее МК более 90% времени просто курит. Удачи.
|
|
|
|
|
Apr 9 2011, 09:24
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(defunct @ Apr 9 2011, 08:20)  Вы же подходите с другой стороны - "какая частота шим получится при заданной тактовой", вероятно кроме ШИМ ваш МК больше ничего не делает. Хватает ресурсов, чтобы принимать еще и управляющие команды. А на большее - там просто уже ничего нет... Цитата При тактировании МК 8Mhz - частота PWM в примере будет ~60Гц, если заметите мерцания - поздравляю, можете записываться в космонавты, т.к. ваше зрение явно лучше 1.0.  Посмотрите на китайские светодиодные гирлянды (фазовое управление на 100 Hz) - если не видите мерцание при малых яркостях - надо обратиться к окулисту. Аналогично с дешевыми светодиодными с емкостным балластом - мерцание совершенно дикое. Что же до "набросков" - совершенно не интересно. Вот когда попробуете реализовать "железе", поймете, что теория теорией, а вот к реальной жизни это отношения не имеет.
Сообщение отредактировал rx3apf - Apr 9 2011, 09:27
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|