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

Następnie wchodzimy w Board Manager…

I wyszukujemy tę zakładkę:

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

Podłączenie ATtiny do Arduino UNO:

Arduino UNOATtiny85Nr nóżki ATtiny85
5VVCC [8]
GNDGND[4]
Pin 13Pin 2 [SCK][7]
Pin 12Pin 1 [MISO][6]
Pin 11Pin 0 [MOSI][5]
Pin 10Reset [RESET][1]

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.
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.

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

/*
Blink
*/

void setup() {
// definiujemy pin 3 [nóżka 2] jako wyjście
pinMode(3, OUTPUT);
}

void loop() {
digitalWrite(3, HIGH);
delay(10);
digitalWrite(3, LOW);
delay(10);
}

I wgrywamy go do ATtiny85 korzystając z funkcji:

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

Dodaj komentarz