Как в codevisionavr сделать hex файл

Обновлено: 04.07.2024

Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки

Справочная информация

Этот блок для тех, кто впервые попал на страницы нашего сайта. В форуме рассмотрены различные вопросы возникающие при ремонте бытовой и промышленной аппаратуры. Всю предоставленную информацию можно разбить на несколько пунктов:

  • Диагностика
  • Определение неисправности
  • Выбор метода ремонта
  • Поиск запчастей
  • Устранение дефекта
  • Настройка

Неисправности

Все неисправности по их проявлению можно разделить на два вида - стабильные и периодические. Наиболее часто рассматриваются следующие:

  • не включается
  • не корректно работает какой-то узел (блок)
  • периодически (иногда) что-то происходит

О прошивках

Большинство современной аппаратуры представляет из себя подобие программно-аппаратного комплекса. То есть, основной процессор управляет другими устройствами по программе, которая может находиться как в самом чипе процессора, так и в отдельных микросхемах памяти.

На сайте существуют разделы с прошивками (дампами памяти) для микросхем, либо для обновления ПО через интерфейсы типа USB.

Схемы аппаратуры

Начинающие ремонтники часто ищут принципиальные схемы, схемы соединений, пользовательские и сервисные инструкции. Это могут быть как отдельные платы (блоки питания, основные платы, панели), так и полные Service Manual-ы. На сайте они размещены в специально отведенных разделах и доступны к скачиванию гостям, либо после создания аккаунта:

Справочники

На сайте Вы можете скачать справочную литературу по электронным компонентам (справочники, таблицу аналогов, SMD-кодировку элементов, и тд.).

Marking (маркировка) - обозначение на электронных компонентах

Современная элементная база стремится к миниатюрным размерам. Места на корпусе для нанесения маркировки не хватает. Поэтому, производители их маркируют СМД-кодами.

Package (корпус) - вид корпуса электронного компонента

При создании запросов в определении точного названия (партномера) компонента, необходимо указывать не только его маркировку, но и тип корпуса. Наиболее распостранены:

  • DIP (Dual In Package) – корпус с двухрядным расположением контактов для монтажа в отверстия
  • SOT-89 - пластковый корпус для поверхностного монтажа
  • SOT-23 - миниатюрный пластиковый корпус для поверхностного монтажа
  • TO-220 - тип корпуса для монтажа (пайки) в отверстия
  • SOP (SOIC, SO) - миниатюрные корпуса для поверхностного монтажа (SMD)
  • TSOP (Thin Small Outline Package) – тонкий корпус с уменьшенным расстоянием между выводами
  • BGA (Ball Grid Array) - корпус для монтажа выводов на шарики из припоя

Краткие сокращения

При подаче информации, на форуме принято использование сокращений и аббревиатур, например:

Сокращение Краткое описание
LEDLight Emitting Diode - Светодиод (Светоизлучающий диод)
MOSFETMetal Oxide Semiconductor Field Effect Transistor - Полевой транзистор с МОП структурой затвора
EEPROMElectrically Erasable Programmable Read-Only Memory - Электрически стираемая память
eMMCembedded Multimedia Memory Card - Встроенная мультимедийная карта памяти
LCDLiquid Crystal Display - Жидкокристаллический дисплей (экран)
SCLSerial Clock - Шина интерфейса I2C для передачи тактового сигнала
SDASerial Data - Шина интерфейса I2C для обмена данными
ICSPIn-Circuit Serial Programming – Протокол для внутрисхемного последовательного программирования
IIC, I2CInter-Integrated Circuit - Двухпроводный интерфейс обмена данными между микросхемами
PCBPrinted Circuit Board - Печатная плата
PWMPulse Width Modulation - Широтно-импульсная модуляция
SPISerial Peripheral Interface Protocol - Протокол последовательного периферийного интерфейса
USBUniversal Serial Bus - Универсальная последовательная шина
DMADirect Memory Access - Модуль для считывания и записи RAM без задействования процессора
ACAlternating Current - Переменный ток
DCDirect Current - Постоянный ток
FMFrequency Modulation - Частотная модуляция (ЧМ)
AFCAutomatic Frequency Control - Автоматическое управление частотой

