POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH LAB [email protected] CMBiN p.209 Urządzenia mechatroniczne Mechanika Elektronika ? Co nimi steruje? Co to jest mikrokontroler? Co to jest mikroprocesor?1 1 ? ? Co to jest mikroprocesor? •

Download Report

Transcript POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH LAB [email protected] CMBiN p.209 Urządzenia mechatroniczne Mechanika Elektronika ? Co nimi steruje? Co to jest mikrokontroler? Co to jest mikroprocesor?1 1 ? ? Co to jest mikroprocesor? •

POLITECHNIKA POZNAŃSKA
WBMiZ
Zakład Urządzeń Mechatronicznych
STEROWNIKI URZĄDZEŃ
MECHATRONICZNYCH
LAB
[email protected]
CMBiN p.209
Urządzenia mechatroniczne
Mechanika Elektronika ?
Co nimi steruje?
Co to jest mikrokontroler?
Co to jest mikroprocesor?
0
1
0
1
?
?
Co to jest mikroprocesor?
• Mikroprocesor przetwarza sygnały wejścia na
sygnały wyjścia według wcześniej zdefiniowanego
programu
• Sam mikroprocesor jest zdolny jedynie do
cyfrowych operacji logicznych, nie jest on zdolny
do sterowania maszynami mechanicznymi ani
nie cyfrowymi układami elektronicznymi
• Aby mikroprocesor mógł sterować maszyną
należy doposażyć go w tzw. peryferia
• Mikroprocesor + peryferia = mikrokontroler
Standardowe peryferia wewnętrzne mikrokontrerów
• Zegar wewnętrzny (generator RC)
• GPIO
• TIMER/COUNTER
• INT (zwane także EXTI)
• ADC
• PWM
• Pamięć RAM
• Pamięć Flash
• Pamięć EEPROM
• Interface’y komunikacyjne (SPI, UART, USART, I2C, CAN)
• Watchdog
• DAC
• I inne…
Harmonogram Laboratorium
0)
1)
2)
3)
4)
5)
6)
Zajęcia organizacyjne
GPIO
INT (EXTI)
TIM/CNT
PWM
(sprawozdanie z ćw. 1-3)
ADC
Kolokwium/odróbki/poprawki
(sprawozdanie z ćw. 4-5)
Instrukcje: www.zum.put.poznan.pl
•
•
•
•
•
Ocena
Wejściówki:
– mogą pojawić się na każdym ćwiczeniu w formie ustnej bądź pisemnej
– Osoba, która z uwagi na nieobecność nie pisała wejściówki jest zobligowana do napisania
jej w terminie późniejszym
– Osoba, która odrobiła zajęcia z inną grupą u innego prowadzącego zobligowana jest do
napisania wejściówki u swojego oryginalnie prowadzącego zajęcia wykładowcy.
Sprawozdania:
– Są składane indywidualnie
– Są składane na zajęciach:
• nr 4 z ćwiczenia 1,2 i 3
• nr 6 z ćwiczenia 5 i 6
– Sprawozdanie jest przyjmowane, na „+”, na „-” bądź na „0”.
Plusy
– za aktywność oraz za samodzielność podczas ćwiczeń
– Za wykonanie ostatniego ćwiczenia lab. na każdych zajęciach
– Dodatkowy bonus dla pierwszej osoby która wykona ostatnie ćwiczenie lab. na danych
zajęciach
Ocena końcowa wystawiana na podstawie średniej oceny z wejściówek zmodyfikowana o +/zdobyte na zajęciach
Kolokwium końcowe dla chętnych z całości materiału poznanego na lab. celem poprawienia
proponowanej wcześniej oceny końcowej
Ocena c.d.
• Nie możliwe jest ocenienie działania
software’u bez wiedzy o działaniu hardware’u.
Dlatego też prawidłowa odpowiedź na
wejściówce bądź kolokwium musi zawierać
pełne informacje o obu sferach aplikacji.
• Na zajęciach obowiązuje podstawowa
znajomość języka C (a ściślej ANSI C), która
zostanie sprawdzona.
• Na zajęciach programujemy w języku GCC.
Na zajęciach student
zobowiązany jest posiadać:
Nośnik pamięci (penddrive) zawierający:
• Instrukcję .pdf do aktualnego ćwiczenia
• Pliki przykładowych programów dołączonych do
instrukcji aktualnego ćwiczenia
• Notę katalogową do MPU AtMega128 (.pdf)
• Opis zestawu dydaktycznego (.pdf)
• Swoje poprzednie programy
• Instrukcję LAB0-wprowadzenie.pdf
• Instrukcję SUM - opis zestawu dydaktycznego.pdf
Literatura:
Wydawnictwo BTC:
• „Mikrokontrolery AVR ATmega w praktyce”
• „Mikrokontrolery AVR w praktyce”
• „Mikrokontrolery AVR - niezbędnik programisty”
• „Mikrokontrolery dla początkujących”
• „Sztuka programowania mikrokontrolerów AVR –
podstawy”
• „Sztuka programowania mikrokontrolerów AVR –
przykłady”
MCU na zajęciach
•
•
•
•
•
•
8 bit
Producent MCU: ATMEL
Rodzina MCU: AVR
Podrodzina MCU: ATmega
Model MCU: ATmega128
Środowisko IDE:
– AVR studio (freeware)
– WinAVR : AVR-GCC for Windows (freeware)
• Nota katalogowa
– google:„ATmega128.pdf”
– pobrać:„doc2467.pdf” (ENG, 386str.)
Pytania odnośnie zaliczenia bądź formy
prowadzenia zajęć?
GPIO
• General Purpose Input / Output
• GPIO w mikrokontrolerze podzielone są na grupy logiczne
zwane PORT
• Pojedynczą nóżkę GPIO nazywamy PIN
• Porty znakowane są literami np.: PORTA, PORTB, itd…
• Piny są numerowane od 0 do 7 (dla MCU 8 bit)
• Aby zaadresować GPIO podaje się port i pin np.: PORTA,
pin1 lub prościej PA1 (czyli druga nóżka portu A)
• GPIO może przyjąć jedynie 2 stany logiczne 0 lub 1
• Dla stanu 0 potencjał na danej nóżce wynosi 0[V], a dla
stanu 1 potencjał wynosi 5[V] (wg. standardu TTL)
GPIO
• Aby sterować GPIO ustawia się tzw. rejestry
konfiguracyjne
• Rejestry konfiguracyjne dla 8 bitowych MCU są
8 bitowymi zmiennymi (unsigned char)
• W języku GCC zapis rejestru wygląda
następująco:
– Binarnie: REJESTR=0b00000010;
– Decymalnie: REJESTR=10;
– Heksadecymalnie: REJESTR=0x10;
software:
DDRx: Rejestr kierunkowy
• 0 na danej pozycji rejestru oznacza, że
odpowiadający pin jest traktowany jako WEJŚCIE
• 1 na danej pozycji rejestru oznacza, że
odpowiadający pin jest traktowany jako WYJŚCIE
DDRC=0b00011000;
software:
PORTx – rejestr WYJŚCIA
• 0 na danej pozycji rejestru oznacza, że
odpowiadający pin ustawiony w stan
logicznego 0 (potencjał 0[V])
• 1 na danej pozycji rejestru oznacza, że
odpowiadający pin ustawiony w stan
logicznego 1 (potencjał 5[V])
software:
PINx – rejestr WEJŚCIA
• Uwaga! Nazwa rejestru PINx może być mylona
ze słowem „pin” opisującego potocznie
„nóżkę” układu scalonego w j. ang.
• Jest to rejestr tylko do odczytu.
• 0 na danej pozycji rejestru oznacza, że przez
odpowiadający pin nie płynie prąd.
• 1 na danej pozycji rejestru oznacza, że przez
odpowiadający pin płynie prąd.
hardware:
Podłączenie WYJŚCIA
• Maksymalna obciążalność prądowa GPIO dla ATmega128 wynosi
40mA
• Suma wszystkich prądów mikrokontrolera ATmaga128 nie może
przekroczyć 200mA
•
•
•
•
PORTA=0b00000010;
PORTA=0b00000100;
PORTA=0b00000000;
PORTA=0b00000110;
+5V
R
PA1
D1
R
PA2
D2
GND
hardware:
Podłączenie WEJŚCIA
• Maksymalna obciążalność prądowa GPIO dla ATmega128 wynosi 40mA
• Pin należy podłączyć tak aby prąd przepływał bądź aby był uziemiony
+5V
R
PA3
• Istnieje kilka możliwych rozwiązań
•
GND
– Pull-up zewnętrzny
– Pull-up wewnętrzny
– Pull-down zewnętrzny
– Pull-down wewnętrzny
– Floating
Na potrzeby zajęć będziemy używać jedynie podłączenia „pull-up zewnętrzny”
+5V
R
Rwew.
PA3
GND
+5V
R
R≈0
Rwew.
PA3
GND
Przykład: przycisk + LED
Hardware:
+5V
R
SW1
PB3
GND
R
PA2
D1
GND
Software:
void main(void)
{
DDRA=0b00000100;
DDRB=0;
PORTA=0b00000000;
PORTB=0b00000000;
while(1)
{
if(PINB!=0) PORTA=0b00000100;
else
PORTA=0b00000000;
}
}
Maski bitowe
•
•
•
•
•
•
&
|
~
^
>>
<<
iloczyn bitowy
suma bitowa
negacja
XOR
przesuwanie bitowe w prawo
przesuwanie bitowe w lewo
& (iloczyn)
Bitowo: X & Y = Z
18dec
X
0
0
0
1
0
0
1
0
Y
0
0
0
0
1
0
1
0
10dec
Z
0
0
0
0
0
0
1
0
2dec
Bitowo: 18 & 10 = 2
Logicznie: 18 && 10 = 1 (prawda i prawda = prawda)
| (suma)
Bitowo: X | Y = Z
X
0
0
0
1
0
0
0
1
17dec
Y
0
0
0
0
1
0
0
1
9dec
Z
0
0
0
1
1
0
0
1
25dec
Bitowo: 17 | 9 = 25
Logicznie: 17 || 9 = 1 (prawda lub prawda = prawda)
~ (negacja)
Bitowo: ~X
X
0
0
0
1
0
0
0
1
~X
1
1
1
0
1
1
1
0
Bitowo: ~17=238
Logicznie: !17 =0 (nie prawda = fałsz)
17dec
238dec
^ (XOR)
Bitowo: X ^ Y = Z
X
0
0
0
1
0
0
0
1
17dec
Y
0
0
0
0
1
0
0
1
9dec
Z
0
0
0
1
1
0
0
0
12dec
Bitowo: 17 ^ 9 = 12
Logicznie: brak odpowiednika w języku ANSI C
<< (przesuwanie bitowe) >>
Bitowo: X<<Y = Z
X
1
0
0
1
0
0
0
145dec
1
Y
0
0
0
0
0
0
1
0
2dec
Z
0
1
0
0
0
1
0
0
68dec
Bitowo:
145<<2=145*4=580=68 (przepełnienie unsigned char)
Dostęp bitowy
•
•
•
•
•
•
•
•
PORTA=0b00001000;
//ustawia cały port
PORTA=(1<<3);
//ustawia cały port
PORTA=PORTA|(1<<3); //ustawia jeden pin
PORTA|=(1<<3);
//prościej
PORTA&=(1<<3); źle //nie kasuje pinu
PORTA&=~(1<<3); dobrze
//kasuje pin
PORTA^=0xFF;
//neguje cały port
PORTA^=0b00001111; //neguje 4 piny
+5V
Software:
Hardware:
R
PA0
R
PA1
R
PA2
Przykład 2
void main(void)
SW1
{
DDRA=0b00000110;
PORTA=0b00000000;
while(1)
GND
{
if(PINA&0b00000001==1)
{
D1
PORTA|=(1<<1);
PORTA&=~(1<<2);
}
GND
else
D2
{
PORTA&=~(1<<1);
PORTA|=(1<<2);
GND
}
}
}
//we/wy
//stan pocz.
//pętla główna
//warunek we.
//jeśli prawda
//ustaw 1 na poz. 1
//ustaw 0 na poz 2
//jeśli fałsz
//ustaw 0 na poz. 1
//ustaw 1 na poz. 2
ułatwienie
• Zapis „PINA&0b00000001” można zastąpić w
języku GCC komendą:
bit_is_set(REJESTR,POZYCJA)
Np.. If(bit_is_set(PINA,0)) {…}
• Dostępna jest też komenda
bit_is_clear(REJESTR,POZYCJA)
• Komendy te znajdują się w bibliotece
#include <avr/io.h>
+5V
Hardware:
R
PA0
R
PA1
R
PA2
Przykład 2
#include <avr/io.h>
void main(void)
SW1
{
DDRA=0b00000110;
PORTA=0b00000000;
while(1)
GND
{
if(bit_is_set(PINA,0))
{
D1
PORTA|=(1<<1);
PORTA&=~(1<<2);
}
GND
else
D2
{
PORTA&=~(1<<1);
PORTA|=(1<<2);
GND
}
}
}
Software:
//we/wy
//stan pocz.
//pętla główna
//warunek we.
//jeśli prawda
//ustaw 1 na poz. 1
//ustaw 0 na poz 2
//jeśli fałsz
//ustaw 0 na poz. 1
//ustaw 1 na poz. 2
programowanie
PC
Program *.c
biblioteki *.h
kompilacja Kod maszynowy
*.hex
USB
PCB
Programator
JTAG lub ISP
MCU
Pamięć
FLASH
Interface
JTAG lub ISP
Pytania?
www.zum.put.poznan.pl
dziękuję
Proszę o sporządzenie listy osób wg poniższego przykładu
w formacie .txt
Nazwisko proszę podawać jako pierwsze (przed imieniem)
Przedmiot:
SUM – lab
Grupa:
MCHxx
Dzień, Godzina:
Piątek, 21:30
Tydzień
Parzysty (nad kreską)
Mail do starosty bądź osoby kontaktowej
ktoś@mail.pl
NAZWISKO
IMIĘ
Kowalski
Jan
Itd…
Itd…