R - Zakład Urządzeń Mechatronicznych

Download Report

Transcript R - Zakład Urządzeń Mechatronicznych

POLITECHNIKA POZNAŃSKA
WBMiZ
Zakład Urządzeń Mechatronicznych
STEROWNIKI URZĄDZEŃ
MECHATRONICZNYCH
LAB
[email protected]
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
ADC
Kolokwium
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
• Sprawozdania:
– indywidualnie
– Sprawozdanie jest przyjmowane, na „+”, na „-” bądź na „0”.
• Plusy za aktywność oraz za samodzielność podczas ćwiczeń
• Kolokwium końcowe z całości materiału poznanego na lab.
• Ocena końcowa to średnia ważona ocen z wejściówek z
wagą 1 oraz oceny z kolokwium z wagą 2
• W sytuacjach wyjątkowych dopuszczane jest zwolnienie z
kolokwium na podstawie ocen z wejściówek i zebranych
plusów z ćwiczeń.
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)
• Na zajęciach programujemy w języku GCC.
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=0b000001000; //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ę
I proszę o sporządzenie listy osób wg poniższego przykładu
Przedmiot:
SUM - lab
Grupa:
MCH2
Dzień, Godzina:
Piątek, 19:30
Mail do starosty bądź osoby kontaktowej
ktoś@gov.pl
NAZWISKO
IMIĘ
Kowalski
Jan
Itd…
Itd…
Itd…
Itd…
Itd…
Itd…