Курс: программирование AVR

 
1 2 3 4 5 6 7 12
RU termostat #18.03.2004 12:02
+
-
edit
 

termostat

аксакал

Продолжение ! предыдущая, 20-я страница 1-й части:

Форумы Авиабазы

Нчало 1-й части:

Курс: программирование МК AVR "с нуля"


Прочитать 1-ю часть топика целиком (очень советую!!!):

Форумы Авиабазы

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

"Курс МК" - avr123.by.ru одним файлом для офф-лайн чтения

на 4й страничке курса avr123.by.ru есть линк: "avrnews"
по нему кликаешь и качается зип 448 кБ

Качайте, читайте.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

как поставить компилятор Си CodeVision для AVR:

Форумы Авиабазы

примеры программ на Си из пакета CV, для ознакомления (28 кБ):

Форумы Авиабазы

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Очень хороший компилятор Си для AVR от ImageCraft




скачивайте наздоровье:

ICCAVR DEMO VERSION (будет работать без ограничений 45 дней!)

ftp://ftp.imagecraft.com/pub/pub/iccavrdem.exe


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Проверить работу вашего устройства, можно не имея копонентов
и не делая пайки, с помощью - софт эмулятора AVR - VMLAB от AVR simulator, debugger and IDE with WinAVR support

Как установить и настроить эмулятор VMLAB в пркрепленном файле (58 кБ)
Форумы Авиабазы


\\\\\\\\\\\

Бесплатно заказать МК AVR можно на сайте производителя Atmel:

http://www.atmel.com/forms/Samples.asp?family_id=607

Вашу заявку передадут дистрибуторам, они попросят описание вашего проекта.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Начните с чтения ДатаШит на МикроКонтроллер который хотите использовать!

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Если все прочитано, и есть вопросы, задавайте!


Это сообщение редактировалось 10.04.2004 в 03:02
RU ДмитрийК #18.03.2004 23:06
+
-
edit
 

ДмитрийК

новичок
Тех кого интересует , я тот же дмитрий что был в прошлом форуме, но что то случилось с моей регистрацией решил перерегистрироваться.
Уважаемый термостат благадарю за примеры по работе с АЦП, но если вас не затруднит, раскажите как красиво можно обработать сигнал с кнопок. Красиво в том смысле, что теорию я знаю, и даже что то получалось, но 7 строк кода для одной кнопки это по моему многовато, может у когото есть действительно красивое решение.
 
RU termostat #19.03.2004 09:53
+
-
edit
 

termostat

аксакал

ДмитрийК, 18.03.2004 23:06:09 :
7 строк кода для одной кнопки это по моему многовато, может у когото есть действительно красивое решение.
 


Я тоже начинающий...

Не стоит боятся количества строк кода, главное чтоб они писались, а со временем будет получаться компактнее.

Кнопки могут быть разными, например МК ждет нажатия кнопки ничего не делая, тогда это "поллинг" (или "опрос") вывода к которому подключена кнопка.

Если же МК что-то делает и по нажатию кнопки должен отреагировать - то кнопку подключают к выводу МК способному генерировать прерывание, например INT0 INT1 и т.д.

1. в примерах программ на Си из пакета CV:

Форумы Авиабазы

есть пример КейПэд - это матрица 4х4 как в телефонах, всего 16 кнопок. Какая кнопка нажата выводится на LCD. Результат можно увидеть в эмуляторе.

2. Вот отрывок програмы "поллинга" кнопок из Апликейшн Ноут ATMEL AVR335

"AVR335: Digital Sound Recorder with AVR and DataFlash"

3 кнопки "нажатие - замыкает на землю" подключены к выводам: PD0 PD1 PD2 МК at90s8535:

мой комментарий и программа в файле (1.5 кБ):
Прикреплённые файлы:
button.zip (скачать) [1,5 кбайт, 194 загрузки] [attach=29982]
 
 

weris

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



есть вопрос,
как физически прицепить ЛСД к МК 8535
т.е. какую ногу куда не могу найти

ЖК нуже 2х16-24символов, или 4х16-24 символа
ЖК желательно из тех которые естьт в чипдип, чипинфо
 
RU termostat #19.03.2004 13:56
+
-
edit
 

termostat

аксакал

weris, 19.03.2004 12:08:38 :
как физически прицепить ЛСД к МК 8535
т.е. какую ногу куда не могу найти
 


Блин! ну тыж читай ссылки что я даю. ПРИМЕРЫ к CodeVision см. файл Lcddemo.c

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

weris

новичок
Блин! ну тыж читай ссылки что я даю. ПРИМЕРЫ к CodeVision см. файл Lcddemo.c

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


ок

тогда одинаково ли будет для всех чтоли?
меня интересует:
такой



кстати,
по совету опытного программиста
проверку антидребезга лучше делать несколько раз
ориентировачно 5-9раз с интервалом 15-25мс
получается фильтр-антидребезг
 
RU termostat #19.03.2004 14:35
+
-
edit
 

termostat

аксакал

weris, 19.03.2004 14:23:43 :
тогда одинаково ли будет для всех чтоли?
меня интересует:
такой
 


Для этого да, и для всех в которых контроллер HD44780 или клон.

weris

новичок
termostat

спасибо!!!
вопросов больше пока нет
сегодня ночью попрообую вывод инфы нужной на ЖК

 
RU ДмитрийК #19.03.2004 22:48
+
-
edit
 

ДмитрийК

новичок
weris, 19.03.2004 14:23:43 :
Блин! ну тыж читай ссылки что я даю. ПРИМЕРЫ к CodeVision см. файл Lcddemo.c

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


ок

тогда одинаково ли будет для всех чтоли?
меня интересует:
такой



кстати,
по совету опытного программиста
проверку антидребезга лучше делать несколько раз
ориентировачно 5-9раз с интервалом 15-25мс
получается фильтр-антидребезг
 


это зачем такая хитрость с проверкой состояния кнопок, ты что собираешся оголенными проводами сигналы посылать? по своему опыту скажу что лучшие кнопки это мп2, отечественные, из концевиков, хоть не самые маленькие зато без дребезга(практически) и можно сказать вечные, невидел ни разу ни одной "дохлой".
 

weris

новичок
привет всем

значит так,
попробовал работу с ЛСД - нифига не вышло,
не смог ни один из примеров запустить,
поделитесь ктот делал прооектом для ВМЛаб
evgeniy_verismail.ru

все делаю на ВМЛаб + ВинАВР

и второй момент,
сделал двухканальный АЦП на 8535
АЦП работает нно есть один глюк,
двигая один из двух подключенных слайдеров - меняется напряжение на входах PA0 или PA1 - и включается линейка из 4-х светодиодов
для PA0 - д7 д6 д5 д4
для PA1 - д0 д1 д2 д3
чем больше напряжение на входе - тем больше горит светодиодов
так вот глюк в том, что для PA0 - все Ок,
а для PA1 - то же самое, но при V(PA1)=0 не тухнет первый диод
не выполняется условие проверки, хз почему - код для обоих частей одинаков
попробуйте - может кто поправит

в архиве проект ВМЛаб+ВинАВР
Прикреплённые файлы:
ADMUX_2ch.rar (скачать) [27,59 кбайт, 86 загрузок] [attach=30293]
 
 
 
RU termostat #21.03.2004 11:53
+
-
edit
 

termostat

аксакал

Дык. В разных компиляторах по разному бкдет. (как и под вынь32 програмирование).

Ты же видишь текст только файла .с а что в подключаемых *.h не видишь

А заголовки *.h в разных компиляторах по разному реализованы.

Вот если ты возьмешь текст на Си после препроцесора (например из листинга программы асм + си создаваемого при компиляции) в котором уже включены все заголовки и учтены дефайны - тогда он будет транспортабелен на АНСИ компиляторы.

А так ищи пример LCD под WinAVR, их куча в сети.

А лучше поставь себе CodeVision он не большой 2.5 Мб для скачки.

Вот прицепил провереные мной примеры LCD с эмуляцией в VMLAB (готовлю новую задачу в курс).

Прикреплённые файлы:
LCD_test.zip (скачать) [49,74 кбайт, 1223 загрузки] [attach=30005]
 
 
RU termostat #21.03.2004 12:56
+
-
edit
 

termostat

аксакал

Вот такой запрос в Google.com

lcd main include define winavr

дал кучу! исходников для LCD WinAVR

вот такой проект например - программируемый термостат

Прикреплённые файлы:
termo.zip (скачать) [32,09 кбайт, 116 загрузок] [attach=30006]
 
 
RU termostat #21.03.2004 20:38
+
-
edit
 

termostat

аксакал

weris, 21.03.2004 10:21:12 :
AVR 8535 - АЦП работает нно есть один глюк
 


Убрал я твое премудрое условие:

if ((adc_res==0)&(!(port_b>>bit_b0)&1))

На трезвую голову его разобрать очень трудно,

заменил на более простое:

if (adc_res==0)

сразу все заработало по требуемому тобой алгоритму.
только "Билдить" в ВМЛАБ надо 2 раза!

все в прицепленом файле (4 кб):


Прикреплённые файлы:
AD_work.zip (скачать) [3,71 кбайт, 93 загрузки] [attach=30009]
 
 

weris

новичок
Убрал я твое премудрое условие:

if ((adc_res==0)&(!(port_b>>bit_b0)&1))

На трезвую голову его разобрать очень трудно,

заменил на более простое:

if (adc_res==0)
 


так все понятно - рабоает,

но тогда при V=0 постоянно этот код будет выполняться, а это имхо не естьь гуд! ....


и еще есть баг у ВМЛаб,
у него нет компонента ДИОД ((
а мне нужен чтооб клавиатурную матрицу 3х3 прицепить на одно прерываниее ИНТ0 и в нем вычислять какая кнопка нажата
 
Это сообщение редактировалось 22.03.2004 в 08:48
RU termostat #22.03.2004 10:47
+
-
edit
 

termostat

аксакал

Из твоей программы я увидел, что:

WinAVR - очень просто работать с отдельными битами:

CBI (PORTB,PB7); // сделать бит_7 порта_В нулем - "очистить"
SBI (PORTC,PС4); // сделать бит_4 порта_С единицей - "установить"

SBI (DDRB,PB2); // сделать ножку PB2 входом

Очень наглядно и читаемо.

Непонятно только почему не используются просто названия битов по ДатаШит? возможно из соображений универсальности.

Нужно будет занятся и сделать *.h файлы для КодВижена

\\\\\\\\\\\\\

В ImageCraft есть мощное средство:

#include <macros.h> // подключить файл macros.h

в нем есть такая строка:
#define BIT(x) (1 << (x))

теперь можно в тексте программы обращаться клюбому биту МК так как он называется в ДатаШите, например:

BIT(RXEN) = 1;
BIT(TXEN) = 0;

BIT(PORTB5) = 0;

+
-
edit
 
#include <macros.h> // подключить файл macros.h

в нем есть такая строка:
#define BIT(x) (1 << (x))
 


так ты внимамтельнно погляди мой код,
там это же определение в начале
а CBI SBI - тоже определены в начале
#define ...

а вообще есть в асме такие команды
SBI - SetBit (порт,бит)
CBI - ClearBit (порт, бит)



а по поводу диодов есть мысли?
мне нужны, а нету(
 

Lioxa

втянувшийся
Хочу записать программу в Mega8 какой software and hardware для этого нужен ?
 
RU termostat #23.03.2004 11:36
+
-
edit
 

termostat

аксакал

Почитай в курсе - все есть.

не надо мегу8 - используй лучше 40-ка ногие МК. Научишся работать с одним, будешь его знать - он тебе для любой задачи подойдет.

они и в маленьком 44-ногом корпусе бывают.
?? Tosha_443 #25.03.2004 17:57
+
-
edit
 

Tosha_443

втянувшийся
По поводу кнопок — есть мысль:
если контакты работают только на замыкание и не громкость(частые нажатия) то можно вообше не делать код для проверки дребезга.
или задержку на сканирование 1/8 с

по поводу диода — а нельзя ли использовать светодиод(если он не только на +5В).
:unsure:
Не ошибается тот, кто ничего не делает  

weris

новичок
всем кому интересно работа с ЛСД
прикрепил пример проекта ВМЛаб+ВинАВР

выводит стртоку и в одном месте считает от 0 до 9

заодно посмотрите, может чего можно улучшить
а то код получился не маленький
Прикреплённые файлы:
LCD.rar (скачать) [35,24 кбайт, 139 загрузок] [attach=29832]
 
 
 

weris

новичок
по поводу кнопок
вот пример обработки матрицы 4х4 - 16 кнопок к одноому порту 8 бит

типа регулятора громкости
на кнопке0 +1
на кнопке1 -1 к переменной Х
Х можно смотреть в watch

Прикреплённые файлы:
KeyPad.rar (скачать) [18,58 кбайт, 115 загрузок] [attach=29833]
 
 
 
+
-
edit
 

coolnik

новичок
Люди, памагите! Заморочился с AVR ISP программатором (фирменным). Вроде шьет, читает, только вот никак не хочет МК после прошивания работать. Даже инициализируется неправильно. Например, зашиваю такую прогу в Tiny26L:

#include <tiny26.h>
void main(void);

void main(void)
{
#asm("CLI"); //disable all interrupts
PORTA=0xFF;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
#asm("SEI"); //re-enable interrupts
while (1);
}

отрубаю питание, программатор, подрубаю питание и тестер к PORTA, а он, СОБАКА, как был в PORTA нулем, так нулем и остался. Как я только не извращался.
Обидно, блин, в конце пути на такие грабли наступить. Help me! :(
 
RU ДмитрийК #27.03.2004 21:52
+
-
edit
 

ДмитрийК

новичок
coolnik, 27.03.2004 21:25:38 :
Люди, памагите! Заморочился с AVR ISP программатором (фирменным). Вроде шьет, читает, только вот никак не хочет МК после прошивания работать. Даже инициализируется неправильно. Например, зашиваю такую прогу в Tiny26L:

#include <tiny26.h>
void main(void);

void main(void)
{
#asm("CLI"); //disable all interrupts
PORTA=0xFF;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
#asm("SEI"); //re-enable interrupts
while (1);
}

отрубаю питание, программатор, подрубаю питание и тестер к PORTA, а он, СОБАКА, как был в PORTA нулем, так нулем и остался. Как я только не извращался.
Обидно, блин, в конце пути на такие грабли наступить. Help me! :(
 


незнаю как с другими программаторами, с STK таких проблем не видел, насчет программирования, померяй напряжение подаваемое на МК во время программирования(должно быть 5вольт), при пониженном напряжении будет так как ты рассказал. :blink: не все МК поддерживают низковольтное программированние. а еще, после подключения питания попробуй в ручную обресетить МК.
 
RU Ромыч #27.03.2004 23:51
+
-
edit
 
coolnik, 27.03.2004 21:25:38 :
Люди, памагите! Заморочился с AVR ISP программатором (фирменным). Вроде шьет, читает, только вот никак не хочет МК после прошивания работать. Даже
 


ДмитрийК, может ты забыл fuse биты установить? Без правильной их установки нифига работать не будет. Напиши, из чего шьёшь?
Пробовал фирменный AVRISP на пониженном напряжении: при 2.7 В без проблем.
Первый раз на форуме. Дружелюбно, приятно.
Отдельный респект Термостату.
 
+
-
edit
 

coolnik

новичок
померяй напряжение подаваемое на МК во время программирования
 

ДмитрийК, напруга точно +5. Через 7805 запитан. Зачем вручную ресетить? Не понял... :unsure:

Ромыч,
может ты забыл fuse биты установить? Без правильной их установки нифига работать не будет. Напиши, из чего шьёшь?
 

что за fuse биты? По-моему они для запрещения чтения из памяти. Как ни силился прочитать, что они на самом деле из себя представляют, не смог понять (тяжеловато с английским). Почему не будет без них работать? Можно поподробнее. Шью из AVRStudio v.4.0 Кстати, интересно, почему из v.3.55 не шьётся?

 
1 2 3 4 5 6 7 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru