- Чем бы прошить Xmega из командной строки через JTAGICE mkII или AVRISP mkII? До этого использовал программы из состава AVRSTUDIO4/CommanLineTools, но теперь нужно шить ATXmega64A4U, которой в старой студии нет. AlexG(121 знак., 27.09.2013 15:02, AVR, полностью)
- Нужно на atmega строго одновременно начать выдачу байта по двум разным УСАРТ. Есть ли возможности для этого? - Petrovich(26.09.2013 14:27, , AVR, полностью)
- Открытых клонов для DebugWire не появлялось? - LightElf(20.09.2013 13:50, AVR, полностью)
- Коллеги! Посоветуйте программаторы для прошивки МК в STK500. Есть желание использовать IAR, а дополнительно ставить только ради одной прошивки AVR Studio как-то не хочется. Спасибо! - Bill(25.09.2013 10:33, AVR, полностью)
- Никто не знает, почему первые образцы атмеги48 были на 24МГц, а теперь только до 20? Хочу 24МГц :) Сэкономил бы кварц и пару кондёров - Звероящер(24.09.2013 13:47, AVR, полностью)
- Продолжение истории. -> Как только я изменил логику управления по рекомендации rezident-а, у меня перестало нормально работать на LCD. VFD хавает. У меня все руки не доходили нормально разобраться. Начну, брошу. Сегодня ночью решил снова Mazur(1412 знак., 23.09.2013 10:05 - 10:46, AVR, ссылка, полностью)
- Как подружить usbasp и avrdude? Avrdude просит перекомпилировать его с поддрержкой USB (под Windows). Это можно как-то обойти? - Скрипач(20.09.2013 16:32, AVR, полностью)
- Как в AtmelStudio 6.0 обновить компилятор, не обновляя все остальное? - LightElf(19.09.2013 21:03 - 21:53, AVR, полностью)
- Не могу найти где в документации на ATMega указано какой ток можно брать наружу с ноги AREF соединенной с внутренним источником опорного напряжения 2.56в. - Petrovich(18.09.2013 14:06, , AVR, полностью)
- В разделе "ADC Voltage Reference": Note that Vref is a high impedant source, and only a capacitive load should be connected in a system. - Точка опоры(18.09.2013 14:16)
- Вход ОУ не потянет? - Petrovich(18.09.2013 14:29, )
- Думаю - да, но лучше с входным током поменьше взять. Кстати, можете и чуток поисследовать, взять резисторы (скажем 3.3М, 1.0М, 330к и 100к), замерить и нам всем сообщить. - Точка опоры(18.09.2013 15:12)
- Вход ОУ потянет. Для подстраховки можно взять JFET или MOSFET ОУ. Хотя для такой точности, как у встроенного REF, входные токи вреда не принесут. К тому же, не очевидно, что лучше - разориться на ОУ или внешний опорник, хотя бы TL431. - Лeoнид Ивaнoвич(18.09.2013 14:34)
- AREF заявлен только как вход внешнего опорного напряжения. - Лeoнид Ивaнoвич(18.09.2013 14:15)
- Подскажите, есть ли у AVR контроллер с возможностью обновления прошивки через USB или SDcard? Чтоб самому бутлодер не ваять - Ljutik1(17.09.2013 13:55, AVR, полностью)
- до чего же бестолковая нынче документация пошла :((( Касательно XMEG, например, читаем, что есть регистры, защищаемые от модификации (разблокировка происходит на 4 такта, записью сигнатуры в спец.регистр CCP), но нифига, нигде нет списка таких Adept(1161 знак., 11.09.2013 01:52 - 01:57, AVR, полностью)
- Cпец.регистр CCP ничего не разблокирует, а, наоборот, блокирует I/O-регистры на 4 такта! И это надо делать только перед записью в CLK, чтобы в этот момент не сглючило. Ну, и может быть еще перед записью в WDT и RST. - Ксения(11.09.2013 02:19 - 02:25)
- Может вы мне не поверите, но что называется "на зеркало пеняете". Или нет? Apтём(1316 знак., 11.09.2013 02:20 - 02:22)
- "..ну рожи-то у нас у всех - "будь здоров" (С) :)) про запись регистров через CPP - нихрена нигде не указано, Adept(501 знак., 11.09.2013 02:34)
- Про "флаги прерываний установленные вручную" хотелось бы послушать поподробнее. Попкорном запасся :)) - MBedder(11.09.2013 03:17)
- Бывает оно таки надо. Интересует не периферия, от которой прерывание, а собственно лишнее прерывание. Например, когда хочется продолжить обработку в несколько более низкоприоритетном прерывании начав на с высокоприоритетного. Просто сменить fk0(30 знак., 11.09.2013 08:44)
- "Слушать" и "попкорн" тут не поможет. Нужно РАБОТАТЬ, а именно - осваивать современные инстрУменты (IDE). В частности симуляторы от фирмы Atmel. AVRStudio либо Atmelstudio. - Apтём(11.09.2013 03:39)
- чё там слушать-то? крутим симулятор, когда надо ставим флаги, чтобы проверить, скажем корректность отработки хэндлеров, так вот это
падла редиска (студия) как-то не на все флаги реагировала. Сейчас уже и не припомню, как было дело, но было Adept(96 знак., 11.09.2013 03:26)
- Ну рожи-то да... :). Apтём(1049 знак., 11.09.2013 02:55)
- Вы конечно извините, здесь это офф, но мне приходилось читать мануалы и на 3000 страниц (суммарно) по DSP процессорам TI и ADI, да, долго и муторно, но иначе не понять ничего. - Alex68(11.09.2013 02:37)
- totem-pole - двухтактный выход, push-pull иначе. - Alex68(11.09.2013 02:15)
- Может ли узел кварцевого резонатора на 2 МГц у AtXmega256A3U потреблять 6 мА при 3,3В? Потребление при Reset 2.3мА, при 4 МГц - 8,4 мА, при изменении с 4 до 32 МГц возрастает на 15 мА что в 1,5 раза больше чем в pdf AU08(85 знак., 10.09.2013 02:26 - 02:28, AVR, полностью)
- ATmega128 программируется, читается и успешно выдаёт 49 вместо 31'250 Гц... Конденсаторы (22.6 и 22.7 пФ), кварц 16 МГц и переходные отверстия повторно пропаяны. Похоже "Изя всё"... - AU08(31.08.2013 20:06, AVR, полностью)reZident
- А есть в природе небольшие АТмеги у которых часовой таймер выполнен как отдельный блок регистров не подверженный общему аппаратному сбросу? Или, другими словами, как пересбросить AVR сохранив ход внутренних часов? Юра(10 знак., 01.09.2013 11:00, , AVR, полностью)
- оформить счетчик в секцию .noinit ? - zeleny(01.09.2013 20:45)
- А не проще тогда к авр внешний RTC прилепить? - Mazur(01.09.2013 19:40)
- А внешний таймер - сильно влом поставить. У Maxim/Dallas они есть. С последовательным интерфейсом в том числе. 8 DIP/SOIC не сильно много места займет. - tesla(01.09.2013 19:29)
- Аппаратный сброс - reset или wdt? Если reset, то все. А если wdt, то есть кристаллы, где сработку на wdt не сброс, а прерывание можно сделать. - mazur(01.09.2013 16:23)
- Мелких вроде нет, в каких-то XMega есть - MBedder(01.09.2013 12:28)
- Это хорошо, спасибо. Уже по скайпу начал убеждать руководство менять ориентацию с Атмела на ARM)) - Юра(01.09.2013 13:18, )
- У Atmel и АРМы есть. - tesla(01.09.2013 15:18)
- Ну, я не силен в номенклатуре Атмела. Про ARM - имел в виду STM32 - Юра(01.09.2013 15:43, )
- :-) "Мы говорим ARM - подразумеваем STM32!" Я бы на месте ARM обиделся :-))) - SciFi(01.09.2013 16:26)
- Я битый год STMы изучал, уже вкус ощутил) А щас чувствую что все забуду к чьей-то матери, изучая AVR. - Юра(01.09.2013 16:33, )
- А ты не забывай. Кстати, оно для мозгов полезно, програмить на разных архитектурах. Главное, решить задачу с минимальными издержками, а не сидеть на работе до 12 ночи, изучая STM. Лучше за это время подхалтурить. - tesla(01.09.2013 19:15)
- AVR хороши тем, что многого знать не надо. XMega чуть сложнее, но после прочих AVR адаптация не трудна. А STM32 - такие дебри, которые приучают новичка бездумно копипастить куски чужого кода, не вникая в то, как тот работает. - Ксения(01.09.2013 18:30)
- профессианальных МК пик24 есть часы - хи-хи(01.09.2013 14:45, )
- Переношу асмовские наработки на си. Очередные затруднения. Есть очередь таймеров в ОЗУ. Блоки по 3 байта. Первый байт-статус. Два - счетчик. Подобные конструкции у меня часты. Также есть наработки с памятью программ. mazur(4660 знак., 12.08.2013 21:35, AVR, полностью)MBedder
- Знаете, почему я на асме остановился на этом варианте программных таймеров? Нет ничего лишнего. Хватает почти на все. В моем случае значение просто декрементируется. Если мы берем другие варианты таймеров, то нужно класть в ОЗУ значение для mazur(104 знак., 24.08.2013 23:47)fk0
- Лично я использовал отдельные таймеры на "каждый чих" только в самом первом своем проекте. В дальнейшем везде использовал один таймер, отсчитывающий время в мс (меньше 1мс интервалов времени никогда не требовалось). - rezident(25.08.2013 00:10)
- Да, меньше 1 мс программные таймеры и не требуются. Тут уже разброс в несколько мкс, даже десяток-другой, вообще роли не играют. Потому что эти временные рамки - человеко-интерфейс. mazur(509 знак., 25.08.2013 00:50 - 00:52)
- Опять эти байты. Что, в этих ваших атмелах так туго с памятью? А ёжики плакали, кололись, но продолжали его есть. SciFi(198 знак., 25.08.2013 09:50)
- Вам уже не раз указывали на зашоренность ваших взглядов в отношении программирования. Нужно учиться рассматривать задачу на разных (в т.ч. и более высоких) уровнях абстракций. rezident(621 знак., 25.08.2013 01:07)
- У меня рассуждения были такие: раз нас не интересует разброс в несколько мс (а если критично, то уже подход другой), то и пусть это будет в одном месте. Чем в каждой задаче каждый раз проверять на каждый таймер на N-ое количество тактов дольше mazur(194 знак., 25.08.2013 01:03)
- Подразумевалось, что есть некая функция получения текущего времени timer(). И всё, больше ничего нет. Программа крутится в цикле, проверяет значение timer(), и когда подойдёт -- что-то делает. И так может несколько программ (псевдо)параллельно fk0(491 знак., 25.08.2013 00:56)
- Если хватает на всё, то нафига учить Си (нет, серьёзно)? А вот эти вот "2 байта" - это та самая "преждевременная оптимизация" (на самом деле эти два слова должны звучать жутко неприлично, типа "черножопый ниггер" для наших американских партнёров). SciFi(307 знак., 24.08.2013 23:55 - 25.08.2013 00:05)
- Про указатели: Ксения(2326 знак., 24.08.2013 20:46 - 21:52)
- Нужно не else после continue выкинуть, а изменить проверку условия на противоположную и выкинуть continue, иначе до ptr++ дело не дойдёт. Или так for( cnt = 0, ptr = Sys_Timers_Queue; cnt < ST_QUANTITY; cnt++, ptr++ ) Ну и ; после for() убрать, а зануда(16 знак., 24.08.2013 23:52, )
- Да, возможно вас что-то будет раздражать, но! Поймите, это для вас сейчас элементарщина. Для меня же все в си в новинку. Сейчас мне на асме проще реализовать многое. Но раз уж перехожу, поэтому... - mazur(24.08.2013 21:31)
- Вот результат на данный момент: mazur(24.08.2013 21:27)
- В данный момент для меня трудности во всех приведенных примерах и материалах по указателям имена чего-то там. Если на асме я просто указал начальный адрес Timers_Queue и смещение элемента скажем, EL_SIZE, статус+счетчик, 1+2=3, то в материалах и mazur(480 знак., 24.08.2013 21:13)
- А смысл? Получится тот же ассемблер, только на Си. Надобно Си использовать как ЯВУ (язык высокого уровня). Да, на первых порах сложно, SciFi(70 знак., 16.08.2013 17:09 - 17:13)
- Edit. Как указать размер элемента структуры? Если я неправильно выразился, поправьте. Скажем, есть: mazur(326 знак., 16.08.2013 15:17 - 15:32)
- 1) за u08, u16 и т.п. сжигать нужно -- используй стандартные типы данных. 2) заморачиваться и не нужно -- для размера любого типа есть sizeof(type name or variable name), размер массива можно узнать как sizeof(array)/sizeof(array[0]), смещение fk0(116 знак., 16.08.2013 16:12)
- За использование типов данных, размер которых не гарантирован нужно, перед созжением, долго-долго пытать калёным железом :) - Скрипач(16.08.2013 19:53)
- Твое возмущение понятно. Потому что на разных платформах разная разрядность. Не помню, чего именно. Но меня это сейчас не трогает, пока я пробую на AVR. Да и в лом писать каждый раз и искать, чтобы скопипастить unsigned char, unsigned int. Быстро mazur(26 знак., 16.08.2013 17:55)
- в стандарте написано что размеры short, int и long имеют не убывающую последовательность, те могут быть 8-16-32, а могут и 32-32-32. так что uint8_t, uint16_t, uint32_t и сжигай сколько хочешь. - Nikolay801_(16.08.2013 17:39)
- avrlibtypes.h: mazur(2233 знак., 16.08.2013 16:52)
- 1) и CMSIS сжечь - Vit(16.08.2013 16:16)
- Размер элемента массива Timers_Queue определяется его типом tmrs_queue. sizeof (tmrs_queue) даст вам размер элемента массива (размер структуры) в байтах. Или нужно что-то другое? - rezident(16.08.2013 15:50)
- Размер указать нельзя, но можно оставить в структуре резерв. Например, так: Ксения(179 знак., 16.08.2013 15:24 - 15:39)
- Если я правильно понял суть ваших затруднений, то обратите внимание на union. - rezident(16.08.2013 15:32, ссылка)
- ну ты спросил. уже 3 ответа на 3 разных вопроса - abivan(16.08.2013 15:28)
- где у Вас элемент размером 3 байта? для определения размеров используйте sizeof и offsetof - abivan(16.08.2013 15:26)
- эээ, а вопрос то в чем? ты объявляешь тип переменной - на основании объявленного типа под нее выделится нужный объем памяти. по большому счету неважно объявил ты ее отдельно или внутри структуры. Snaky(126 знак., 16.08.2013 15:24)
- объявление с выделением места struct {u08 st_flags; u16 st_cnt} Sys_Timers_Queue [ST_QUANTITY]; делается не в хедере Vit(1756 знак., 12.08.2013 23:12 - 23:19)
- Ага, а память под timer перед вызовом Sys_Timer_Append динамически выделять ? Для всяких там AVR и MSP - это не гуд. Да и вообще, для серьезных встраиваемых систем лучше на этапе компиляции знать, хватит ли оперативки. tesla(243 знак., 13.08.2013 00:29 - 00:44)
- Проще и быстрее проверить флаг, чем проверка на ноль. Я делал и большей разрядности таймеры. Таймерная служба только перебирае, проверяет флаг блокировки, декрементирует, и выставляет флаг таймаута, если отщелкало. Так как мне и этого хватило для mazur(86 знак., 12.08.2013 23:25)
- Непонятно зачем у вас локальная переменная volatile ? Apтём(367 знак., 12.08.2013 22:08)
- На данный момент мне нечем вас отблагодарить. Могу выложить пробное баловство. Там на ассемблере работа с моей таймерной службой, клавиатурой, дисплеем с видеопамятью (1 раз в мс в дисплей выплевывается символ, обновление экрана за 84 мс). Видео -> mazur(12.08.2013 21:48, youtube)
- Значит, вы доросли до массива структур :) Ксения(143 знак., 12.08.2013 21:43)