Top Banner
Wykład w ramach zajęć Akademia ETI Inż. Kamil Kujawski Inż. Krzysztof Krefta
34

Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Oct 10, 2018

Download

Documents

lenhi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Wykład w ramach zajęć Akademia ETI

Inż. Kamil Kujawski

Inż. Krzysztof Krefta

Page 2: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Metody programowania

Assembler

Język C

BASCOM

Page 3: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Assembler – kod maszynowy

Zalety:

Najbardziej efektywny

Intencje programisty są realizowane

dokładnie

Najszybszy i najmniejszy

Wady:

Bardzo długi i trudny czas tworzenia

Nieczytelny

Page 4: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Assembler – kod maszynowy

Zalety:

Najbardziej efektywny

Intencje programisty są realizowane

dokładnie

Najszybszy i najmniejszy

Wady:

Bardzo długi i trudny czas tworzenia

Nieczytelny

Page 5: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

BASCOM AVR

Zalety: Prosty (?) dla początkującego użytkownika

Wady: Bardzo nie optymalny (wymaga dużo

pamięci FLASH i RAM)

Najdłuższy czas wykonywania

Niestandardowy (wyjątkowy dla AVR)

Programista ma niewielki wpływ na to jak kompilator wykona polecenie.

Page 6: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Język C

Zalety: Standard przemysłowy / dużo bibliotek

Optymalny stosunek szybkość tworzenia do wykonywania kodu

Pozwala pracować na danych abstrakcyjnych

Wady Programista nie ma pełnego wpływu na to

jak kompilator zrealizuje / zoptymalizuje polecenie (czasami powoduje błędy)

Page 7: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Operacje bitowe na rejestrach i danych

Page 8: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Operacje bitowe

Chcąc wpisać jedną ‘jedynkę’ na jednym

z pól rejestru (bądź też dowolnej danej)

musimy się posłużyć operacjami

bitowymi (eng. Bitwise), nie ma

gotowego polecenia „wpisz na pozycję

4tą jedynkę”, ale jest na to bardzo prosty

sposób…

Page 9: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Operatory logiczne

W warunkach stosuje się podwójne

operatory „ if(a && b) ” lub „ if(a || b) ”

W równaniach stosuje się pojedyncze

operatory:

X = (a|b)&c;

Page 10: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

Page 11: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

0 | 0 = 0

Page 12: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

0 | 1 = 1

Page 13: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

1 | 0 = 1

Page 14: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

0 | 0 = 0

Itd…

Page 15: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne lub (wstawianie ‘1’)

Dana wejściowa 0 0 1 0 1 1 1 0

(|| lub) maska 0 1 0 0 0 0 0 0

Dana wyjściowa 0 1 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 1

Procesor przeprowadza operację

„lub” logicznego dla każdego bitu.

Lub w C zapisujemy jako „ | „

Przykładowo:

0 | 0 = 0

Itd…

Page 16: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

0 & 0 = 0

Page 17: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

0 & 1 = 0

Page 18: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

1 & 0 = 0

Page 19: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

0 & 0 = 0

Page 20: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

1 & 1 = 1

Page 21: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne ‘i’ (wstawianie ‘0’)

Dana wejściowa 0 0 1 0 1 1 1 0

(&& and) maska 0 1 0 0 1 1 0 0

Dana wyjściowa 0 0 0 0 1 1 0 0

X Y OUT

0 0 0

0 1 0

1 0 0

1 1 1

Procesor przeprowadza operację „i”

logicznego dla każdego bitu.

‘i’ w C zapisujemy jako „ & „

Przykładowo:

1 & 0 = 0

Itd…

Page 22: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne XOR

Dana wejściowa 0 0 1 0 1 1 1 0

(^ XOR) maska 0 0 0 0 0 1 0 0

Dana wyjściowa 0 0 1 0 1 0 1 0

(^ XOR) maska 0 0 0 0 0 1 0 0

Dana wyjściowa 0 0 1 0 1 1 1 0

X Y OUT

0 0 0

0 1 1

1 0 1

1 1 0

Procesor przeprowadza operację