Частые вопросы

Как мне дополнить свой вопрос по теме CodeVisionAVR не генерит .hex-файл?

После регистрации аккаунта на сайте Вы сможете опубликовать свой вопрос или отвечать в существующих темах. Участие абсолютно бесплатное.

Кто отвечает в форуме на вопросы ?

Ответ в тему CodeVisionAVR не генерит .hex-файл как и все другие советы публикуются всем сообществом. Большинство участников это профессиональные мастера по ремонту и специалисты в области электроники.

Как найти нужную информацию по форуму ?

Возможность поиска по всему сайту и файловому архиву появится после регистрации. В верхнем правом углу будет отображаться форма поиска по сайту.

По каким еще маркам можно спросить ?

По любым. Наиболее частые ответы по популярным брэндам - LG, Samsung, Philips, Toshiba, Sony, Panasonic, Xiaomi, Sharp, JVC, DEXP, TCL, Hisense, и многие другие в том числе китайские модели.

Какие еще файлы я смогу здесь скачать ?

При активном участии в форуме Вам будут доступны дополнительные файлы и разделы, которые не отображаются гостям - схемы, прошивки, справочники, методы и секреты ремонта, типовые неисправности, сервисная информация.

Полезные ссылки

Здесь просто полезные ссылки для мастеров. Ссылки периодически обновляемые, в зависимости от востребованности тем.

Я только начинаю учиться. Хотел создать простой hex файл, а потом изменить его скачанным файлом и загрузить в МК.

написал вот так:

Код Вижн 2,05 выдаёт ошибку:

Я только начинаю учиться. Хотел создать простой hex файл, а потом изменить его скачанным файлом и загрузить в МК.

написал вот так:

Код Вижн 2,05 выдаёт ошибку:

Вместо ATtiny2313a.h нада tiny2313.h

А зачем такие сложности? нельзя ли просто залить скачаный файл?

_________________
«И всё-таки она вертится!»

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Код Вижн 2,05 выдаёт ошибку:

это из какого компилятора пример? во всех разные пути заголовочных файлов и названия.
вторая ошибка вытекает из первой.

_________________
В поисках истины человек развивается.

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

написал так - ошибка пропала.
Спасибо.

Приглашаем всех желающих 25/11/2021 г. принять участие в вебинаре, посвященном антеннам Molex. Готовые к использованию антенны Molex являются компактными, высокопроизводительными и доступны в различных форм-факторах для всех стандартных антенных протоколов и частот. На вебинаре будет проведен обзор готовых решений и перспектив развития продуктовой линейки. Разработчики смогут получить рекомендации по выбору антенны, работе с документацией и поддержкой, заказу образцов.

А как это сделать?

изменил свой hex файл на скачанный

Последний раз редактировалось Назим Сб янв 21, 2012 00:18:36, всего редактировалось 2 раз(а).

Приглашаем 30 ноября всех желающих посетить вебинар о литиевых источниках тока Fanso (EVE). Вы узнаете об особенностях использования литиевых источников питания и о том, как на них влияют режим работы и условия эксплуатации. Мы расскажем, какие параметры важно учитывать при выборе литиевого ХИТ, рассмотрим «подводные камни», с которыми можно столкнуться при неправильном выборе, разберем, как правильно проводить тесты, чтобы убедиться в надежности конечного решения. Вы сможете задать вопросы представителям производителя, которые будут участвовать в вебинаре


CodeVisionAVR среда разработки программ для микроконтроллеров. Хороший выбор для тех хочет научиться программировать микроконтроллеры. В интернете легко найти примеры, почти на все случаи жизни. В интернете много критики в адрес данной программы, не хочу спорить на этот счет. Могу сказать лишь одно, CodeVisionAVR позволяет получить результат быстро и просто, поэтому меня он полностью устраивает. Смело качаем и устанавливаем CodeVisionAVR, причем я рекомендую версию 1.25.9.

1. Запускаем CodeVisionAVR


Появится окно в котором выбираем Project (проект). На вопрос использовать мастер или нет отвечаем да



