duminică, 17 noiembrie 2013

Периферийный модуль Внешнее Прерывание - EXT_INT


Периферийный модуль Внешнее Прерывание-EXT_INT может обнаружить и изменение одного из выводов МК с возможным(в последствии) генерированием прерывания,которое можно обработать при помощи подпрограммы обработки прерываний EXT_INT_ISR. Также является одним из самых простых и необходимых периферийных модулей , который может генерировать прерывания.Внешние прерывания прикреплены к выводам INT0,INT1 и INT2 МК. Данные выводы также можно сконфигурировать как выход. Эта характеристика обеспечивает возможность генерировать прерывания прямо в программе посредством изменения значений выводов . На рисунке, представленном ниже , приведён пример генерирования прерывания,путём нажатия кнопки и обработки его подпрограммой обработки прерываний.
Можем увидеть,что,чтобы была вызвана подпрограмма обработки прерываний , необходимо удовлетворение следующих условий:

Moduul periferic Intrerupere externa. EXT INT

Pagina principala curs          На русском
 
Modulul periferic Intrerupere Externa - EXT INT permite detectarea schimbarilor de la unul din pinii externi al microcontrollerului cu o eventuala generare a unei situatii de intrerupere, care ar putea fi tratata de catre o subrutina de prelucrare a intreruperii EXT_INT_ISR. Totodata este unul din cele mai simple si esentiale module periferic care pot genera intreruperi.
    Întreruperile externe sunt atasate de pinii INT0, INT1, si INT2 ale microconrollerului. Pinii destinati intreruperilor pot fi configuraţi si ca ca ieşiri. Această caracteristică oferă posibilitatea crearii situatiilor de intreruperi chiar din cadrul programului prin modificarea valorilor pinilor respectivi din programul din MCU.
    In figura de mai jos se da un exemplu ce demonstreaza cum ar putea fi interpretata detectarea unei intreruperi externe generate de apasarea unui buton atasat la pinul de intrerupere si prelucrat de subrutina de prelucrare a situatiei de intreruperi:

    Putem vedea ca pentru ca sa fie apelata subrutina de prelucrare a intreruperii este necesara satisfactia urmatoarelor conditii:

Прерывания. Программы с прерываниями. Прерывание RESET


     Прерывания

  Прерывание представляет собой приостановку нормального процесса выполнения программы для выполнения более приоритетной задачи. По правилу, прерывание, генерируется как ответ на физический эффект, внутренний или внешний, периферийного модуля . Физический эффект сам по себе представляет нам выполнение прерывания или исключительную ситуацию, которую нужно немедленно выполнить. Например: изменение логического уровня на одном выводе, конец периода времени, конец операции передачи или приёма, конец преобразования и т.д. Большинство периферийных модулей могут генерировать одно или несколько прерываний. Выполнение прерывания предполагает существование определённой подпрограммы для этой цели. При появлении прерывания, МК устанавливает в регистре состояния флаг IF, который будет установлен пока не закончится выполнение подпрограммы обработки прерывания. Для того, чтобы прерывание было сгенерировано, необходимо, чтобы в регистре контроля, был установлен бит IE. Механизм вызова подпрограммы обработки прерывания должен быть инициализирован следующим образом: 
  1. Определилась ситуация прерывания , показанная посредством флага IF==1; 
  2. Прерывание от определённого источника (по фронту и т.д.) разрешается - IE==1;
  3. Бит глобального разрешения прерываний (SREG) I==1.

Периферийные модули. Периферийный модуль GPIO - Порты ввода / вывода.

    

     Периферийные модули

    МК представляет из себя структуру из MCU с различными периферийными модулями. Разные МК имеют разные периферийные модули. Периферийный модуль-специальная схема , которая выполняет определённую функцию.Например:

  • GPIO-позволяет устанавливать логическое значение на пинах МК.
  • EEPROM-позволяет долговременно хранить данные.
  • ADC-преобразование аналоговых сигналов.
  • UART-последовательное соединение.
  • TIMER-генерирование разных промежутков времени, измерение времени между 2 событиями,генерация цифровых сигналов определённой формы.


    В определенной степени, я бы сказал, что  периферийный интерфейс соединяет микроконтроллер с внешним миром. Взаимодействие микропроцессор (ЦП) с периферией происходит РВВ(регистр ввода - вывода).Архитектура AVR предоставляет 64 регистра, называемых регистры периферии или регистры ввода / вывода. Каждый модуль GPIO зарезервировал набор из трех регистров :PORT, PIN и DDR,используя которые,МК может менять логические уровни на пинах.

Косвенный доступ к памяти SRAM. Массивы. Обработка массивов

 Главная страница курса         in romana

    Массивы

    Массив представляет собой последовательность переменных доступных по одному имени. На языке ASM мы не можем говорить о каком-либо специальном типе данных. Любая структура данных, простая или сложная, представлена областью памяти, выделенной под эту структуру. Это действительно и для таблиц(массивов), т.е. будет выделена область памяти доступна по имени ссылки (метки) .

Пример:

    .EQU TAB_SIZE=10     ; объявление переменной
    .DSEG                ; таблицы будут объявлены
                         ; в сегменте данных
     tab: .byte TAB_SIZE ; использование константы
                         ; в объявлении таблицы


    Из данного примера мы не можем сделать вывод, сколько элементов имеет таблица, но при условии, что элементы таблицы имеют тип byte, который занимает один байт в памяти, мы говорим, что tab представляет собой массив из 10 элементов типа byte. Если мы хотим выделить память для массива (объявить массив), элементами с размером больше, чем один байт, тогда выделенная память будет продуктом размера элементов и их количеством в массиве.

Прямой доступ к памяти SRAM. Переменные. Операции с переменными.


    Переменная - это объект,который содержит данные,которые могут изменяться.
    Для ASM переменной мы называем часть памяти , занятой этой переменной, доступной по определённому имени. Имя переменной-это метка в сегменте данных, которая представляет собой адрес части памяти, выделенной для переменной. В отличии от языков высокого уровня в ASM не существует типа переменной.  Переменная характеризуется только  именем, меткой и объёмом памяти,выделенном для данной переменной.

    Объявление переменной

    Переменная объявляется в сегменте данных .dseg и представляет собой метку, за которой следует директива предварительной обработки .byte которая предполагает бронирование части памяти для данной переменной. 

  .DSEG   ; переменные декларируются в сегменте данных

  var1 : .BYTE 1   ; декларирование переменной var1 
                   ; и бронирование 
                   ; 1 byte для этой переменной.
  var1 : .BYTE 2   ; декларирование переменной var1 
                   ; и бронирование 
                   ; 2 byte для этой переменной. 
                  
  

Константы. Булева логика.Операции с масками.

 Главная страница курса         in romana

Константы

    Константа-это идентификатор, наделённый значением, которое не может меняться в ходе выполнения программы, оно - постоянно. Используя константу вместо одного и того же значения, которое повторяется, мы упрощаем программу и упрощаем манипулирование ей. Дав определённое имя константе, упрощается  разработка программы и легче запоминается. Использование констант повышает безопасность и снижает риск ошибок в программе. Пропадает необходимости запоминать фактические значения, т.к. имя запоминать легче. Ошибки имени константы обычно выявляются компилятором автоматически (кроме того,когда имя не то которое принадлежит данной константе). Изменения в программе становятся проще,т.к. константа определена один раз и изменяя её значения, меняются все значения под этим именем.

Определение констант  

    Константы определяются один раз и сохраняют свое значение на протяжении всей программы.Для обозначения констант на языке ASM , существуют 2 директивы:

     Директива .EQU определяет имя константы.
   
    .EQU SIZE = 10
    .EQU PIN7 = 7

Система команд микроконтроллера серии AVR

      
   Микроконтроллер AVR является МК типа RISC с Гарвардской архитектурой, которая позволяет выполнение большинства операций за один такт. Это представление связано с тем, что они включают в себя расходы времени по передаче данных из памяти программ. Исключением для правила - "все команды выполняются за один такт", является выполнение команд с данными в 16 бит, переходы и т.д.
    Команда ASM представляет собой действие, которое может выполнить МК. Команда состоит из имени и рабочих операндов, левого и правого. Существуют команды с одним операндом или вовсе без операндов.
Левый операнд хранит в себе результат данной выполненной команды.В качестве операндов могут быть: РОН(R), константа(k), адрес памяти или периферийный регистр(P).
Команда ASM имеет следующий формат:

<мнемоника> <левый операнд>, <правый операнд>

мнемоника - имя команды, является аббревиатурой  задания, которое он выполняет.
операнд - адрес доступа к ресурсу МК или константа для операций с константами.

miercuri, 13 noiembrie 2013

Problema L6. Display 8x7 segmente



Problema
Să se proiecteze un sistem care ar perimite afişarea unui set de caractere definit din memoria RAM pe un display format din 8 afişoare a câte 7 segmente.

Afişorul 8x7seg 
Controlul segmentelor este comun pentru toate cele 8 cifre disponibile pe placă. Asta înseamnă că toate segmentele de pe aceeaşi poziţie din toate cele 8 cifre sunt legate la acelaşi pin (altfel spus, toate cifrele active la un anumit moment de timp vor afişa aceeaşi valoare). Activarea sau dezactivarea unei cifre se face tot pe logică negată, folosind pinii legați la dispozitivele CC8 - CC0. Prin urmare, modulul care controlează afişajul pe 7 segmente va avea, pe lângă ieşirea de 8 biți necesară controlului segmentelor, încă o ieşire de 8 biți care va controla starea fiecărei cifre (activată sau dezactivată).


 
Afişorul va fi activat la aplicarea 0 logic la catodul comun (CC).

vineri, 18 octombrie 2013

Competitia studenteasca Electro-mobility 3

CONTINENTAL AUTOMOTIVE ROMÂNIA organizează cea de-a 3-a ediţie a Competiţiei Studenţeşti, eveniment dedicat studenţilor de la facultăţile cu profil tehnic si informatic, dornici să-şi etaleze cunoştinţele şi să răspundă unei provocări tehnice interesante, ce contribuie la pregătirea lor pentru o carieră de succes. 
Tema competiţiei studenţeşti, care se va desfăşura în zilele de 09-10 mai 2014, este Electro-mobility 3 Studenţii trebuie să ofere o soluţie tehnică pentru a rezolva inovativ şi eficient proiectul: 

"DRIVE AN ELECTRICALLY ACTUATED CAR. MEN AND MACHINES!" 

O scurtă descriere, cerinţele tehnice ale proiectului, regulamentul şi formularele necesare înscrierii sunt disponibile în documentaţia care poate fi accesată aici.Echipele formate din 3-4 studenţi, îndrumate de un cadru didactic, trebuie să trimită o scurtă descriere a soluţiei pentru proiectul ales până la data de 3 noiembrie 2013 la adresa de e-mail: 
Analiza acestora şi selecţia propunerilor ce vor intra în concurs, va fi efectuată de o comisie de experţi din cadrul companiei noastre până la data de 8 noiembrie 2013.
- See more at: http://me.utm.md/viewnews.php?id=46#sthash.0QwryCI1.dpuf

marți, 1 octombrie 2013

Course on Microprocessor Applications



The course on "Microprocessor Applications" represents a didactic material for embedded applications amateurs and an additional study material for university lectures in this area.

As reference has been selected an AVR microcontroller produced by Atmel company and applications will be designed in most cases for ATmega16 microcontroller, which has the majority of modules required to solve problems for this course. The course itself will include descriptions of some typical problems and solutions. The reason for selecting the AVR series was simple architecture in comparison with its main competitors. Also, this series is widely available on market and has an acceptable price. The course materials will be presented in such a way as to be applicable to other architectures, different than AVR.

The course will be divided into two sections:
  1. Microcontroller Core Architecture. ASM Programming - in this section is analyzed in detail the microcontroller core structure, its functional principle and the way to work with its components by using the ASM (Assembly) low-level programming language.
  2. Microcontrollers programming in C language Peripheral modules - this section will include an  introduction to microcontroller programming in C, the specifics of microcontroller programming in this language (so-called 'high' level programming language). The applications will be oriented toward working with microcontroller peripheries and applications development with their use.

In this course you will also find examples of solved problems that can serve as reference for more complex projects.

Find below the course contents that will be periodically adjusted and completed.

     1. The Microcontroller Core Architecture. ASM (Assembly) Programming

1. Microcontroller architecture. Memory organization
2. Peripheral modules. GPIO Peripheral modules - Generic Input/Output Port.
3. AVR Microcontroller commands system.
4. Introduction to ASM programming. Stack. Subroutine, subroutine with parameters.
5. Creation of Basic Algorithmic Constructions: conditions, multiple selection, loops.
6. Constants. Boolean logic. Mask.
7. Direct access to SRAM memory, Variables, Operations with variables.
8. Indirect access to SRAM memory, Arrays, Processing of arrays.
9. Switches, Programs with interrupts. The RESET interruption.
10. External interrupt.
11. Watchdog Timer

2. Microcontrollers programming in C language. Peripheral modules
1. Introduction to C programming language. Data structures, functions.
2. Instructions of C programs with interrups, access to peripherals.
3. TIMER0 Peripheral module, Timer/Event counter.
4. TIMER1 Peripheral module, OC, IC, PWM modules.
5. Analog interfaces. The AC and ADC peripheral modules.
6. Serial interfaces. The SPI and UART peripheral modules.
7. Efficient programming in C for MCU, the C-ASM interaction.

A evaluation test sample on Microprocessors course

The ASM problems:
1. Problem L1 - Controlling a LED with one button.
2. Problem L2 – Rolling lights. The “Delay” subroutine.
3. Problem L3 - Assessment of conditional expressions.
4. Problem L4 - Processing of arrays in ASM
5. Problem L5 - 4x4 Keypad
6. Problem L6 - Dynamic display on LED Display 8x7seg.
7. Problem of L7 - PWM Generator controlled through ADC





External references
As references of this course were taken: university lecture notes of courses on "Microprocessors" and "Microsystems", information from similar blogs. However, the best source of inspiration still remains the technical documentation (Datasheet) and Appnotes from Atmel company.

Looking forward for expressing your interest by adding the course comments.


Enjoy your reading...

Curs aplicaţii cu Microprocesoare


Cursul Aplicaţii cu Microcontrollere reprezintă un material didactic destinat amatorilor de aplicaţii cu Microcontrollere, cât şi ca materie suplimentară la cursurile universitare în acest domeniu.

Ca referinţă a fost selectat un microcontroller din seria AVR de la compania producator Atmel, iar aplicaţiile vor fi proiectate în mare parte pentru Microcontrollerul ATmega16, care are majoritatea modulelor necesare pentru rezolvarea problemelor din cadrul acestui curs. Deci cursul va conţine descrieri a unor teme şi soluţii ale unor probleme tipice. Am selectat seria AVR în special pentru arhitectura relativ simplă faţă de concurenţii săi principali. Totodată, o pondere mare spre selecţia lui a fost accesibilitatea lui pe piaţă şi preţul acceptabil. Materialele vor fi prezentate în aşa mod ca să fie aplicabile şi pentru alte arhitecturi, diferite de AVR.

Cursul va fi împărţit în două compartimente:
  1. Arhitectura Nucleului Microcontrollerului. Programare ASM - în acest compartiment se analizează în detaliu structura nucleului microcontrollerului, modul de funcţionare şi modul de lucru cu componentele acestuia prin programare la nivel jos în limbajul ASM.
  2. Programare Microcontrollere în limbajul C. Module periferice.  - unde se va face o iniţiere în programarea Microcontrollerilor în Limbajul C, se va accentua specificul programării Microcontrollerilor în acest limbaj, luat ca unul de nivel înalt. Aplicaţiile vor fi orientate în special spre lucrul cu periferiile Microcontrollerului şi realizarea de aplicaţii cu acestea.
În cadrul acestui curs ve-ţi găsi de asemenea şi exemple de probleme rezolvate care pot servi drept referiţă pentru proiecte mai complexe, la elaborarea lor s-a pretins spre a a le realiza într-un mod mai simplu pentru o inţelegere mai uşoară a soluţiei.

Ca un cuprins de referinţă este prezentat mai jos, care în timp va fi ajustat şi completat.

1. Arhitectura Nucleului Microcontrollerului. Programare ASM
  1. Arhitectura Microcontrolerului. Organizarea memoriei
  2. Module periferice Modulul periferic GPIO - Port Generic de Intrare/Ieşire.
  3. Sistemul de comenzi al microcontrollerului AVR
  4. Iniţire în programare ASM. Stiva. Subrutina, Subrutina cu parametri.
  5. Realizarea construcţiilor algoritmice de bază: condiţii, selecţie multiplă, cicluri.
  6. Constante. Logica booleana. Masca.
  7. Acces direct la memoria SRAM, Variabile, Operaţii cu Variabilele 
  8. Acces indirect la memoria SRAM, Tablouri, Prelucrarea tablourilor.
  9. Întreruperi, Programe cu întreruperi. Întreruperea RESET.
  10. Întreruperea externă.
  11. Watchdog Timer
2. Programare Microcontrollere in limbajul C. Module periferice
  1. Iniţiere în Limbajul C. Structuri de date, functii
  2. Instructiuni ale limbajului C Programe cu întreruperi, acces la periferii
  3. Modulul periferic TIMER0, Contor de timp-evenimente
  4. Modulul periferic TIMER1, mod OC, IC, PWM
  5. Interfeţe analogice. Module periferice AC şi ADC
  6. Interfeţe seriale. Modulele periferice SPI şi UART
  7. Programare eficient în C pentru MCU, Interactiune C-ASM
Ca referinţe a acestui curs sunt luate: Notele de curs a cursurilor universitare "Microprocesoare" şi "Microsisteme", informaţii de pe  bloguri similare. Însă cea mai bogată sursă de inspiraţie totuşi ramîne documentaţia tehnică (Datasheet) şi Appnote-uri de la compania producător Atmel.


Aştept prezenţa voastră prin comentariile pe care le puteţi adăuga.

Lectura placuta...

miercuri, 24 aprilie 2013

Continental Electro-mobility2 Stelaris

logo   
Continental Electro-mobility2 este o competitie studenteasca    ( continental student competition ) de Continental Automotive Romania srl.
 La acest concurs mai multi studenți de la diferite universități, se întâlnesc pentru a prezenta/pune la încercare dispozitivele mobile ( mașinuțe ) realizate de ei pe parcursul a ~ 3 luni.
 Continental Automotive Romania srl oferă 2 motoare și suport financiar pentru realizarea proiectului.
La Clubul Ingineresc Micro Lab vin mai mulți studenți pasionați de electronică și/sau programare unde au posibilitatea să comunice cu alți pasionați și să își implementeze ideeile.
  Clubul Ingineresc Micro Lab se orientează spre organizarea unui mediu de interes pentru  proiectarea şi realizarea a diverselor kituri în domeniul Sistemelor Electronice Dedicate, pregătirea şi educarea specialiştilor în mod concomitent. Fac parte din echipa Stelaris, și vineri ( 26.04.2013 ) trebuie să ajungem la Iași unde o să prezentăm mașinuța noastră. Avem o aplicație realizată în Java care permite controlul prin bluetooth a dispozitivului:
app_java
main_java
  Deasemenea avem și o aplicație pentru Android care permite controlarea dispozitivului Stelaris utilizand butoanele sau accelerometru:
mobile_1 mobile_2
Acum lucram la protocolul de comunicare prin Bluetooth.   Continental Automotive Romania srl a anuntat pe email ca echipele pot să se promoveze utilizand cuvintele cheie Continental Electro-mobility2 StelarisContinental student competition și Continental competitia studenteasca pentru a participa la un mic concurs unde au posibilitatea să primească un premiu special.

Autor: Dan Iftodi

luni, 25 februarie 2013

Problema L5. Keypad 4x4

Pagina principala curs            

Să se proiecteze un sistem care va detecta tasta apăsată şi va afişa caracterul tastei la un afişor cu 7 segmente.

Pentru rezolvarea problemei se recomandă citirea informaţiei despre programele cu întreruperi.

Tastatura 4x4 reprezintă un set de butoane aranjate în rînduri şi coloane. La fiecare intersecţie vom avea cîte un buton care scurt-circuitează conductoarele pentru linia cu coloana respectivă.


duminică, 24 februarie 2013

Problema L4. Prelucrarea Tablourilor în ASM


    Să se inițializeze un tablou declarat în memoria SRAM cu valori introduse de la interfața de intrare a aplicației. Să se calculeze suma elementelor acestui tablou. iar rezultatul sa se afiseze la interfata de afisare.
     Interfața de intrare a aplicației va fi formată dintr-un port GPIO ce va servi pentru setarea valorii pentru a fi transferate catre Microcontroller, și un buton la apasarea caruia datele se vor caprua de catre sistemul de captarea a datelor de intrare, o subrutina tip GetChar().
    Interfata de iesire va servi o pereche de porturi GPIO la care se vor conecta un set de afisoare BCD pentru a avea posibilitatea de a reprezenta spre vizualizare rezultatul evaluarii.
    In aceasta problema, Valorile se vor introduce de la portul A prin apasarea butonului de pe unul din pinii portului B, iar rezultatul se va afişa la porturile C şi D.
figura 1 Schema electrică

sâmbătă, 9 februarie 2013

Problema L3. Evaluarea unei expresii condiţionate.

      Pagina principala curs            

  Problemă. Să se evalueze expresia pentru a calcula rezultatul în dependență de o condiție. Să se realizeze evaluarea expresiei în o subrutină cu parametri de intrare și ieșire la care valorile de pe portul A și B sunt intrări, iar portul C și D - ieșiri.

     Este dat sistemul de expresii:
daca  A+B < A-7
                       C = A-B+13
                       D = A|B >>2
daca  A+B > A-7
                       C = (A-B)>>1
                       D = (A-B)<<1
daca  A+B = A-7
                       C = B-A
                       D = A


vineri, 8 februarie 2013

Problema L2. Lumini Rulante, subrutina Delay

    Pagina principala curs            

    Problemă. Să se proiecteze un sistem bazat pe microcontroler care ar permite deplasarea luminilor rulante, materializat în baza unei subrutine de reținere. Inițializarea configurației  luminilor va fi realizată cu subrutinele.
Schema electrică propusă:
  
     Realizarea sarcinii

   Atmega16 are 4 porturi. Acestea ne permit conectarea a 8x4=32 de leduri fără scheme electrice suplimentare.

joi, 7 februarie 2013

Problema L1. Controlul unui led cu un buton.

Pagina principala curs            

Problemă: Să se proiecteze un sistem care ar permite schimbarea stării unui led din aprins în stinns la apăsarea unui buton. Starea inițială se va considera led aprins.

Serecomanda studierea structurii şi lucrului cu modulul periferic GPIO şi sistemul de comenzi AVR.

Сonectarea led-urilor şi butoanelor la pini: 

- Butonul se conectează de la pin la gnd ca în figura de mai jos. Pinul la rîndul său se configurează în următorul mod: DDRxy=0, PORTxy=1. Astfel cînd butonul nu este conectat, prin rezistorul pull-up, la pin va fi aplicată o tensiune înaltă, care corespunde cu "1" logic. Bitul PINxy la citire ne va da valoarea "1". Dacă butonul va fi conectat ieşirea pinului va fi conectată la ground, astfel de pe pinul PINxy se va citi "0" logic.În modul următor PINxy ne va indica dacă butonul este conectat sau nu.Rezistorul Pull-Up este încorporat în microcontroler, de aceea este desenat cu linii întrerupte.

luni, 14 ianuarie 2013

Examplu Test de evaluare finala Microprocesoare 2012

In acest post este prezentat un exemplu de test de evaluare pentru Cursul de Microprocesoare, ati putea utiliza acest exemplu pentru a verifica cunostintele in acest domeniu, Am incercat sa cuprindem in el verificarea tuturor temelor principale in ce priveste lucrul cu un microcontroller asa ca arhitectura microcontrollerului, sistemul de comenzi, subrutine, memoria reprezentata de variabile si tablouri, constructii algoritmice si module periferice, in speranta ca va accentua momentele importante a cursului, si va apela la recapitularea lor. Sursele de informare a acest curs sunt atat postarile de pe acest site cat si notitele de curs si orele de laborator din cadrul cursului de Microprocesoare de la Universitatea Tehnica a Moldovei, specialitatile Microelectronica si Inginerie Biomedicala.