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 ReportTranscript 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…