3. Появится окно мастера настроек, в котором переходим на вкладку вкладка Chip позволяет выбрать используемый микроконтроллер и его частоту. В данном примере выбран ATmega8 с частотой 8МГц. Остальные вкладки позволяют настроить периферию, более подробно будет разобрано в последующих статьях.


5. Сохраняем исходный файл .с, файл проекта .prj и файл мастера проекта .cwp.

6. Появится окно для редактирования исходного текста


7. Наша задача вычистить код и привести его к следующему виду:

8. Разбираем оставшийся код:

Это минимальная программа, пустой шаблон си, с которым мы будем работать в дальнейшем.

24 комментария: Создание проекта в CodeVision AVR C Compiler

Уважаемый админ скажите пожалуйста как можно написать код программы чтоб она работала некоторое время и стералась с мк или переставала работать

элементарно, выполняете программу, записываете в еепром бит и при следующем запуске если бит установлен то программа выполняться не будет

CodeVisionAVR

Итак приступим. Создать проект можно двумя способами:

  1. С нуля, записывая в ручную все необходимые заголовочные файлы, функцию main, конфигурирование портов и т.д.
  2. Использование мастера кода (CodeWizardAVR). Очень хороший и приемлемый вариант, но в процессе работы мастера формируется большое количество ненужного кода, который впоследствии приходиться редактировать.

Ниже приведен программный код сформированный мастером кода. Вкладки остаются без изменений кроме Chip:

CodeWizardAVR

Все управляющие элементы окна CodeWizardAVR позволяют настроить параметры создаваемой заготовки программы.

This program was produced by the

CodeWizardAVR V1.25.3 Professional

Automatic Program Generator

Company : Programming Cu

Chip type : ATmega8

Program type : Application

Clock frequency : 4,000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

// declare your global variables here

// declare your local variables here

// Input/Output Ports initialization

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=T State5=T State4=T State3=T State2=T State1=T State0=T

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

// External Interrupt(s) initialization

// Timer(s)/Counter(s) Interrupt(s) initialization

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

// Place your code here

Как видно, много пустого кода, который приходиться удалять. Вообще в действительности CodeWizardAVR помогает создавать код, не занимаясь ручным набором. Приведу программный код сгенерированный CodeWizardAVR, где будет использована вкладка USART – включим работу передатчика, разрешим обработчик прерывания по окончанию передачи:

CodeWizardAVR, настройка USART

// USART Transmitter buffer

unsigned char tx_wr_index,tx_rd_index,tx_counter;

unsigned int tx_wr_index,tx_rd_index,tx_counter;

// USART Transmitter interrupt service routine

interrupt [USART_TXC] void usart_tx_isr(void)

if(++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;

// Write a character to the USART Transmitter buffer

void putchar(char c)

if(tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))

