|
|
|
|
24049 111 8 1 |
|
Опции темы | Поиск в этой теме |
05.09.2013, 23:40 | 81 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
В общем, разобрался я со свей проблемой мерцания при плавном "розжиге" диода PWMом с Тайни13.
Все оказалось просто - ей памяти не хватало. Ардуино говно Ну в плане функции analogWrite() так уж точно. Оказалось (ну для меня лично это открытие), что она "жрет" 120 тактов в то время как обычная прямая запись в порт только 4. Соответственно в Меге, где памяти относительно много, это не было проблемой. А у Тайни13 памяти почти нет и из-за этого начинались тормоза. Для Меги есть хереды с функцией digitalWriteFast(), загуглите. Там макросы для всех чтений и записей, которые драматически быстрее ардуиновских. Сейчас у меня на тайни все работает прекрасно и код меньше в 1.5 раза. Но пришлось почитать про прямую запись в порты - гемор, конечно и до конца так и не разобрался. |
06.09.2013, 00:13 | 82 | |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: Сегодня 18:21 Адрес: Тамбов
Сообщений: 4794
Сказал(а) спасибо: 649
Поблагодарили: 1887 раз(а) в 1165 сообщениях
|
Re: Немного о программаторах AVR
Цитата:
Без обид, но совать в неё ардуиновский код - я даже не знаю, как назвать, надо что-нибудь покурить покрепче, чтобы такое придумать |
|
06.09.2013, 01:06 | 83 |
Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24 Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях
|
Re: Немного о программаторах AVR
[Исправлено: INFERION, 06.09.2013 в 03:04] |
06.09.2013, 10:20 | 84 | |||||||||||||||||||
Завсегдатай Фонарёвки
Регистрация: 04.08.2012 Последняя активность: 15.01.2023 14:58 Адрес: Екатеринбург
Сообщений: 781
Сказал(а) спасибо: 83
Поблагодарили: 126 раз(а) в 81 сообщениях
|
Re: Немного о программаторах AVR
Цитата:
10 пин разъем
8 пин клипса
сопоставление 10 to 8 пин 1 --> пин 5 пин 2 --> пин 8 пин 5 --> пин 1 пин 7 --> пин 7 пин 8 --> пин 4 пин 9 --> пин 6 на 4,6 вроде бы висят Tx Rx порты меги (не уверен, вечером прозвоню) стандартный 8 пин шлейф который был с клипсой выкинул сразу вечером сфотаю то что у меня есть
__________________
Fenix E15 / Olight i1 / Nitecore SENS CR / Sunwayman C10R (5C1) Fenix PD32 / Zebra SC600w / Sunwayman C20C (S6 7D3) Convoy S2 / L2 (5C1) Zebra SC52w [Исправлено: censor, 06.09.2013 в 10:34] |
|||||||||||||||||||
06.09.2013, 12:12 | 85 |
Ветеран Фонарёвки
Регистрация: 16.10.2012 Последняя активность: 22.02.2022 02:51 Адрес: Киев, Украина
Сообщений: 4372
Сказал(а) спасибо: 687
Поблагодарили: 2977 раз(а) в 1380 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 13:40 | 86 | |||
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
Цитата:
Но у Ардуины одно преимущество - он прост. Я при свем интеллекте "выше среднего" откровенно затрахался в этими всеми регистрами и пинами. Принципы мне понятны и они логичны но реально геморно это все писать... Цитата:
Цитата:
Я открыл Ардуину и увидел: digitalWrite(pin, value). Все. Через 5 мин написал первую программу. Естественно, "моргалку" Когда я открыл гугл и даташит и прочитал про пины, регистры и т.п., то сам процесс минут 10 занял. Потом это все надо прикрутить к таймеру и ПВМ. Это в принципе ясно, но "что писать" - ХЗ. В итоге, кстати, я по-обезьяньи скопировал кусок кода и расставил в ужных мне местах. НО все же получил ровно обратное - там, где я в порт писал 0, лампа голела на 100%, а вместо разжигания затухала. В итоге тупо пеменял нули на 255 и наоборот и все заработало как надо. Думаю, что ПВМ инверсный получился или типа того. Короче, гемор. analogRead() так и оставил ардуиновский, благо и с ним "вытягивает" - времени и желания разбираться с чтением не было никакого. Хотя понимаю, что оно намного проще. Вот тебе плюсы ардуины - одна строка вместо 10. |
|||
06.09.2013, 13:59 | 87 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
Кстати, ребята написали макросами функции digitalReadFast() и подобные, которые, по сути, реализуют прямой доступ к портам и "стоят" практически столько же.
Но для Tiny они не работают. Я пока не понял, почему. Видимо, есть там инструкции, которые только в Меге. |
06.09.2013, 14:37 | 88 |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: Сегодня 18:21 Адрес: Тамбов
Сообщений: 4794
Сказал(а) спасибо: 649
Поблагодарили: 1887 раз(а) в 1165 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 14:53 | 89 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
Да вроде не так все страшно:
http://www.itisopensource.c... |
06.09.2013, 15:38 | 90 |
Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24 Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 15:57 | 91 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 15:58 | 92 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 16:26 | 93 |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: Сегодня 18:21 Адрес: Тамбов
Сообщений: 4794
Сказал(а) спасибо: 649
Поблагодарили: 1887 раз(а) в 1165 сообщениях
|
Re: Немного о программаторах AVR
Его не надо учить. Да и не стоит. Просто открывается таблица команд (она может отличаться от контроллера к контроллеру) и команды пишутся в столбик. Всё. Собственно это и есть то, что будет выполнять контроллер.
А если всё это записать в виде числовых кодов, то и компилятор не нужен |
06.09.2013, 16:30 | 94 |
Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24 Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 16:40 | 95 |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
INFERION, ога, но если это ПВМ, то там приготовления как к свадьбе
|
06.09.2013, 16:41 | 96 | |
Увлеченный
Регистрация: 18.08.2013 Последняя активность: 29.11.2015 13:52
Сообщений: 442
Сказал(а) спасибо: 11
Поблагодарили: 23 раз(а) в 23 сообщениях
|
Re: Немного о программаторах AVR
Цитата:
Есть для AVR таблица кодов? Я загуглю, но, может, у кого под рукой... |
|
06.09.2013, 16:42 | 97 | |
Увлеченный
Регистрация: 02.09.2013 Последняя активность: 28.05.2020 11:46 Адрес: колыбель космонавтики
Сообщений: 196
Сказал(а) спасибо: 49
Поблагодарили: 30 раз(а) в 22 сообщениях
|
Re: Немного о программаторах AVR
Цитата:
Вот пример Код:
.MACRO SelectModem1; cbi PORTB,0 ; сброс бита 0 порта B .ENDMACRO [Исправлено: mws, 06.09.2013 в 17:52] |
|
06.09.2013, 16:52 | 98 |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: Сегодня 18:21 Адрес: Тамбов
Сообщений: 4794
Сказал(а) спасибо: 649
Поблагодарили: 1887 раз(а) в 1165 сообщениях
|
Re: Немного о программаторах AVR
|
06.09.2013, 17:19 | 99 |
Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24 Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях
|
Re: Немного о программаторах AVR
В даташите есть всё, даже протоколы для прошивания. Но тут удобнее, на русском, и с примерами: http://www.gaw.ru/html.cgi/.... Хотя и не все инструкции (к примеру нет MOVW)...
Человеку, писавшему исключительно на ЯВУ, сложнее всего будет вкурить флаги статуса и работу с многобайтными переменными (когда необходимо эти флаги использовать). А так же проблемы с умножением и делением, поскольку придётся осознать, что подобные вещи в разных ситуациях оптимально делать по-разному, и инструкций делающих это непосредственно просто нет. А компилятор ЯВУ сам с такими задачами разбирается в меру своих возможностей... Система команд у AVR странная. Половину можно выкинуть, т.к. многие инструкции можно заменить другими. При этом у многих инструкций имеются различные ограничения из-за того, что требовалось впихнуть столько мусора в 2 байта. Т.е. жопой архитектуру делали. Причём маркетинговой, с громкими словами "много инструкций - гуд!", хотя даже Сишный компилятор только половину использует... Макросам так же можно передавать параметры, как и функциям. Макроассемблер хорошая штука, но реально мне ни разу ещё не надобился. Я вообще не люблю все эти абстрагирования, когда приходится держать кучу открытых файлов и постоянно скролить, чтоб что-то отследить... [Исправлено: INFERION, 06.09.2013 в 17:26] |
06.09.2013, 21:13 | 100 |
Ветеран Фонарёвки
Регистрация: 06.03.2013 Последняя активность: Сегодня 18:21 Адрес: Тамбов
Сообщений: 4794
Сказал(а) спасибо: 649
Поблагодарили: 1887 раз(а) в 1165 сообщениях
|
Re: Немного о программаторах AVR
|