Добрый день! Вы прошиваете прямо из CodeVision? У меня не получилось заставить CodeVision увидеть SPA0008. Подскажите, какие настройки программатора в среде надо сделать? Может тонкости какие-то есть?Alexl81 писал(а):Я лично программирую на языке Си. В программе CodeVision. Но прошиваю SPA0008.
Форум закрыт для публикаций и работает только для чтения.
Отзывы о работе магазина и товарах просим оставлять на сайте интернет-магазина https://ekits.ru
Отзывы о работе магазина и товарах просим оставлять на сайте интернет-магазина https://ekits.ru
AVR для начинающих.
Re: AVR для начинающих.
Re: AVR для начинающих.
Уважаемый Alexl81! Подскажите, как Вам удалось заставить работать CodeVision через SPA0008 ? У меня не вышло, к сожалению, хотя через AB программатор шьет без проблем. Версия CodeVision 1.25.9.Alexl81 писал(а):Я лично программирую на языке Си. В программе CodeVision. Но прошиваю SPA0008.
-
- Сообщения: 997
- Зарегистрирован: 10 окт 2010, 11:09
- Откуда: Россия, Свердловская обл., Екатеринбург
- Контактная информация:
Re: AVR для начинающих.
Здравствуйте. Т.к. спрашивают, как прошить? Подробно опешу, как прошить контроллер с помощью программатора SPA0008 другими .hex файлы. На примере возьмём программу Code Vision. Создаём в Code Vision свою программу (к примеру, Timer1) со всеми необходимыми настройками, сохраняем её (получаем Timer1.hex файл). Далее в Algorithm Builder создаём новый проект, в «опции проекта».
выбираем нужный контроллер, выбираем частоту CPU, настраиваем все «fuse bit».
жмём применить, и сохранить. Копируем свой файл в папку «C:\Program Files\Algorithm Builder\V544\COMM ADAPTER\ALG» стоит по умолчанию, в этой папке создается проект – который делали выше. Подключаем файл своего проекта, (может быть в формате .hex, .rom, .bin) в строке локального текстового редактора пишем «Load: Timer1.hex» (пример).
Сохраняем, жмем кнопку «Запуск с кристаллом».
В появившемся окне жмём кнопку «Старт».
Теперь файл Timer1.hex прошит в контроллер.
Re: AVR для начинающих.
Попробовал, все получилось отлично! Alexl81, спасибо за подробнейшую инструкцию!
-
- Сообщения: 997
- Зарегистрирован: 10 окт 2010, 11:09
- Откуда: Россия, Свердловская обл., Екатеринбург
- Контактная информация:
Re: AVR для начинающих.
Здравствуйте. Хотел поделиться, как настроить таймер. Прочитав несколько источников литературы, нашел более понятный способ настройки таймера в Code Vision (возможно кому-то пригодится). К примеру настроим таймер который тикает с частотой 1секунда. Откроем Code Vision, выберем генератор кода Wizard'.
По поводу числа рассмотрим по подробнее. Для нужной частоты тиканья подсчитываем число сравнения. 1000кГц(частота) / 1(нужное нам тиканье) = 1000 = 0х03E8 в шестнадцатеричном исчислении. Теперь это число вводим в поле Comp. A:, таймер будет срабатывать 1 раз в секунду. Вот что получилось. Далее нажимаем Generate program у нас генерируется начальный код. Теперь в код дописываем нужный нам код и всё. К примеру допишем х++.
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
Х++;
}
Теперь у нас каждую секунду будет инкрементироваться переменная х. Вроде всё. Удачных экспериментов.
На первой закладки выберем контроллер ATmega8535, и частоту CPU 1000000МГц (к примеру).
Далее на закладки Timer выберем Timer1.
В параметре Clock Value (значение частоты) выберем 1000кГц (без пред делителя частоты), в параметре Interrupt on (прерывание по) выберем стрелками «1» Compare A Match (сравнение), ставим галочку. Вводим в поле Comp. A: нужное нам число сравнения.По поводу числа рассмотрим по подробнее. Для нужной частоты тиканья подсчитываем число сравнения. 1000кГц(частота) / 1(нужное нам тиканье) = 1000 = 0х03E8 в шестнадцатеричном исчислении. Теперь это число вводим в поле Comp. A:, таймер будет срабатывать 1 раз в секунду. Вот что получилось. Далее нажимаем Generate program у нас генерируется начальный код. Теперь в код дописываем нужный нам код и всё. К примеру допишем х++.
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
Х++;
}
Теперь у нас каждую секунду будет инкрементироваться переменная х. Вроде всё. Удачных экспериментов.
-
- Сообщения: 997
- Зарегистрирован: 10 окт 2010, 11:09
- Откуда: Россия, Свердловская обл., Екатеринбург
- Контактная информация:
Re: AVR для начинающих.
Здравствуйте. Теперь давайте разберём подключение LCD (WH0802) в Code Vision. Открываем Code Vision, нажимаем шестерёнку Wizard. В первой закладке как обычно настраиваем тип контроллера, частоту тактирования.
Выбираем закладку Alphanumeric LCD, ставим галочку.
У нас появляется выбор Characters/Line (количество знаков в линии), т.к. WH0802 восемь знаков на линию, то выбираем цифру 8. Теперь выбираем, к каким ножкам контроллера будем подключать WH0802. Я использовал для примера SEM0007M-8535-16 у которого есть разъем для подключения WH0802. Ноги контроллера выбираем в соответствии со схемой модуля SEM0007M-8535-16. Вот как должно быть настроена для модуля SEM0007M-8535-16.
Далее рассмотрим как правильно выводить символы на экран WH0802. Для примера вывел 2 строчки.
Команда lcd_dotoxy(0,0); - указывает место расположения первого символа. К примеру если надо вывести с 3 символа, то будет выглядеть так: lcd_dotoxy(2,0); - заметим что цифра «0» означает первый символ, а цифра «2» третий символ. В программе Code Vision рус. алфавит не распознаётся (я не смог заставить выводить его). Поэтому чтоб вывести используем код из таблицы от WH0802, но для ввода кода используем команду lcd_putchar(), не нужно ставить кавычки (“ ”), просто вписываем цифры. А для вывода букв англ. алфавита используем команду lcd_puts(“ “) уже с кавычками. Для примера выведем в 1 строке «Привет. » (без кавычек), во 2 строке «Как дела» (без кавычек, на вопросительный знак не хватило место).
Ну вот вроде всё. Успехов в программировании.
-
- Сообщения: 997
- Зарегистрирован: 10 окт 2010, 11:09
- Откуда: Россия, Свердловская обл., Екатеринбург
- Контактная информация:
Re: AVR для начинающих.
Здравствуйте. Рассмотрим ШИМ на модуле SEM0007M-8535-16. ШИМ - это широтно-импульсная модуляция. Вот так выглядит сигнал на экране осциллографа.
Применение ШИМ позволяет 1) Регулировать мощность нагрузки. Коммутирующий ключ работает в импульсном режиме, меньше выделяется тепла на ключе, меньше потерь на ключе. 2) ЦАП (Цифро-Аналоговый Преобразователь) с помощью ШИМ вы можете выводить аналоговый сигнал, добавив простой ФНЧ (Фильтр Нижних Частот) резистор и конденсатор. Ну начнём. Запускаем Code Vision, жмём Wizard, настраиваем контроллер ATmega8535, CPU 1000000Гц.
Будем делать на Timer2 (8-бит), по даташиту видим что для Timer2 выход OC2 на ноге PD7. Можно применить и другие таймеры к примеру Timer0, Timer1 – по желанию. Вывод PD7 делаем на вывод.
Переходим на закладку “Timer2”, устанавливаем частоту “Clock Value” (я поставил 1МГц), “Mode” меняем на “Fast PWM top=0xFF”, выход “Output” ставим “Non-Inverted PWM” (Не инвертирующий), ставим галочку “Compare Match Interrupt” совпадение с регистром, указываем число в регистр “Compare” (я указал 0xFF).
Генерируем код, и всё готово. Вот часть программы, которая влияет на регулировку выхода.
Для примера подключим светодиод FYL-5013ED-E (оранжевый), через резистор 470Ом 0,25Вт. При выше указанных настройках ШИМ (OCR2=0xFF в десятичном это 255), светодиод будет гореть в полный накал.
Изменим OCR2 на 0x19 (в десятичном это 25). Светодиод заметно станет светить тусклее.
Теперь изменим OCR2 на 0x00 (в десятичном это 0). Светодиод перестанет светить. Точнее будет светится как накал, практически не видно.
Регулировку светодиода можно сделать от двух кнопок «+» и «-», которые меняют значения регистра OCR2. В контроллере ATmega8535 есть 4 ШИМ-а, которые могут регулироваться по раздельности. Ну, вот вроде всё. Всем удачи, и хороших результатов в программировании.
Re: AVR для начинающих.
Для баскома будет немного проще тот же пример:
upperline
LCD "Ёpёіeї"
lowerline
LCD "Kaє гe»a?"
http://robozone.su/2008/07/10/bascom-av ... plejj.html
upperline
LCD "Ёpёіeї"
lowerline
LCD "Kaє гe»a?"
http://robozone.su/2008/07/10/bascom-av ... plejj.html
-
- Сообщения: 997
- Зарегистрирован: 10 окт 2010, 11:09
- Откуда: Россия, Свердловская обл., Екатеринбург
- Контактная информация:
Re: AVR для начинающих.
И чем проще? То что вы написали, от этого LCD работать не будет. Тоесть надо ещё библиотеку. В Code Vision тоже библиотека, и назначаешь какой порт куда и всё.Demonizer писал(а):Для баскома будет немного проще тот же пример:
upperline
LCD "Ёpёіeї"
lowerline
LCD "Kaє гe»a?"
http://robozone.su/2008/07/10/bascom-av ... plejj.html
Re: AVR для начинающих.
Ну, если принципиально:
От этого работать будет)
Я бы задолбался каждый символ по-отдельности выводить
Код: Выделить всё
$regfile = "m8515.dat"
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
locate 1,1 : LCD "Ёpёіeї"
locate 2,1 : LCD "Kaє гe»a?"
Я бы задолбался каждый символ по-отдельности выводить

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей