Arduino, ATtiny

ATtiny85 – czyli wkraczamy w świat małych mocarzy

ATtiny85 to mały, tani procesor, który podobno świetnie poradzi sobie w wielu sytuacjach. Na początek zmusimy go do zamrugania diodą. Oczywiście.
Podobnie jak w przypadku programowania Atmegi328 nie będzie to takie proste, ale zapewniam, że się uda.

Podczas pisania korzystałem między innymi z bardzo pomocnego artykułu Arkadiusza Merty: PROGRAMOWANIE ATTINY85 PRZEZ ARDUINO UNO

Kompletne informacje o układzie ATtiny85 znajdziemy na stronie firmy Atmel.

Arduino IDE nie wspomaga ATtiny85 więc musimy dodać mikrokontrolery ATtiny do Arduino. Wchodzimy w tym celu do zakładki Arduino -> Preferences szukamy okienka Additional Boards Manager URLs i wpisujemy ten adres: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json.

ATtiny85_AddBoard

Następnie wchodzimy w Board Manager…

ATtiny85_AddBoard_A

I wyszukujemy tę zakładkę:

ATtiny85_AddBoard_B

U mnie ATtiny są już zainstalowane, Wy musicie to zrobić. Wówczas w zakładce Tools -> Board: pojawią się mikrokontrolery ATtiny.

ATtiny85_AddBoard_C
ATtiny85_pinoutA

Podłączenie ATtiny do Arduino UNO:

Uno   –   ATtiny85

5V         –   Vcc
Gnd      –   Gnd
Pin 13  –   Pin 2
Pin 12  –   Pin 1
Pin 11  –   Pin 0
Pin 10  –   Reset

Dodatkowo zaleca się połączyć RESET Arduino Uno z masą przez kondensator 10uF. Minus elektrolitu łączymy z masą. Ma to zapobiegać zakłóceniom przy programowaniu zewnętrznego procesora.

Zrzut ekranu 2017-09-05 o 17.04.16

Pamiętajmy, że do Arduino Uno należy w zwykły sposób wgrać program ‚ArduinoISP’.

Następnie możemy wgrać dowolny program. Należy wybrać: Board:”ATtiny25/45/85″ oraz Processor: „ATtiny85”
Clock dowolny, byle wewnętrzny, żeby nie trzeba było podłączać zewnętrznego oscylatora.

Zrzut ekranu 2017-09-03 o 23.27.29

Następnie otwieramy dowolny skecz, na przykład taki:


/*
Blink by yarogniew
*/

void setup() {
// initialize digital pin LED_BUILTIN as an output.
for( int i=1; i<=13; i++)
pinMode(i, OUTPUT);
}

void loop() {
for( int i=1; i<=13; i++){
digitalWrite(i, HIGH); // turn the LED on
delay(100);
digitalWrite(i, LOW); // turn the LED off
delay(100);
}
}

I wgrywamy go do ATtiny85 korzystając z funkcji:

ArduinoISP_1

Dzięki bibliotece mamy dostęp do następujących funkcji:

pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()

Fizyczne i programowe wyprowadzenia pinów ATtiny85:

attiny85_pins_Arduino

Przykładowe funkcje:

digitalWrite(3, HIGH); Ustaw fizyczny pin 2 na wartość wysoką
digitalWrite(4, LOW); Ustaw fizyczny pin 3 na wartość niską
analogWrite(1, 127); Wygeneruj sygnał PWM na fizycznym pinie 6 o stopniu wypełnienia 50%
analogWrite(0, 255/4); Wygeneruj sygnał PWM na fizycznym pinie 5 o stopniu wypełnienia 25%
analogRead(A1) Odczytaj wartość napięcia na fizycznym pinie 7
analogRead(A3) Odczytaj wartość napięcia na fizycznym pinie 2

DODATKOWE MATERIAŁY:

http://playground.arduino.cc/Code/USIi2c

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s