|
ATTINY10, Программирование, прошивка |
|
|
|
 |
Ответов
|
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, 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% времени просто курит. Удачи.
|
|
|
|
Сообщений в этой теме
nicks80 ATTINY10 Apr 5 2011, 09:51 demiurg_spb Глянул, он таки поддерживается avr-gcc, но при раз... Apr 5 2011, 16:46 nk@ Цитата(nicks80 @ Apr 5 2011, 12:51) Уважа... Apr 5 2011, 17:44         demiurg_spb Цитата(defunct @ Apr 9 2011, 08:20) Профа... Apr 9 2011, 08:59         rx3apf Цитата(defunct @ Apr 9 2011, 08:20) Вы же... Apr 9 2011, 09:24          defunct Цитата(rx3apf @ Apr 9 2011, 12:24) Вот ко... Apr 9 2011, 15:45   rx3apf Цитата(defunct @ Apr 8 2011, 04:03) Там (... Apr 8 2011, 07:45 nk@ Мда, как ловко тема с tiny10 сползла на m16. Флуд ... Apr 10 2011, 15:23 Владивольт Цитата(nk@ @ Apr 10 2011, 18:23) Может кт... Apr 11 2011, 18:48 nicks80 Вот что сделал на ATtiny13
3 ноги под RGB шим
1 но... Apr 14 2011, 15:52 ARV Цитата(nicks80 @ Apr 14 2011, 19:52) Вот ... Sep 7 2012, 04:23 smk Тоже очень интересует вопрос как шить tiny10. Можн... Dec 7 2011, 16:08 usav Для ISP слишком мало ножек! Atmel придумал нов... Dec 8 2011, 18:03 Буратино Я вот такую схему сейчас собираю, надеюсь что-то п... Dec 8 2011, 18:30 smk Ну было бы интересно повторить, если все будет ОК... Dec 8 2011, 19:43 usav Что-то непонятна скорость SPI_RESET через 1мкФ, но... Dec 13 2011, 17:30 Буратино Цитата(usav @ Dec 13 2011, 20:30) Что-то ... Aug 30 2012, 13:42 Буратино Программирование ATtyny10
Купил клон USBasp. Прода... Sep 6 2012, 06:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|