Всем привет! Тут в смежной ветке уже как-то обсуждался вопрос касательно Atmel Studio и Proteus... но все меняется. Так вот Atmel Studio 7 и Proteus 8. Код под Atmega 8. В качестве файла-прошивки в Proteus выбран elf-файл. Проблема в следующем.... при дебаге кода в Proteus все строки кода маркированы набором ----- и пройти по коду не получается. Оптимизация кода в студии отключена. В чем проблема?
Уважаемые товарищи!
Тема наверху очень актуальна, а решения тут так и не было. У меня Atmel Studio 7, скачанная пару дней назад в официального сайта.
И попавшийся первым под руку протеус - версия 7.10 SP0
При попытке скормить протеусу elf - вижу почти во всем коде прочерки вместо адресов, ничего трассировать по этой ерунде невозможно.
Оптимизацию в студии выключил, debud level установил в -g3 (максимум), отдельно прописал формат командой -gdwarf-2.
Не помогает! Есть ли пути решения кроме как использовать старую версию студии?
Может быть можно как-то заставить ее сгенерировать coff? Вроде протеус его больше любит. А то я с elf уже намучался чтобы он вообще хоть какой-то код показал в окне исходника - нужно было закинуть все файлы в одну папку.
Вот вполне авторитетное заявление на эту тему, в конце сообщения.
Сами понимаете, все страницы не прочитаешь, а поиском всего не найдешь Вчера часов 6 гуглил, читал форумы и проверял разные варианты.
Значит дело таки в новых версиях компилятора... Ну, я подозревал что так и есть. Как странно, почему разработчики компилятора и разработчики Proteusa до сих пор никак не решили эту проблему? Хотя бы с одной стороны. Ведь самый новый Proteus все равно некорректно работает.
Вчера много и безрезультатно игрался с компилятором и линкером, запуская его вручную. Сегодня может быть разберусь как редактировать makefile и что в нем где указано и смогу, например, заставить новый компилятор выдать COFF файл вместо ELF, в компиляторе это предусмотрено и описано в документации, но я пока не разобрался.
Либо скачаю старую версию компилятора и придумаю как бы его прикрутить к новой студии... ну или буду вручную все компилировать.
Хочется найти какое-то решение получше, чем устанавливать две версии AVR (Atmel) Studio...
Может кто-нибудь подсказать? Допустим мне надо перенести часть кода из обработчика внешнего прерывания в основной цикл. Допустим я делаю так.
Код:
#include <avr/io.h> #include <avr/interrupt.h> char n; ISR (INT0_vect) { n=1; PORTB|=0x01;//поднимаем первую ножку, чтобы убедиться, что прерывание произошло } int main(void) { DDRB=0xFF; PORTB=0x00; DDRD=0x00; PORTD=0xFF; EICRA |= (1<<ISC01)|(0<<ISC00);// прерывание по заднему фронту EIMSK |= (1<<INT0); asm ("sei"); while(1) { if (n) { PORTB|=0x02;//вторая из основного цикла n=0; } } }
В итоге прерывание происходит, а код внутри условия if не выполняется. Пробывал разные вариации, ничего не получатся.
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Ошибки в AVR Toolchain 3.3.1.1020
Добавлено: Сб авг 04, 2018 07:46:12
Опытный кот
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
Опять оффтопик развели...
Ладно, у меня вопрос по теме. Подновил тулчейн к Студии 4.19, у меня стоял 3.3.0.710, поставил 3.3.1.1020 (последний из 3.3, который отдается из атмеловского архива Микрочипа). Появилось несколько новых камней, в частности, Меги 8a, 168pa, еще какие-то. Только вот .h-файлы для них с ошибками. Я обнаружил разночтения имён векторов. Например, у Меги 168PA вектор прописан USART__RX_vect (два подчеркивания между USART и RX вместо одного, как, допустим, у Меги 168P). Заглянул в Студию 6.2, так там USART_RX_vect (одно подчеркивание), из чего я сделал вывод, что в 3.3.1.1020 ошибка, а не нововведение. То же двойное подчеркивание присутствует в остальных USART'овских векторах, а также в векторе SPI. Ничего такого в студии 6.2 нет, подчеркивания везде одиночные.
Вот теперь пребываю в раздумьях. Что делать? Откатиться на 3.3.0.710 ? Вручную исправить найденные косяки? Залить в каталог AVR соответствующие .h из 6.2 или из отдаваемого из архива отдельного сборника хидеров 6.2.0.334 (тулчейн 3.4.4) ?
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Ставьте самый свежий тулчейн, кажется, 6.х.х уже давным давно есть. Там отличная оптимизация LTO и работа с константами в flash, как с обычными переменными, т.е. без необходимости применения функций pgm_read_xxx
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется... скушно, бабоньки!
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Пн авг 06, 2018 13:19:43
Опытный кот
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
Нет, к такому решительному шагу я еще не готов. То есть, конечно, когда будет время, я попробую подключить его, как предложил наш коллега oleg110592 на предыдущей странице, а пока я оставил 3.3.1, только заменил в нем содержимое каталога "AVR Toolchain\avr\include\avr\" укачанным из атмеловского архива Toolchain Archive Header Files[AVR8-bitToolchain(3.4.4)6.2.0.334]. Там в том зипе, кстати, не все файлы - кое что пришлось оставить из родного для 3.3.1. Вроде-бы все работает, мои старые проекты исправно компилируются и работают, ну и Мега8А стала доступна - иных неудобств от 3.3.0 я пока не испытывал...
Не знаете, нет ли в таком решении каких-либо скрытых граблей?
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
День Добрый! Подскажите что делаю не так. Суть в том чтобы после нажатия кнопки порт был активен хотя бы минуту. С таймером худо бедно разобрался с чужой помощью код набросали. Работает, ровно 6 секунд, дальше порт отключается.
Код:
volatile int16_t seconds; // Set prescale to 256 and start the timer TCCR1B |= (1 << WGM12) | (1 << CS12); // set compare for 1 second interrupts OCR1A = 0x7A11; // setup for compare interrupts TIMSK1 |= (1<<OCIE1A); //TIMSK1 |= (1<<ICIE1); // start the interrupts sei();
while (1) { switch(get_key()) { // Processing reaction of the button 1 case KEY1: ALARM_OUT_EN; seconds = 60; break; }
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Сб сен 01, 2018 05:37:07
Опытный кот
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
По приведенному куску программы сложно дать детальный совет. Какой МК ? Мега 48/.../328, да? Какая частота?
Первым делом следует проверить, действительно ли прерывания идут с частотой 1 сек? Прямо в программе прерывания инвертируем текущее состояние бита порта и смотрим на светодиод туда подключенный. Далее, считаем количество включений светодиода за минуту, должно быть 30.
Ну, и по логике программы. Я бы для запуска послал в счетчик секунд 62, а в таймерном прерывании при 61 в счетчике включил порт, при единице - выключил, а при нуле, как и сделано, оставил в счетчике ноль.
WDT, часом, не запущен?
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Подскажите пожалуйста,в режиме пошаговой отладки,на команде asm(sleep); выполнение программы останавливается, как и должно. А вот как теперь продолжить отладку?
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Вс сен 09, 2018 17:22:35
Опытный кот
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
Поставить брекпоинт на следующую за SLEEP команду, если ждется тайймерное прерывание, то просто сделать Run и подождать, может быть долго. Иначе взвести нужные биты в регистрах периферии, чтобы имитировать прерывание и сделать несколько шагов (step).
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Подскажите еще такой момент: переменная объявлена как uint8_t standby. В обработке прерывания по нажатии кнопки,она становится 1. А в основном коде если stantby!=0 исполняется программа,типа выключатель. Так вот,иногда при включении питания эта самая stantby становится 1,и код исполняется когда не нужно, ради эксперимента я даже запрещал прерывания результат тот же. Проблему удалось решить, инициализировав переменную нулем. При включении uint8_t stantby =0; Я так и не понял,по каким причинам ее значение при включении было не 0. И может ли содержатся мусор в переменных при включении?
Последний раз редактировалось vovik15 Чт сен 13, 2018 08:21:50, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения