Пятница, 29.03.2024, 09:10
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052

или пополни нашу SMS копилку
SMS.копилка

Ссылки

 Каталог статей
Главная » Статьи » Учимся работать с AVR

Первый проект на микроконтроллере (ATmega8).
И так приступим!

Сейчас мы научимся делать "Hello World" на микроконтроллере.
Для этого мы должны спаять следующую схему, используя такие детали:
1. ATmega8
2. панелька на 24 ножки
3. монтажная плата
4. светодиод
5. 2 конденсатора на 22 пФ
6. кварц на 8МГц
7. резистор на 220 Ом
и источник питания 5 вольт.
 
Мы видим что она не слишком отличаться от схемы приставки, вот только тут добавился светодиод и ограничительный резистор.

Подключаем программатор с приставкой(и микросхемой) к LPT порту.
Дальше нам нужно запустить Сode Vision AVR
Settings -> Programmer и выбираем Kanda Systems STK 200+/300 и нажимаем ОК.

дальше нажимаем Tools -> Code Wizard AVR
Chip ATmega8
Clock 8.000000 МHz

нажимаем ОК

дальше очищаем код до такого вида:


#include <mega8.h>

void main(void)

{       

while (1) 
      {

     

      };
}

а теперь перепишим его так

#include <mega8.h> //Включаем библиотеку для работы с микроконтроллером ATMega8

#include <delay.h> //Включаем библиотеку для организации задержек

 

void main(void)

{       

PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D

DDRD=0xFF;  //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В

while (1)  //Организовываем бесконечный цикл

      {

      PORTD.0=1; //Включаем светодиод на 0 выходе порта D

      delay_ms(500); //Делаем задержку на 500 миллисекунд

      PORTD.0=0; //Выключаем светодиод на 0 выходе порта D

      delay_ms(500); //Делаем задержку на 500 миллисекунд

      };

}

дальше выбираем Compile the project, дальше Make the project, если не было ошибок выбираем Tools -> Chip Programer
выставляем частоту 8 МГц  и нажимаем Programm All.
Если программа покажет диологовое окно нажимаем NO.
<span style="font-size: 12pt;">
Главное  во время програмирования запитать микросхему +5 вольт, иначе она не прошьется!!!

<span style="font-size: 10pt;">Ждем окончания прошивки, отключаем программатор, достаем микросхему, вставляем в нашу плату и подаем питание,
мы видим что светодиод начинает мигать:)</span>
</span>

Источник: http://homorobot.md6.ru/teach/fstproj/fstproj.html

Категория: Учимся работать с AVR | Добавил: my-avr (10.08.2008)
Просмотров: 93754 | Комментарии: 25 | Рейтинг: 5.0/8 |
Всего комментариев: 251 2 3 »
25 дмитрий  
0
"
for (i = 0; i<4 ; i++) // Цикл который выполняется 4 раза
{
PORTD.0=1; //Включаем 1 светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.0=0; //Выключаем светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.1=1; //Включаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.1=0; //Выключаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
}
"
Это не мигалка и не моргалка, (как было сказано в коментах) - а "горелка" :)
Интервал 50 мС глазу вряд ли будет заметен...

24 дмитрий  
0
"Товарищи, окажите помощь ламеру)) Пожалуйста"

Мега по умолчанию будет работать без кварца - от встроенного генератора.
Если есть желание использовать именно кварц (а это нужно далеко не всегда - если толлько есть необходимость выдерживать стабильные во времени интервалы), то кондеры лучше поставить 22пФ, 47 многовато...
Далее, генератор следует запустить - для этого надо ковырять FUSE-биты, что само по себе история, которая может закончиться дохлым контроллером, если таковые выставлены неправильно.

23 pill  
1
ну вот просто в оформлении... mega8 - она на 28 ножек, а ты пишешь кроватку на 24...

22 rozoviy-floyd  
0
Народ! Помогите пожалуйста, взял в руки паяльник (считайте первый раз в жизни), МК до этого в руках не держал)) Спаял все как выше, только кондеры взял на 47пФ и кварц на 4МГц. На питании схемы поставил еще электролитический кондер на 47мкФ. Резистор на 300 Ом переставил до диода. Схему питаю от 3х пальчиковых батареек, то есть 4,5В. Кстати, вопрос - никаких уравнительных токов не будет? Ведь от LPT 5 В идет, насколько я понимаю.
Далее все делаю в CodeVision ver.2.05, как описано. Нажимаю Program All... получаю ошибку:

communication error, please check the following:
-the Programmer's power supply is on
-the Programmer type is correctly set in the Settings/Programmer menu
-the Printer port adress is correctly set in the Settings/Programmer menu
-the AVR chip is not damaged

Забыл указать: программатор типа STK200, фирмы Olimex, через LPT порт
когда припаивал разъем по выход программатора (2*5 штырьков) к плате - не знал/не знаю распиновку... на шине программатора один из 10 проводов красный - предположил что земля, соответственно на плате заземлил 4 штырька рядом с ним... ну короче привел все к тому виду что в инструкции к программатору...
если кто-то не понял последнее предложение: не имея гнезда подходящего исключительно к программатору - грубо говоря, протянул провода от него прям к ножкам МК

Товарищи, окажите помощь ламеру)) Пожалуйста


21 Сергей  
0
ПОМОЩЬ НАЧИНАЮЩИМ!!! Необязательно ставить кварц, просто выбираем clock 1.0000 мгц, chip -микрок котрый программируем ,вставляем код из статьи выше, цыпляем,через резистор, светодиод соблюдаем +- к ножке МК PD0,прошиваем.

20 Сергей  
0
Спасибо за внимание разобрался сам, после PORTC.7=1; надо добавить ещё delay_ms(500); ->
while (1)
{
PORTC.7=0;
delay_ms(500);
PORTC.7=1;
delay_ms(500);
};

19 Сергей  
0
Светодиод маломощный,резистор на 156 ом,подключаю его напрямую к питанию горит нормально,подключал к выходам
РА0 потом РС7 еле видно шо моргает,с резистором и без него.
КОД ПРОГРАММЫ:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 14.05.2011
Author : NeVaDa
Company :
Comments:

Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 1,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTC=0x80;
DDRC=0x80;

ACSR=0x80;
SFIOR=0x00;

PORTC.7=0;
while (1)
{
PORTC.7=0;
delay_ms(500);
PORTC.7=1;
};
}


17 Сергей  
0
Подскажите пожалуйста, светодиод еле видно шо мигает, какая может быть причина?

18 HiSER  
1
Какой светодиод, какой резистор, как подключен?

16 Андрей  
0
Я конечно понимаю, что опоздал, но все таки спрошу. Вот написал два-три вида программы, а никто не подскажет как сделать так чтобы когда они по порядку заканчивались сделать чтобы дальше они выбирались автоматически, в хаотичном порядке...??? Заранее благодарю. Извольте только решил заниматься программированием...

Автор не нашел контактов если несложно отпишись на мой ящик, есть предложение...


15 Stase4i4ek  
0
12 gnom_88 (19.12.2009 22:39) <---- Типа канешно отмочил! )))

"В общем я в МК еще новичек, НО В ПРОГРАММИРОВАНИИ Я ПОНИМАЮ)." xDDDDDDD

for (i = 0; i<4 ; i++) // Цикл который выполняется 4 раза
{
PORTD.0=1; //Включаем 1 светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.0=0; //Выключаем светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.1=1; //Включаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.1=0; //Выключаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
}

Шо это за мигалка получится??? )))) Это не "мигалка", а "моргалка" какая то!

Одним циклом можно сделать, но опять же без "светофора" не обойтись!!!!

Можно так

#include <mega8.h>
#include <delay.h>

main()
{
int i;
int s=0; // "светофорчик"
PORTD=0x00;
DDRD.0=0xFF;
DDRD.1=0xFF;

while (1) //Организовываем бесконечный цикл
{

for (i = 0; i<4 ; i++) // Цикл который выполняется 4 раза
{
if(s==0)
{
PORTD.0=1; //Включаем 1 светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.0=0; //Выключаем светодиод на 0 выходе порта D.0
delay_ms(50); //Делаем задержку на 50 миллисекунд
if(i==4)
{
s=1; // включам "светофор" на другой линии (D.1)
}
}
else
{
PORTD.1=1; //Включаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
PORTD.1=0; //Выключаем светодиод на 0 выходе порта D.1
delay_ms(50); //Делаем задержку на 50 миллисекунд
if(i==4)
{
s=0; //сбрасываем "светофор" на другую линию (D.0)
}
}

delay_ms(200); // Задержка после чего цикл повторяется - тоесть нашы 4 мигания 1 и 2 светодиода, 200 мс

};

}
}

По смыслу вродь то что нужно. Проще это или нет я не знаю! ))) Наверно кому как!


1-10 11-20 21-24
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright My-AVR © 2024
Наша кнопка
У нас появилась кнопка, код кнопки:

Лаборатория самоделок на микроконтроллерах AVR

Форма входа
Наш опрос
Какой МК вы используете?
Всего ответов: 3228
Статистика/Друзья
CY-PR.com



Онлайн всего: 1
Гостей: 1
Пользователей: 0

РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум Сайт по радиоэлектронике. У нас все просто и интересно… ARV Reserch: Электроника — просто, полезно, увлекательно. Электронные устройства и программные средства для радиолюбителей и профессионалов, только авторские разработки, плагиата нет! Разработки на заказ. AVR projects Создание электронных роботов своими руками Схемы и программы на AVR http://ur5yfv.ucoz.ua/BANNER.gif Блог начинающего эмбеддера. Дай волю паяльнику! Самоделки на all-make.ru Принципиальные схемы Модулі автозапуску бензогенератора та системи АВР, електромонтажні роботи
Хостинг от uCoz