Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Розробка стенду для налагодження та програмування мікроконтролерів фірми ATMEL

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

Мікроконтролер випускається за розробленою Atmel технологією енергонезалежної пам’яті високої ємності. Вбудована ISP флеш-пам'ять може внутрішньосхемно перепрограмовуватися через послідовний інтерфейс SPI звичайним програматором енергонезалежної пам’яті або запущеною програмою в секторі початкового завантаження AVR ядра. Програма в секторі початкового завантаження може використовувати будь-який… Читати ще >

Розробка стенду для налагодження та програмування мікроконтролерів фірми ATMEL (реферат, курсова, диплом, контрольна)

Зміст

  • Вступ 2
  • 1. Завдання 4
  • 2. Короткий опис мікроконтролера ATmega6450 5
    • 2. 1. Особливості 6
    • 2.2. Опис виводів 7
  • 3. Розробка стенду 9
    • 3.1. Розробка принципової схеми 9
    • 3.2. Алгоритм програми 10
    • 3.3. Написання програми 11
  • 4. Складання ескізу друкованої плати 21
  • Висновок 22
  • Список використаної літератури 23
  • Вступ
  • AVR — це сімейство МК від компанії ATMEL, розроблених з урахуванням особливостей і зручності написання програм на мові Сі. До того ж, це не дорогі, широко доступні, надійні, прості, рахують досить швидко — більшість інструкцій виконується за 1 такт. AVR — найбільша виробнича лінія серед інших флеш-мікроконтролерів корпорації Atmel.
  • Успіх AVR-мікроконтролерів пояснюється можливістю простого виконання проекту з досягненням необхідного результату в найкоротші терміни, чому сприяє доступність великої кількості інструментальних засобів проектування, що поставляються, як безпосередньо корпорацією Atmel, так і сторонніми виробниками.
  • AVR-мікроконтролери представляють більш широкі можливості по оптимізації продуктивності/енергоспоживання, що особливо важливо при розробці додатків з батарейним живленням.
  • Об'єднання на одному кристалі вдосконаленого 8-розрядного RISC ЦПУ із завантажуваним Flash ПЗУ дозволило фірмі створити потужний мікроконтролери, що забезпечує високу гнучкість і економічність у використанні приладу в якості вбудованого контролера.
  • AVR-архітектура, об'єднує потужний гарвардський RISC-процесор з роздільним доступом до пам’яті програм і даних, 32 регістри загального призначення, кожен з яких може працювати як регістр-акумулятор, і розвинену систему команд фіксованого 16-біт довжини. Більшість команд виконуються за один машинний такт з одночасним виконанням поточної і вибіркою наступної команди, що забезпечує продуктивність до 1 MIPS на кожен МГц тактової частоти.
  • Базовий набір команд AVR містить 120 інструкцій. Інструкції бітових операцій включають інструкції установки, очищення та тестування бітів.
  • В рамках єдиної базової архітектури AVR-мікроконтролери підрозділяються на три підвиди:
  • * Classic AVR — основна лінія мікроконтролерів з виробництвом окремих модифікацій до 16 MIPS, FLASH ROM програм 2−8 Кбайт, ЕEPROM даних 64−512 байт, SRAM 128−512 байт;
  • * mega AVR з виробництвом 1−16 MIPS для складних додатків, що вимагають великого обсягу пам’яті, FLASH ROM програм 4−128 Кбайт, ЕEPROM даних 64−512 байт, SRAM 2−4 Кбайт, SRAM 4 Кбайт, вбудований 10-розрядний 8-канальний АЦП, апаратний помножувач 8×8;
  • * tiny AVR — низьковартісні мікроконтролери у 8-вивідному виконанні мають вбудовану схему контролю напруги живлення, що дозволяє обійтися без зовнішніх супервізорних мікросхем.

1. Завдання

Розробити стенд для налагодження та програмування мікроконтролерів фірми ATMEL.

До складу стенду повинні входити:

— Кнопки і тумблери для задання режимів перемикань;

— Набір світлодіодів для відображення результатів;

— Розроблена програма для перевірки функціонування контролера.

1. Управління контролером складається з чотирьох тумблерів (1,2,3 і 4) із станом «увімкнений» і «вимкнений» кожен і двох кнопок (1 і 2), кожна з яких може бути натиснута або віджата. Тумблери і кнопки підключаються до портів контролера в якості вхідних сигналів.

2. Вихідна функція відображається у вигляді шести світлодіодів (1,2,3,4,5 та 6), які включаються або вимикаються в залежності від стану розрядів портів контролера. При всіх невказаних поєднаннях станів і кнопок всі світлодіоди мають бути вимкнені.

Тип контролера: ATmega6450

Способи управління режимами:

1 режим: увімкнений хоча б один тумблер, натиснута кнопка 1;

2 режим: вимкнений хоча б один тумблер, натиснута кнопка 2;

3 режим: вимкнені всі тумблери, натиснута одна з двох кнопок.

Режими включення світлодіодів:

1 режим: включені світлодіоди 3, 4;

2 режим: включені світлодіоди 2, 3, 4, 5;

3 режим: увімкнені всі світлодіоди.

2. Короткий опис мікроконтролера ATmega6450

ATmega6450 — економічний 8-розрядний мікроконтролер, заснований на посиленій AVR RISC архітектурі.

AVR ядро об'єднує багатий набір інструкцій з 32 робочими регістрами загального призначення. Всі 32 регістра безпосередньо підключені до АЛУ (арифметико-логічний пристрій), що дозволяє вказувати два регістри в одній інструкції і виконати її за один цикл.

ATmega6450 інтегрує такі пристрої: 64 кбайт внутрішньосистемно програмована флеш-пам'ять з підтримкою читання під час запису, 2 кбайт ЕСППЗУ, 4 кбайт статичного ОЗП, 53/68 лінії вводу-виводу загального призначення, 32 робочих регістра загального призначення, інтерфейс JTAG для граничного сканування, підтримки внутрішньокристального налагодження та програмування, три універсальних таймера-лічильника з режимами порівняння, внутрішні і зовнішні переривання, послідовний програмований УСАПП, універсальний послідовний інтерфейс з детектором умови старт, 8-канальний 10-разр. АЦП, програмований сторожовий таймер з внутрішнім генератором, послідовний порт SPI та п’ять програмно керованих економічних режимів. Режим холостого ходу (Idle) зупиняє ЦПУ, але залишає в роботі статичне ОЗУ, таймери-лічильники, порт SPI та систему переривань. Режим виключення (Power-down) зберігає вміст регістрів, але зупиняє генератор, вимикає всі вбудовані функції до появи наступного запиту на переривання або апаратного скидання. В економічному режимі (Power-save) асинхронний таймер продовжує працювати, дозволяючи користувачеві його використовувати, а інші пристрої вимкнено. У черговому режимі (Standby) генератор на кварцовому резонаторі запущений, а інша частина відключена.

Мікроконтролер випускається за розробленою Atmel технологією енергонезалежної пам’яті високої ємності. Вбудована ISP флеш-пам'ять може внутрішньосхемно перепрограмовуватися через послідовний інтерфейс SPI звичайним програматором енергонезалежної пам’яті або запущеною програмою в секторі початкового завантаження AVR ядра. Програма в секторі початкового завантаження може використовувати будь-який інтерфейс для запису програми. Програма в секторі початкового завантаження виконується навіть при оновленні галузі прикладної програми у флеш-пам'яті, забезпечуючи дійсну можливість читання під час запису. За рахунок комбінування 8-розрядного RISC ЦПУ з внутрішньосхемною самопрограмуючою флеш-пам'яттю на одному кристалі, дозволило ATmega6450 бути потужним мікроконтролером, що забезпечує високу універсальність і володіє низькою вартістю, що робить їх застосування ідеальним для побудови вбудованих систем управління.

2.1 Особливості

- Високопродуктивний, малопотужний 8-розр. AVR-мікроконтролер.

— Сучасна RISC-архітектура:

* потужний набір із 130 інструкцій, більшість з яких виконуються за один такт;

* 32?8 робочих регістрів загального призначення;

* повністю статична робота;

* продуктивність до 16 млн. оп. в сек. при 16 МГц;

* вмонтований 2-тактовий помножуючий пристрій;

— Характеристики периферійних пристроїв:

* два 8-розр. Таймера-лічильника з роздільними переддільниками, і режимами порівняння;

* один 16-розр. Таймер-лічильник з окремим перед дільником, режимом порівняння і режимом захвату;

* лічильник реального часу з окремим генератором;

* 8-канальний 10-розр. АЦП;

* програмований сторожовий таймер з окремим влаштованим генератором;

* влаштований аналоговий компаратор;

* переривання та пробудження при зміні стану на виходах.

— Спеціальні функції мікроконтролера:

* скидання при подачі живлення і програмований захист від пониження напруги живлення;

* внутрішній калібрований генератор;

* внутрішні та зовнішні джерела переривань:

* п’ять режимів сну: холостий хід, пониження шумів АЦП, економний, виключення і черговий.

— Температурний діапазон:

* промисловий (-40 ° C … +85 ° C)

— Надмала споживана потужність:

* активний режим:

1 МГц, 1.8В: 400 мкА

32 кГц, 1.8В: 20 мкА (в т.ч. генератор)

— Режим виключення:

* 0.5 мкА при 1.8В

2.2 Опис виводів

GND — заземлення

VCC — цифрова напруга живлення.

Порт, А (PA7. PA0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт B (PB7. PB0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт C (PC7. PC0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт D (PD7. PD0) — це 8-розрядний двонаправлений порт вводу/виводу з внутрішніми навантаженими резисторами.

Порт E (PE7. PE0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт F (PF7. PF0) — Порт F служить для аналогових входів в А/D конвертер.

Порт F також є 8-розрядним двонапрямленим портом введення/виведення, якщо A/D конвертер не використовується з внутрішніми навантаженими резисторами.

Порт F також виконує функції інтерфейсу JTAG.

Порт G (PG5. PG0) — являє собою 6-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт J (PB7. PB0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

Порт H (PB7. PB0) — являє собою 8-розрядний двонаправлений порт вводу/ виводу з внутрішніми навантаженими резисторами.

RESET — Скидання введення. Низький рівень на цьому висновку довше, ніж мінімальна тривалість імпульсу буде генерувати скидання, навіть якщо годинники не працюють.

XTAL1 — вхід для звернення до генератора підсилювача і вхід до внутрішнього ланцюга операційних годин.

XTAL2 — вихід з інвертуючого підсилювача осцилятора.

AVCC — є контактом напруги в Порт-F і A/D конвертер. Він повинен бути зовні підключений до VCC, навіть якщо АЦП не використовується. Якщо АЦП використовується, воно має бути пов’язане з VCC через фільтр низьких частот.

AREF — Це контакт аналогового входу для A/D конвертору.

NC — Не підключати (Може бути використаний в майбутніх пристроях).

3. Розробка стенду

3.1 Розробка принципової схеми

За даними курсової роботи до мікроконтролера потрібно підключити 6 світлодіодів, 4 тумблера і 2 кнопки управління. Підключимо світлодіоди до одного з портів, а тумблери і кнопки — відповідно до іншого. Налаштуємо порти таким чином: до порту де підключені світлодіоди — на вихід, а порт, до якого підключені тумблери і кнопки — на введення.

Для підключення кнопок (SB1 — SB2) і тумблерів (S1 — S4) використовуємо стандартну класичну схему: в початковому стані контакти розімкнуті, через внутрішні навантажувальні резистори на входи мікроконтролера подається позитивна напруга живлення (+5 В), що відповідає сигналу логічної одиниці. Всі мікроконтролери серії AVR мають вбудовані навантажувальні резистори для кожного розряду порту, необхідно тільки програмним шляхом включити їх. Застосування внутрішніх навантажувальних резисторів дозволить набагато спростити схему налагодженого модуля, і підвищити надійність його роботи.

При замиканні тумблерів і кнопок напруга падає до нуля, що відповідає логічному нулю.

Таким чином, зчитуючи значення сигналу на відповідному виводі порту, програма може визначати момент натискання кнопки. Ми безпосередньо підключаємо до виходу порту, а кожен вихід мікроконтролера розрахований на безпосереднє управління світлодіодом середнього розміру з струмом споживання до 20 мА.

У ланцюг світлодіода включені струмообмежуючі резистори R1-R6 номіналом 270 Ом, що при напрузі живлення 5 В ± 10% дозволяє безпечно підключити будь-який малопотужний світлодіод. Даний опір розраховується виходячи із закону Ома наступним чином:

(4,5 … 5,5 — (1,5 … 4 + 0,25 … 2)) / 0,005 … 0,04 270 Ом але на практиці застосовується рідко, оскільки в такому випадку можна точно спрогнозувати точний струм мікроконтролера, який залежить від температури, тому й беруть усталене на практиці номінальне значення в 270 Ом.

Для того, щоб світлодіод засвітився, мікроконтролер повинен подати на висновок сигнал логічного нуля. У цьому випадку виникає різниця потенціалів на виводах світлодіода, що викличе струм через світлодіод, і він загориться. Якщо ж на вивід подати сигнал логічної одиниці, падіння напруги ня на світлодіоді і резисторі виявиться рівним нулю, і світлодіод згасне.

Мікроконтролер ATmega6450 має дев’ять портів вводу-виводу — порти, А — H. Зручно підключити тумблери і кнопки до порту Е, а світлодіоди до порту А.

VD1-VD6 — світлодіод жовтий 5 мм; R1-R6 — резистори вивідні 0,125 Вт 270 Ом; S1-S4 — тумблер на 2 положення SMTS — 102; SB1-SB2 — кнопка PBS-05B.

3.2 Алгоритм програми

Програма виконуватиметься у нескінченному циклі. Мікроконтролер буде запитувати вхідні порти, і в залежності від вхідної комбінації на них буде виконаний режим включення світлодіодів. При невідповідності вхідної комбінації одному з трьох режимів, світлодіоди виставляються в початковий стан.

Так

Ні

Так

Ні

Ні

Так

Ні

Рис. 3.2. Блок-схема алгоритму програми

3.3 Написання програми

Для створення програми на мові СІ ми будемо використовувати програмне середовище CodeVisionAVR. Це середовище спеціально предназначене для розробки програм на мові СІ для мікроконтролерів серії AVR.

Створюємо новий проект, після чого з’являється вікно майстра-будівника. У першій вкладці вибираємо наш мікроконтролер ATmega6450. Для виконання нашого завдання не знадобиться висока частота, обмежимося частотою 1МГц, щоб не ускладнювати схему зовнішнім кварцовим генератором. мікроконтролер стенд програма вивід Далі вибираємо вкладку Ports і виставляємо порт Е на введення, не забуваючи включити внутрішні навантажувальні резистори, а порт А на вивід. Так як початковий стан — всі світлодіоди включені, то виставимо значення порту А на «0».

Решту вкладок залишаємо без змін. Запускаємо генерацію програми — вибираємо PROGRAM -> Generate, Save and Exit і вказуємо куди і під яким ім'ям зберегти проект. Програма сама генерує код у відповідності зі значеннями в майстрові-будівнику. Залишилося лише записати код програми в нескінченний цикл while (1).

Лістинг програми:

/*****************************************************

This program was produced by the

CodeWizardAVR V2.05.0 Evaluation

Automatic Program Generator

© Copyright 1998;2010 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date: 08.04.2013

Author: Freeware, for evaluation and non-commercial use only

Company :

Comments:

Chip type: ATmega6450

Program type: Application

AVR Core Clock frequency: 1,0 MHz

Memory model: Small

External RAM size: 0

Data Stack size: 1024

*****************************************************/

#include

// Declare your global variables here

void main (void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

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

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

PORTA=0×00;

DDRA=0xFF;

// 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

PORTB=0×00;

DDRB=0×00;

// Port C 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

PORTC=0×00;

DDRC=0×00;

// 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

PORTD=0×00;

DDRD=0×00;

// Port E initialization

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

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

PORTE=0xFF;

DDRE=0×00;

// Port F 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

PORTF=0×00;

DDRF=0×00;

// Port G initialization

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

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

PORTG=0×00;

DDRG=0×00;

// Port H 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

PORTH=0×00;

DDRH=0×00;

// Port J 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

PORTJ=0×00;

DDRJ=0×00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=0xFF

// OC0 output: Disconnected

TCCR0A=0×00;

TCNT0=0×00;

OCR0A=0×00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0×00;

TCCR1B=0×00;

TCNT1H=0×00;

TCNT1L=0×00;

ICR1H=0×00;

ICR1L=0×00;

OCR1AH=0×00;

OCR1AL=0×00;

OCR1BH=0×00;

OCR1BL=0×00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer2 Stopped

// Mode: Normal top=0xFF

// OC2 output: Disconnected

ASSR=0×00;

TCCR2A=0×00;

TCNT2=0×00;

OCR2A=0×00;

// External Interrupt (s) initialization

// INT0: Off

// Interrupt on any change on pins PCINT0−7: Off

// Interrupt on any change on pins PCINT8−15: Off

// Interrupt on any change on pins PCINT16−23: Off

// Interrupt on any change on pins PCINT24−30: Off

EICRA=0×00;

EIMSK=0×00;

// Timer/Counter 0 Interrupt (s) initialization

TIMSK0=0×00;

// Timer/Counter 1 Interrupt (s) initialization

TIMSK1=0×00;

// Timer/Counter 2 Interrupt (s) initialization

TIMSK2=0×00;

// Universal Serial Interface initialization

// Mode: Disabled

// Clock source: Register & Counter=no clk.

// USI Counter Overflow Interrupt: Off

USICR=0×00;

// USART initialization

// USART disabled

UCSR0B=0×00;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0×80;

ADCSRB=0×00;

DIDR1=0×00;

// ADC initialization

// ADC disabled

ADCSRA=0×00;

// SPI initialization

// SPI disabled

SPCR=0×00;

while (1)

{

// Place your code here

if

(!PINE.0&&!PINE.1&&!PINE.2&&!PINE.3&&PINE.4&&PINE.5)

{PORTA.0=1;

PORTA.1=1;

PORTA.2=0;

PORTA.3=0;

PORTA.4=1;

PORTA.5=1;

}

if

(PINE.0&&PINE.1&&PINE.2&&PINE.3&&PINE.4&&PINE.5)

{PORTA.0=1;

PORTA.1=0;

PORTA.2=0;

PORTA.3=0;

PORTA.4=0;

PORTA.5=1;

}

if

(!PINE.0||!PINE.1||!PINE.2||!PINE.3&&!PINE.4&&!PINE.5)

{PORTA.0=0;

PORTA.1=0;

PORTA.2=0;

PORTA.3=0;

PORTA.4=0;

PORTA.5=0;

}

else

{PORTA.0=0;

PORTA.1=0;

PORTA.2=0;

PORTA.3=0;

PORTA.4=0;

PORTA.5=0;

}

}

}

4. Складання ескізу друкованої плати

Ескіз друкованої плати стенду проектувався в програмі Sprint Layout версії 6.0. В якості джерела живлення використаний роз'єм під блок живлення на +5 вольт.

При складанні друкованої плати потрібно враховувати реальні розміри елементів, і розводити доріжки таким чином, щоб уникати їх перетину.

Висновок

Мікроконтролери на сьогоднішній день є невід'ємною частиною як сучасного побуту, так і складної обчислювально-контрольованої апаратури. З кожним днем в світі стає все більше цих маленьких помічників для простих людей, які в повсякденному житті їх навіть не помічають (що говорить про їх якість і надійність).

У ході виконання проекту було проведено дослідження можливостей мікроконтролера ATmega6450 сімейства AVR, і його перепрограмування на потрібний нам режим роботи.

За підсумками виконаної роботи можна сказати що мікроконтролер ATmega6450 сімейства AVR, як і багато інших може бути перепрограмований на інший режим роботи всього за кілька хвилин за допомогою ноутбука, «на місці». Тобто нам не доведеться купувати новий мікроконтролер для того щоб змусити певний прилад виконувати інші функції, які можуть кардинально відрізнятися від заводських налаштувань. Для цього нам знадобиться лише ноутбук, програматор зі шлейфом, засоби розробки (наприклад: CodeVisionAVR, AVRStudio, або інше програмне забезпечення), і звичайно ж сам мікроконтролер, і через кілька хвилин наш мікроконтролер запрацює в новому, потрібному нам режимі.

Список використаної літератури

1. А. В. Белов. Создаем устройства на микроконтроллерах. С.-П., Наука и Техника, 2007

2. А. В. Белов. Микроконтроллеры AVR в радиолюбительской практике. С.-П., Наука и Техника, 2007

3. А. В. Белов. Самоучитель по микропроцессорной технике. С.-П., Наука и Техника, 2003

4. Матеріали офіційного сайту фірми Atmel www.atmel.com

5. Матеріали сайту www.gaw.ru

6. Матеріали сайту www.easyelectronics.ru

7. Матеріали сайту kvazar.net

8. Матеріали сайту http://www.kosmodrom.com.ua/pdf/AVR-USB-ASP.pdf

Показати весь текст
Заповнити форму поточною роботою