AVR studio в вопросах и ответах
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Попробуйте 7 версию Proteus, мне кажется что у автора видеоуроков то же седьмая и сделайте все как у автора и должно заработать. Не могу сказать точно, но может в 8 есть какие то отличия мешающие запустить проект.
Все гениальное - просто
- Реклама
Есть специальные цифровые резисторы. Но и это в протеусе без необходимости, там есть специальные логические пробники, выполняющие роль светодиодов.
Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
Из этого вытекает ещё одна причина по которой у вас схема может "не работать" - 1 секунда работы контроллера может запросто оказаться одной минутой(или вообще 30-ю минутами) в реальном времени симулятора из-за нехватки вычислительных ресурсов на симуляцию схемы - поэтому имейте за правило не использовать ЛИШНИХ деталей, особенно нелинейных как полупроводники, где это возможно используйте специально упрощённые модели компонентов - цифровой(digital) резистор для подтяжек и т.д.
Не уверен, но там кажется даже цифровые транзисторы есть.
Смотрите в строке состояния симулятора, там после запуска отображается внутреннее время симулируемой схемы, и если там бегут не секунды а десятые доли секунды или вообще миллисекунды - ваша схема слишком сложна для данного железа, нужен процессор помощнее но как правило это слабо помогает.
Если симуляция вообще не запускается, смотрите сообщения симулятора - обычно это признак проблемы в моделях или тонких настройках симуляции - модель не получается построить из-за отсутствия земли в изолированном участке схемы или симуляция начинается сразу с необходимости слишком малого шага по времени для обеспечения нужной точности в какой-то из моделей компонента используемого в схеме.
Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
Из этого вытекает ещё одна причина по которой у вас схема может "не работать" - 1 секунда работы контроллера может запросто оказаться одной минутой(или вообще 30-ю минутами) в реальном времени симулятора из-за нехватки вычислительных ресурсов на симуляцию схемы - поэтому имейте за правило не использовать ЛИШНИХ деталей, особенно нелинейных как полупроводники, где это возможно используйте специально упрощённые модели компонентов - цифровой(digital) резистор для подтяжек и т.д.
Не уверен, но там кажется даже цифровые транзисторы есть.
Смотрите в строке состояния симулятора, там после запуска отображается внутреннее время симулируемой схемы, и если там бегут не секунды а десятые доли секунды или вообще миллисекунды - ваша схема слишком сложна для данного железа, нужен процессор помощнее но как правило это слабо помогает.
Если симуляция вообще не запускается, смотрите сообщения симулятора - обычно это признак проблемы в моделях или тонких настройках симуляции - модель не получается построить из-за отсутствия земли в изолированном участке схемы или симуляция начинается сразу с необходимости слишком малого шага по времени для обеспечения нужной точности в какой-то из моделей компонента используемого в схеме.
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
не пишите ерунду. Прочитал раза три Ваш пост, какая-то словесная диарея.Alexeyslav писал(а):Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
В Poteus есть особенности в моделировании, он не всегда правильно и точно моделирует и это нужно учитывать. Конечно программы вроде той о которой мы говорили он моделирует правильно.
Все гениальное - просто
Не много не понял, то есть мне нужно вместо батарейки подключить землю к светодиодам? А где она впротеусе? Не могу найти... И что обозначают мигающие синие и красные квадратики?модель не получается построить из-за отсутствия земли в изолированном участке схемы
- Реклама
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Скидываю в архиве рисунок, там пример подключения светодиода. А в левом боковом меню открыто где находится земля, выше над строчкой выбора земли - выбор выхода +5В. При подключении нагрузки к микроконтроллеру нужно использовать их, потому что при подключении к батарейке работать не будет.
- Вложения
-
- 1111.rar
- (39.72 КБ) 175 скачиваний
Все гениальное - просто
Квадратики на выводах контроллера отражают их логическое состояние - синий - "0", красный - "1", серый - "Z" или отключен/аналоговый вход.
CB1 Уррааа!) Заработало!) Благодарю 
=====
Вопрос возможно не по теме, за ранее прошу прощения.
Подскажите пожалуйста, тип файла S Source (можно так же открыть блокнотом) после компиляции в протеусе превращается в файл HEX. (либо elf). Это, как я понимаю и есть сама прошивка, верно?
А вот можно ли наоборот из hex-файла сделать S Source, (чтобы получился программный код, который можно подредактировать, скажем в протеусе...) ? Другими словами можно ли подправить уже существующую прошивку?
=====
Вопрос возможно не по теме, за ранее прошу прощения.
А вот можно ли наоборот из hex-файла сделать S Source, (чтобы получился программный код, который можно подредактировать, скажем в протеусе...) ? Другими словами можно ли подправить уже существующую прошивку?
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
*.S это не файл исходника в широком смысле, а только исходника на Ассемблере, причем, если я правильно помню, gnu-ассемблера.
Из *.elf-файла получить исходник проще, командой objdump. Причем возможно вернуть даже исходник на ЯВУ, на Си, например. Если скомпилировано было правильно, сохранятся и имена комментариев, и комментарии и т.п.
Из *.hex - только дизассемблировать, причем потеряются форматирование, комментарии, макросы, именованные переменные и прочее. Будет тупо набор команд. Достаточно ли у вас знаний чтобы в этом разбираться?
Из *.elf-файла получить исходник проще, командой objdump. Причем возможно вернуть даже исходник на ЯВУ, на Си, например. Если скомпилировано было правильно, сохранятся и имена комментариев, и комментарии и т.п.
Из *.hex - только дизассемблировать, причем потеряются форматирование, комментарии, макросы, именованные переменные и прочее. Будет тупо набор команд. Достаточно ли у вас знаний чтобы в этом разбираться?
знаний к сожалению не достаточно пока. А вот желание разобраться есть. Если можно на конкретном примере. Вот у меня например есть elf-файл. Мне необходимо увидеть его код и прочие команды на языке Си. Допустим проекта не имеется, а только сам файлик-elf. С чего начать, поэтапно?
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
если у вас только .elf файл то код на языке Си вы никогда не увидите
если же к .elf файлу есть исходники на Си, то можно увидеть привязку машинных инструкций к конкретным строкам кода на Си
так работает отладка
но получить из машинных кодов текст на языке Си не получится, чудес таких нет
если же к .elf файлу есть исходники на Си, то можно увидеть привязку машинных инструкций к конкретным строкам кода на Си
так работает отладка
но получить из машинных кодов текст на языке Си не получится, чудес таких нет
другими словами подправить "вытянутую" из МК прошивку невозможно? Только написать самому заново, так?
======
И еще вопрос возник: как выглядит код " одновременности"?) Допустим мне необходимо подать единичку только на две лапки МК но одновременно. Как это будет выглядеть в виде кода на языке Си в программе AtmelStudio?
======
И еще вопрос возник: как выглядит код " одновременности"?) Допустим мне необходимо подать единичку только на две лапки МК но одновременно. Как это будет выглядеть в виде кода на языке Си в программе AtmelStudio?
Последний раз редактировалось Олегыч1 Вт июн 14, 2016 12:12:29, всего редактировалось 1 раз.
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
Подправить можно на уровне ассемблера
Но нужно будет самому следить, чтобы всякие важные таблицы типа векторов прерываний не сьехали
Если вы собрались чужую прошивку править, будьте готовы к тому, что она может быть защищена от чтения
Но нужно будет самому следить, чтобы всякие важные таблицы типа векторов прерываний не сьехали
Если вы собрались чужую прошивку править, будьте готовы к тому, что она может быть защищена от чтения
отлично, значит все-таки это возможно. Я предыдущее подправил сообщение о вопросе об одновременности:)
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
Если ножки на одном порту то выставить единички одной командой сразу
Если на разных, то последовательно, разрыв по времени будет от одного до нескольких тактов MCU, на 16мгц такт это 62.5 наносекунды
Если на разных, то последовательно, разрыв по времени будет от одного до нескольких тактов MCU, на 16мгц такт это 62.5 наносекунды
Немного не понял... Допустим нужен сигнал одновременно на первой ножке МК и на второй (по имени PB0 и PB1)Если ножки на одном порту то выставить единички одной командой сразу
Вот такой способ не получился:
//Подать сигнал
PORTB = 0b00000001;
PORTB = 0b00000010;
//Выдержать время
_delay_ms(1000);
//Убрать сигнал
PORTB = 0x00;
_delay_ms(300);
А написать PORTB = 0x03 (0b0000 0011)?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
да, то, что нужно. Спаксибо!
==============
Теперь новая проблемка возникла. С программами вроде немного разобрался. В Протеусе все работает как и хотел. Решил прошить в реальности свой микроконтроллер. Прошил, все отлично. Но как теперь его правильно включить, чтобы мои светодиоды замигали наконец?)) При прошивке ножки МК атмега-8а по имени VCC и AVCC (7 и 20 лапки) были соединены воедино. При подаче питания на эти лапки светодиоды молчат. Зачем у МК вообще две этих ножки питания, а не одна? Две земли понятно-для удобства подключения (хочу в ту, хочу в другую подключусь), верно?
Надо ли отпаивать программатор от МК, а то он у меня припаян))
Программатор самый простой Громова с внешней подачей питания +5 вольт.
Анод светодиода подключил к ножке МК, катод светодиода к GND МК
Что неправильно делаю?
==============
Теперь новая проблемка возникла. С программами вроде немного разобрался. В Протеусе все работает как и хотел. Решил прошить в реальности свой микроконтроллер. Прошил, все отлично. Но как теперь его правильно включить, чтобы мои светодиоды замигали наконец?)) При прошивке ножки МК атмега-8а по имени VCC и AVCC (7 и 20 лапки) были соединены воедино. При подаче питания на эти лапки светодиоды молчат. Зачем у МК вообще две этих ножки питания, а не одна? Две земли понятно-для удобства подключения (хочу в ту, хочу в другую подключусь), верно?
Надо ли отпаивать программатор от МК, а то он у меня припаян))
Программатор самый простой Громова с внешней подачей питания +5 вольт.
Анод светодиода подключил к ножке МК, катод светодиода к GND МК
Что неправильно делаю?
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Выходы земли нужно подключать два, а не на выбор.
Про подключение микроконтроллера можно здесь почитать http://www.myrobot.ru/articles/mc_stab.php
Опять же нужно не забывать подключить выход Reset, а иначе то же микроконтроллер может не захотеть работать.
Прочитал сообщения про то как получить код из прошивки, можно только из hex файла получить код на ассемблере, а по другому никак.
Про подключение микроконтроллера можно здесь почитать http://www.myrobot.ru/articles/mc_stab.php
Опять же нужно не забывать подключить выход Reset, а иначе то же микроконтроллер может не захотеть работать.
Прочитал сообщения про то как получить код из прошивки, можно только из hex файла получить код на ассемблере, а по другому никак.
Все гениальное - просто
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
*.elf это не машинные инструкции, не путайте с *.hex или *.bin. Если elf-файл собран с отладочной информацией (флаг -gdwarf-2 в gcc)из него вполне можно достать исходный код, хотя и не напрямую и не полностью. Как я уже говорил, это делается утилитой objdump. В случае AVR команда выглядит какaxillent писал(а):если у вас только .elf файл то код на языке Си вы никогда не увидите
если же к .elf файлу есть исходники на Си, то можно увидеть привязку машинных инструкций к конкретным строкам кода на Си
так работает отладка
но получить из машинных кодов текст на языке Си не получится, чудес таких нет
avr-objdump -S file.elf > file.lss
тогда в file.lss будет и часть исходника на Си и его дизассемблерированный вариант. Разобраться и подправить можно.
Две (или более) земли нужны для обеспечения большего суммарного тока. По документации максимальный ток по линиям питания 200 мА. Для тоненьких проводничков, напыленных на кристалле, это много. Чтобы не нагружать эти проводнички сверх меры, питание подается на разные части кристалла с разных внешних выводов. С AVCC все еще немного сложнее. Этот вывод используется для запитывания всей аналоговой части - компаратор, АЦП и PC0-PC3, то есть без подачи питания все это может не заработать. Это сделано для того чтобы можно было питать ядро от менее "чистого" питания, чем АЦП, причем шумы от самого ядра на питание АЦП также не попадают. Таким образом можно увеличить точность преобразования.Зачем у МК вообще две этих ножки питания, а не одна? Две земли понятно-для удобства подключения (хочу в ту, хочу в другую подключусь), верно?
Надеюсь, резистор не забыли...Анод светодиода подключил к ножке МК, катод светодиода к GND МК
Привели бы полную прошивку (с нормальным форматированием и под спойлером!), схему и фото платы.