„wyłącznego lub (exclusice or)”, daje

ona 1 tylko gdy stany są różne.

‘XOR’ w C zapisujemy jako „ ^ „

Page 23: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Logiczne przesunięcie w lewo

Dana wejściowa 0 0 1 0 1 1 1 0

Przesunięcie (shift) 3

Dana wyjściowa 0 1 1 1 0 0 0 0

Procesor przeprowadza przesunięcia bitowego w lewo będącego

mnożeniem przez 2. Przesuwa Ona wartość w lewo.

W C zapisuje się tę operację jako <<

Przykładowo powyższe przesunięcie to:

Wyjście=(dana<<3)

Analogicznie działa to w drugą stronę dla przesunięcia w prawo

(dzielenia przez dwa).

Page 24: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Ustawianie bitów w języku C

Uint8_t set_bit(uint8_t dana, uint8_t bit)

{

uint8_t out;

out = (dana | (1<<bit));

return (out);

}

Page 25: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Zmiana stanu bitów w języku C

Uint8_t tog_bit(uint8_t dana, uint8_t bit)

{

uint8_t out;

out = (dana^(1<<bit));

return (out);

}

Page 26: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

GPIO – General Purpouse Input Output

Page 27: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Rejestry sterujące

Jak każdym peryferium mikrokontrolera

tak i modułem wyjść/wejść steruje się za

pomocą rejestrów. W układach z

rdzeniem AVR używane do tego są 3

rejestry DDRx, PORTx, PINx (gdzie X

oznacza numer portu np. PORTA lub

PORTC).

Page 28: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Rejestry sterujące

Każdy bit odpowiada odpowiedniemu

wyprowadzeniu (nóżce) układu.

Page 29: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Rejestry sterujące

Każdy bit odpowiada odpowiedniemu

wyprowadzeniu (nóżce) układu.

Page 30: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Rejestry sterujące

DDRx – Data Direction Register

Steruje kierunkiem przepływu danych

(wyjście/wejście). W stanie wejściowym

ustawia pin w stan wysokiej impedancji tak

aby jego sygnał był słaby.

PORTx

Ustawia wyjścia portu (wysoki / niski)

PINx

Czyta stan z portu (wysoki / niski)

Page 31: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Rejestry sterujące

Przykłady konfiguracji:

DDRB =0x01=0b00000001

PORTB=0x03=0b00000011

//pierwszy pin służy jaki silne wyjście, drugi

jako wejście ze słabym podciągnięciem do

masy. Obie końcówki łączymy z masą przez

rezystor 1k Ohm.

PINB=0x01=0b00000001

Page 32: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Ustawienie wyjść i wejść układu

Void main()

{

//chcemy aby piny 5 6 7 portu E były wejściami, //ale 0 1 2 był wyjściami (3 i 4 bez znaczenia). //5 Ma być ze słabym podciągnięciem do 5V, a 6 i //7 do masy.

//Piny 0 1 i 2 mają mieć wartość 101.

DDRE= 0x03;

PORTE |=((1<<0)|(1<<2)|(1<<5));

while(1);

Return (0);

}

Page 33: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Czytanie wyjść i wejść układu

Uint8_t sprawdz_portb()

{

//chcemy sprawdzić stan wejść

//mikrokontrolera, nie ważne jak

//ustawione są dane wyprowadzenia

//(wejścia czy wyjścia) i tak możemy je

//sprawdzić. W danym momencie ‘1’ jest na

//5 i 6 nóżce.

char out = PINB;

Return(out);

}

Page 34: Wykład w ramach zajęć Akademia ETI - Strona Głównabpa/kolo_chip/aeti2014/wyk2.pdf · BASCOM AVR Zalety: ... rdzeniem AVR używane do tego są 3 rejestry DDRx, PORTx, PINx (gdzie

Przykładowy kod migający:

#include <avr/io.h>

#include <util/delay.h>

#define F_CPU 16000000

int main(void)

{

DDRD=0x00;

PORTD=0xFF;

DDRB=0xFF;

PORTB=0xFF;

while(1)

{

_delay_ms(1000);

PORTB^=0xFF;

}

return;

}