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 UNO | ATtiny85 | Nr nóżki ATtiny85 |
5V | VCC | [8] |
GND | GND | [4] |
Pin 13 | Pin 2 [SCK] | [7] |
Pin 12 | Pin 1 [MISO] | [6] |
Pin 11 | Pin 0 [MOSI] | [5] |
Pin 10 | Reset [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:
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