- Вопросы по переменным. mazur(6370 знак., 10.08.2013 21:29, AVR, полностью)Kceния
- Спасибо всем откликнувшимся. Вроде разобрался. Буду дальше копать. - mazur(11.08.2013 22:07)
- На пальцах Vit(2309 знак., 11.08.2013 09:38)
- Есть в WinAVR настройка, чтобы после ресета обнулялась вся ОЗУ? Или для этого свою функцию нужно писать? - mazur(11.08.2013 03:34)
- Как сделано в WinAVR, не знаю, но в IAR существует startup-код, который вставляется неявно перед процедурой main(). Он инициализирует области RAM константами и устанавливает указатели стеков. Часто он пишется на ассемблере. Наверняка, что-то Ксения(267 знак., 13.08.2013 15:29)
- Все глобальные (global) и статические (static) переменные обычно попадают в секцию, которая автоматически очищается (инициализируется нулями) еще до выполнения main, если только они не объявляются одновременно с инициализацией их явными rezident(694 знак., 11.08.2013 04:11 - 04:14)
- Настройки такой наверное нет, но свою функцию сразу после старта запустить можно: Apтём(441 знак., 11.08.2013 04:05)
- Интересно только, что означает это выражение Bill(51 знак., 12.08.2013 10:09)
- это ж константа, время исполнения не жрет - можно писать что угодно. ну и если вдруг захочется на 1 поменять - то все уже готово :) - ыыыы(13.08.2013 17:36)
- Я всегда пишу единообразно. Тогда не нужно ничего менять. Bill(183 знак., 13.08.2013 19:18)
- ИМХО, низковато. Вот еще вверх на полуровня абстракции - и хорошо. То есть в тексте программе должно быть то, что в Ваших комментариях: LED_OFF; LED_ON; ... А эти |= и &= пусть лежат в платформозависимом хидере. Не надо эти субпродукты на экран Юра(63 знак., 14.08.2013 00:21,
)
- И как именно вы предлагаете писать? - Bill(14.08.2013 07:10)
- Да пусть в том же хидере, где Вы указали, что #define LED_PORT PORTB и что #define RED_LED_PIN 6, - описать чуть ниже для удобной работы несколько строк вроде: #define RED_LED_ON LED_PORT |= (1 < < RED_LED_PIN). И все. Лучше сразу там описать Юра(897 знак., 14.08.2013 09:10,
)
- А что мешает к порту "привязать" еще что-то, например, Bill(246 знак., 14.08.2013 11:17)
- +1. Только косметики чуток добавляю - #define RED_LED_ON() do{ LED_PORT |= (1 < < RED_LED_PIN); }while(0) Vit(168 знак., 14.08.2013 09:21)
- do-while зачем? просто { } не достаточно? - abivan(14.08.2013 12:00)
- Нет, тогда я делаю функции inline. Не люблю пользоваться препроцессором. - Bill(14.08.2013 11:20)
- почему такая нелюбовь? препроцессор как управдом - друг программиста - Snaky(14.08.2013 11:27)
- А я наоборот, считаю inline-функции костылями и использую их только если без них не складывается - Vit(14.08.2013 11:26, ссылка)
- так и я так же поступаю. Просто я лучше оформлю манипуляцию с портом в виде inline функции, а не виде макроопределения с параметрами. Впрочем, все люди пишут исходя из своих собственных представлений и своего собственного опыта. А и представления, Bill(31 знак., 14.08.2013 11:57)
- Да, это просто две стороны одной медали. По большому счету неважно, под именем макроса или под именем инлайн-функции Вы скрываете внутренности операций. Удобная и наглядная упаковка (говорящая, но без лишних подробностей) + локальное место для Юра(20 знак., 14.08.2013 12:13,
)
- Я Вас не заставляю и не уговариваю. Просто когда пишешь для нескольких архитектур и под разные компиляторы, задалбывает запоминать различия синтаксиса. Но это полбеды, а вот когда Кейлу в зависимости от версии нужно ещё и прагму разную ставить - Vit(175 знак., 14.08.2013 12:12)
- не использовал инлайн потому как не было их у меня(не поддерживалось) да и сейчас не поддерживается в "моем" компиляторе. Вопрос для общего развития, так сказать, как использовать инлайн в разных модулях? В хедер поместить? - abivan(14.08.2013 12:05)
- Для наглядности. И чтобы представлять что туда писать нужно. Apтём(123 знак., 13.08.2013 03:10 - 03:29)
- Очень удобно, чтобы видеть, что в настоящий момент этот бит выключен. Не нужно комменты писать. - Vladimir Ljaschko(12.08.2013 10:20)
- Edit. Хедеры добавляются в другие файлы, если используются константы или переменные этого хедера? Не совсем понял правила добавления хедеров. mazur(138 знак., 10.08.2013 22:43 - 23:02)
- Прочие пожелания: Ксения(627 знак., 10.08.2013 22:48 - 22:51)
- -> - zeleny(10.08.2013 22:45, ссылка)
- Рыба для глобальных флагов Daniilvb(679 знак., 10.08.2013 22:18)
- Угу. Вроде получилось. extern если разные модули используют. static если в пределах одного модуля. Так? - mazur(10.08.2013 22:09)
- Не понял, зачем в одном файле несколько объявлений одной переменной. - Vladimir Ljaschko(10.08.2013 21:51)
- И ещё: Apтём(307 знак., 10.08.2013 21:51)
- есть правило: всегда старайся сделать минимально возможную область видимости. Если можешь вместо глобальной переменной использовать переменную, видимую только в пределах модуля - хорошо. Если можешь вместо переменной, видимой в пределах модуля, koyodza(33 знак., 10.08.2013 21:46)
- Объявляете "extern u08 st_flags;" в хидере, и включаете его во все модули проекта, которые st_flags используют. Однако заводите его "u08 st_flags;" только одном из модулей! И не в коем случае не в каждом. А вы, кажется, кучу клонов ему завели. Ксения(35 знак., 10.08.2013 21:38 - 21:40)
- Кто-нить в руках держал XMEGA-A4 MH ( в QFN) корпусе ?? Интересует что там у неё с ThermalPad ?? По даташиту (рисунку корпуса) оне вроде присутствует, но выводом не обозначен :(( Adept(391 знак., 01.08.2013 21:29, AVR, полностью)
- ATmega644PA в TQFP не коннектится с драконом по житагу студия пишет- failed to identify target. would you like to retry with external reset enabled? запаял второй камень - та же хрень . житаг исправный мега16 и 128-я шьются-отлаживаются без m16_home(32 знак., 27.07.2013 22:59, AVR, полностью)
- ларчик просто открывался. понизил питание меги до 4,3 В (впаял диод по питанию) и эта сука отозвалась. программирование/отладка по житагу - без проблем. видимо такова особенность Р серии. всем спасибо за соучастие. - m16_home(28.07.2013 23:40)
- А не может ли быть, что у этих ATmega644PA jtag в фузах отключен. Понимаю, что у фабричных экземпляторов такого быть не должно, но вдруг? Может быть через isp проверить, что у нее в фузах написано. Хотя бы не у той, что уже запаяна, а у другой. Ксения(454 знак., 28.07.2013 12:11 - 22:05)
- JTD установлен из программы в нём? Если так, то с дополнительной подачей !Reset'а от Дракона должно сработать. - Точка опоры(28.07.2013 19:47)
- У моего дракона при 3в питании "reset" не не держит уровень нуля (аналоговый ключ не то подгорел, не то просто такой был). Пришлось откусить даже резистор подтяжки. Может оно? - Гудвин(28.07.2013 00:07)
- Недавно пробовал, все работало. Может, проводок какой отпал? - Vladimir Ljaschko(27.07.2013 23:01)
- чтение калибровочных коэффициентов инструкцией LPM - есть какие траблы ?? Adept(378 знак., 24.07.2013 00:42, AVR, полностью)
- Не могу найти дырку в своём простом алгоритме. А желательно сделать это за пару часов. Суть: измерение оборотов, программно(старшее слово)-аппаратный(младшее слово) захват значения таймера . Юрий_СВ(3689 знак., 22.07.2013 15:51 - 16:52, AVR, полностью)
- Не думаю, что шибко большая дырка в голове, но лопухнулся :) Гудвин(1268 знак., 22.07.2013 17:40, AVR, полностью)
- у Atmega8 на OCR2 есть буферизация ? OCR1A/B - точно есть, по поводу OCR2 есть сомнения - в даташите не указано - zeleny(18.07.2013 22:18, AVR, полностью)
- Почему-то строка "rpm=1000000/rpm;" "помогает" выйти из цикла do/while. (WinAVR 2010 под AVR Studio). Никто не подскажет почему ? Юрий_СВ(1569 знак., 18.07.2013 17:10, AVR, полностью)
- так же все мучаю ATtiny13) Проблема возникла в следующем, на вход вывода подается импульсный сигнал частотой 10кГц, ширина положительного импульса 14 мкс. по прерыванию PCINT не реагирует, но вот переключившись на INT все как надо. в чем может Constantin24(61 знак., 18.07.2013 16:12, AVR)
- Можно ли в I-АR С версии 6xx использовать целые перемнные длиной 64 бита? И можно ли явно объявить только одну двойную переменную, чтобы остальные Long остались в разрешении 32 бита? - AU08(18.07.2013 00:07, AVR, полностью)
- Туплю с WinAVR (20100110). В симуляторе (студия 4.19) запускаю код: Chum_A(335 знак., 16.07.2013 17:49, AVR, полностью)
- У кого IAR AVR 6.10 и более поздние версии: в pgmspace.h реализована ли snprintf_P ? А то в 5.5 нету =( - MegaJohn(18.07.2013 00:52, AVR, полностью)
- Товарищи знатоки, предлагаю вашему вниманию код на си для ATtiny13, частота 9.6МГц. Хочу получить ШИМ периодом 1мс. все условно, числа взял для примера. в результате получается всегда лог 1 на выходе.хотя в нужных местах есть провал до 0. Constantin24(45 знак., 16.07.2013 19:22, AVR, полностью)Evgeny_CD
- Виноват, забыл про это написать. PINB.1 выбран для сравнения, и там все как надо без использования ШИМ, а просто дерганием вывода.. я пытаюсь на PINB.0 организовать ШИМ. так что смотрите на него. - Constantin24(17.07.2013 07:38)
подробно не вникал, при беглом просмотре возникли вопросы: после ответа rezident-a, вопросы оказались фичами, посему отменяются :) Hobo(584 знак., 16.07.2013 23:40 - 17.07.2013 00:51)
- Не могу не согласиться. Как- то нелогично в прерывании по переполнению намереваться дёргать вручную пин, который по идее должен управляться шимом. Аппаратный шим подразумевает, по крайней мере в кортексах то, что какой- либо вывод, будучи KLIM83(209 знак., 16.07.2013 23:48)
- Запись в регистр PIN приводит к переключению выхода в противоположное состояние. Про эту фичу AVR даже я, никогда их не использовавший, уже в курсе :) rezident(265 знак., 17.07.2013 00:13)
- Зачёт! Всегда однако и без этого обходился. Если на входе написано "вход"... Спасибо за фичу, про которую теперь и я, четыре года не использовавший АВР, уже в курсе ;) Сомневаюсь, впрочем, что буду использовать, поскольку MSP как- то больше KLIM83(13 знак., 17.07.2013 00:38)
- круто, я был не в курсе, и частенько скучал по 51-ой команде "CPL" :) так тогда там наверное почти правильная программа,а я тут ума леплю. Видимо был не прав - Hobo(17.07.2013 00:21)
- судя по шапке, код создан какой-то программой - автоматическим писателем программ. Как мне показалось, они пытаются шим ручным ногодрыгом на таймере реализовать, но каким способом-разбираться не стал - Hobo(16.07.2013 23:55)
- а что, на PINB.1 ШИМ? Там только при инициализации 0, а дальше вы в бесконечном цикле с 1 по прерыванию - DVV(16.07.2013 22:43)
- Запости код в тело с тегами <С> - Evgeny_CD(16.07.2013 20:17)
- Коллеги не шьётся по SPI партия atmega8535... Севастополь(163 знак., 16.07.2013 14:29,
, AVR, полностью)
- Флаг TOV0 микроконтроллера ATtiny13 Constantin24(94 знак., 12.07.2013 11:55, AVR, полностью)