if(++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;

// Standard Input/Output functions

// Declare your global variables here

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: Off

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud rate: 9600

// Global enable interrupts

// Place your code here

Лишний код был удален, оставлен только необходимый. Как видно мастер создал довольно объемный код, который особо и не хотелось вводить вручную.

Обработчик прерывания по завершению передачи:

interrupt [USART_TXC] void usart_tx_isr(void)

// некоторый программный код для обработчика

Инициализация модуля USART:

Разрешение глобального прерывания:

Объявление переменных для хранения значений:

unsigned char tx_wr_index,tx_rd_index,tx_counter;

unsigned int tx_wr_index,tx_rd_index,tx_counter;

Стандартные типы данных языка С

Беззнаковый символ или логическое значение

Unsigned Long int

Беззнаковое длинное целое

Создадим проект без CodeWizardAVR.

Запускаем приложение CodeVisionAVR C Compiler. Если открылся какой-либо проект, то его закрываем: File -> Close Project.

В форме create new project выбираем Project (проект), на предложение создать код с помощью мастера – жмем кнопочку No.

CodeVisionAVR - создание нового проекта

Сохраняем проект как Prog1.

сохранение проекта в CodeVisionAVR

Выбираем микроконтроллер, определяем частоту кварца и, нажимаем OK:

настройка проекта CodVisionAVR - выбор чипа и тактовой частоты

Список File Output Format(s) определяет, какие файлы будут созданы при компиляции проекта. Наиболее интересны два файла: откомпилированный файл HEX, который «зашивается» в микроконтроллер и откомпилированный файл COF, который можно открыть в среде AVR studio и с помощью симулятора проанализировать работу программы.

Снова выбираем File -> New и File Type -> Source (Исходный текст программы). Появилось пустое окно кода, сохраняем его как Prog1.c.

Открываем окно Configure Project и на вкладке Files добавляем ранее сохраненный файл Prog1.c:

добавление файлов в проект CodeVisionAVR

Теперь в окне кода набираем любой необходимый код (соблюдая синтаксис языка), в зависимости от решаемой задачи:

код на Си для AVR

Компилируем проект, для выявления всевозможных ошибок и предупреждений компилятора. В процессе компиляции создается исходный файл ассемблера Prog1.asm, который можно открыв редактором просмотреть и ввести необходимые изменения. На стадии компиляции файлы COF, ROM, HEX, EEP не создаются.

Выполняем окончательную сборку проекта , при этом создаются готовые к употреблению файлы COF, ROM, HEX, EEP.

Если создается проект с помощью мастера кода (CodeWizardAVR), после необходимых установок на вкладках (USART, ADC, работа с термодатчиком и т.д.), то в меню file мастера выбираем Generate, Save and Exit, и выполняем необходимые сохранения! Посмотреть предварительно какой код создаст мастер, можно выбрав в меню file командную строчку Program Preview!

CodeWizardAVR - generate, save end exit

Заголовочный файл header на atmega8, содержащий символьные мнемоники всей архитектуры микроконтроллера – (адреса портов, счетчиков, аналого-цифрового преобразователя, приемопередатчика и т.д.):

В предыдущей части статьи я рассказывал про прошивку МК с помощью программы PonyProg, теперь расскажу как прошить с помощью CodeVision AVR (далее CVAVR). Честно говоря, работа в программе не сильно отличается от PonyProg.

Для начала можете микроконтроллер поставить в панельку программатора, и подключить его к LPT порту, затем подавайте питание.

Запускаем программу CVAVR

CodeVision AVR

1) Сначала нам нужно настроить порт, заходим в меню Settings -> Programmer.

CodeVision AVR

Откроется окошко, все настройки выставляем как на рисунке ниже

CodeVision AVR

2) Нажимаем ОК, далее заходим в меню Tools -> Chip Programmer

CodeVision AVR

Откроется следующее окно:

CodeVision AVR

Ничего лишнего в этом окошке не трогаем, галочки не ставим и ничего не переключаем.

3) Выбираем нужный нам микроконтроллер из выпадающего меню, я выбрал ATmega8. Если у вас в названии микроконтроллера после ATmegaX стоит буква, к примеру V или L, то в списке выбирайте такой же МК, с такой же буквой.

4) Теперь нам нужно открыть файл прошивки, в этом окошке нажимаем File -> Load FLASH

CodeVision AVR

5) Откроется окно, где нужно будет выбрать файл прошивки с расширением .hex, кстати, не забудьте внизу из выпадающего меню "Тип файлов" выбрать этот тип файла.

CodeVision AVR

6) Файл EEPROM выбираем точно так-же, для этого нажимаем меню File -> Load EEPROM, расширение этого файла .eep, если к вашему проекту такой файл не прилагается, значит нужно прошивать только FLASH т.е. .hex.

Имейте ввиду, что процессы прошивки программы, фьюзов
и ПЗУ (EEPROM) это самостоятельные отдельные процедуры.
И рекомендуется шить сначала программу, затем ПЗУ, затем фьюзы, в принципе что у нас и происходит, когда мы загружаем все файлы для прошивки, и выставляем фьюзы в окошке.

7) Итак, файлы прошивки мы загрузили, теперь нам нужно выставить фьюзы, для моего проекта фьюзы следующие: BOOTSZ1, BOOTSZ0, SUT1, CKSEL3, CKSEL2, выставляем их.

CodeVision AVR

8) Затем ставим галочку Program Fuse Bit(s), если вы не поставите галочку – фьюзы не будут записываться.

Чтобы проверить, видит ли наша программа программатор, подключенный к LPT порту, нажимаем кнопку Reset Chip, на программаторе должны мигнуть светодиоды чтения/записи. Если светодиоды не мигают, значит нам нужно проделать операции после пункта 6, описанные в предыдущей части статьи.

9) Теперь можно прошить МК, нажимаем кнопку Program All, и начнется процесс прошивки.

CodeVision AVR

CodeVision AVR

Если вы загружали только файл прошивки FLASH, .hex, то по ходу прошивки программа предложит загрузить файл EEPROM, жмем NO, т.е. НЕТ.

CodeVision AVR

После чего пробегут еще 2 полоски и процесс прошивки завершится

CodeVision AVR

Во время прошивки МК нельзя выключать или перезагружать ПК!

Теперь можете проверить МК, поставив его в панельку вашего устройства. Если вы хотите записать другую прошивку на этот же МК, новую прошивку можно записать поверх старой, или же стереть сначала старую, потом записать новую, как вам удобнее, разницы особой нету.

11) Чтобы стереть данные с МК нажимаем Program -> Erase Chip.

CodeVision AVR

CodeVision AVR

В данной программе можно считать данные FLASH или EEPROM с МК, или просмотреть Lock биты, установленные Fuse биты. Все это в меню Read (считать).

Решение некоторых проблем с AVR

C разными программаторами, и с разными программами возникают разные ошибки, но некоторые ошибки между собой очень похожи, и устраняются одинаково. Во первых микроконтроллеры подключайте строго к указанным выводам: RESET, VCC, GND, MOSI, MISO, SCK. Если спутаете вывода, или забудете припаять один из контактов, МК не прошьется. Случайно МК в панельку можно поставить спутав вывода, т.е. задом на перед, от этого МК не сгорит, но и не прошьется конечно тоже. Напомню еще раз, что у некоторых МК, например в ATmega 64 и 128 вывода MOSI и MISO не применяются для ISP программирования, вместо них вывода MOSI подключают к ножке PE0, a MISO к PE1. Напряжение питания не должно быть ниже чем нужно, иначе МК не будет программироваться, программы будут выдавать ошибки о том, что не могут обнаружить МК.

CodeVision AVR

CodeVision AVR

Записывать левые программы, например программу, предназначенную для ATmega8 в ATmega48 нельзя. Бывает, что вы запрограммировали МК и файлы прошивки удалили с компьютера, а найти прошивку чтобы прошить другой МК не можете найти. В таких случаях просто считываете программу с микроконтроллера, например с помощью CVAVR и сохраняете его на ПК, затем этой прошивкой прошиваете другой МК.

Если вы случайно запрограммировали какой то фьюз, после чего МК залочился, вспомните, что это был за фьюз, некоторые МК с неправильно зашитыми фьюзами удается восстановить, есть несколько способов как это сделать. На К155ЛА3 можно собрать генератор чтобы восстановить МК с запрограммированным RSTDSBL, если вы выставили фьюзы на работу от внешнего генератора, подавая сигнал на вывод XTAL1 некоторые умудряются таким способом восстановить МК. Также фьюзами можно выставить тактирование от внешней RC цепочки. В таком случае придется собрать RC цепочку, чтобы опять запустить МК. Ещё есть фьюзы DWEN, SPIEN. установив которые, вы отключите возможность пользоваться ISP программатором, тут поможет только параллельный программатор, другие программаторы (к примеру тритон) или приборы, которые встречаются на просторах интернета: например этот, или ATmega Fusebit Doctor, данный прибор я собирал, но почему то он не заработал должным образом, плата все еще валяется где то в ящике, как нибудь снова надо взяться за него. Честно говоря, у меня до сих пор валяются три залоченных микроконтроллера, две меги48 и одна мега8, однажды мегу 8ю, которая перестала определяться в программаторе PonyProg (работает через COM порт) я восстановил собрав программатор STK200. Притом знаете ли, свой первый купленный микроконтроллер я прошил с первого раза, и он до сих пор работает у меня в лабораторном блоке питания.

Читайте также: