Programowanie ATtiny2313 w BASCOM: Krok po kroku dla początkujących

Programowanie ATtiny2313 w BASCOM: Krok po kroku dla początkujących
Autor Dawid Andrzejewski
Dawid Andrzejewski2 listopada 2024 | 12 min

ATtiny2313 to mały, ale wszechstronny mikrokontroler z rodziny AVR. Popularne narzędzie wśród hobbystów i w edukacji. Programowanie tego układu często odbywa się za pomocą środowiska BASCOM. Mikrokontroler ten oferuje 2 KB pamięci Flash, 128 B RAM i 128 B EEPROM. Może pracować z zegarem do 8 MHz i posiada 18 pinów, w tym 15 I/O. ATtiny2313 znajduje zastosowanie w prostych projektach elektronicznych, takich jak sterowniki LED czy urządzenia pomiarowe.

Najważniejsze informacje:
  • ATtiny2313 to 8-bitowy mikrokontroler AVR
  • Popularne środowisko programistyczne: BASCOM
  • Posiada 2 KB pamięci Flash i 18 pinów
  • Idealny do projektów hobbystycznych i edukacyjnych
  • Wymaga odpowiedniej konfiguracji w BASCOM przed programowaniem
  • Często stosowany w sterownikach LED i prostych urządzeniach pomiarowych

Mikrokontroler ATtiny2313 - Podstawy i specyfikacja

ATtiny2313 to kompaktowy mikrokontroler z rodziny AVR, idealny dla entuzjastów elektroniki i projektów edukacyjnych. Ten 8-bitowy układ oferuje imponującą funkcjonalność w niewielkiej obudowie.

Parametr Wartość
Pamięć Flash 2 KB
Pamięć RAM 128 B
Pamięć EEPROM 128 B
Maksymalna częstotliwość 20 MHz
Liczba pinów I/O 18 (15 programowalnych)

ATtiny2313 znajduje szerokie zastosowanie w projektach hobbystycznych. Często wykorzystywany jest do sterowania diodami LED, w prostych systemach pomiarowych czy urządzeniach IoT. Jego niewielkie rozmiary i niskie zużycie energii czynią go idealnym wyborem do przenośnych projektów.

Przygotowanie środowiska programistycznego BASCOM AVR

Aby rozpocząć programowanie ATtiny2313 w BASCOM, należy odpowiednio skonfigurować środowisko. Oto kroki, które należy wykonać:

  1. Pobierz najnowszą wersję BASCOM-AVR ze strony producenta.
  2. Uruchom instalator i postępuj zgodnie z instrukcjami na ekranie.
  3. Po instalacji, uruchom program i przejdź do zakładki "Options" > "Programmer".
  4. Wybierz odpowiedni programator dla ATtiny2313.

Konfiguracja środowiska dla ATtiny2313 wymaga jeszcze jednego kroku. W menu "Tools" wybierz "Chip" i ustaw ATtiny2313 jako docelowy mikrokontroler.

Czytaj więcej: Bateria do samsunga j5: Niech twój telefon nigdy Cię nie zawiedzie!

Konfiguracja projektu dla ATtiny2313 w BASCOM

Tworzenie nowego projektu w BASCOM dla ATtiny2313 jest proste. Kliknij "File" > "New", a następnie zapisz plik z rozszerzeniem .bas. Nadaj mu nazwę odpowiadającą Twojemu projektowi.

Teraz czas na kluczowe ustawienia. Na początku kodu umieść następujące linie:

$regfile = "attiny2313.dat"  ' Określa typ mikrokontrolera
$crystal = 8000000           ' Ustawia częstotliwość zegara na 8 MHz

Te dwie linie są niezbędne do prawidłowego działania programu. Definiują one typ używanego mikrokontrolera oraz częstotliwość jego pracy.

Struktura podstawowego programu

Każdy program dla ATtiny2313 w BASCOM składa się z kilku głównych sekcji. Najpierw mamy deklaracje i konfiguracje, potem inicjalizację zmiennych, a na końcu główną pętlę programu. Oto przykładowy szkielet:

$regfile = "attiny2313.dat"
$crystal = 8000000

' Deklaracje zmiennych
Dim led As Byte

' Konfiguracja portów
Config Portb.0 = Output

' Główna pętla programu
Do
  ' Kod wykonywany w pętli
  Toggle Portb.0
  Waitms 500
Loop
End

Konfiguracja portów wejścia/wyjścia

Zdjęcie Programowanie ATtiny2313 w BASCOM: Krok po kroku dla początkujących

Porty I/O w ATtiny2313 to interfejs między mikrokontrolerem a światem zewnętrznym. Możemy je konfigurować jako wejścia lub wyjścia, w zależności od potrzeb projektu.

Oto przykłady konfiguracji portów:

Config Portb.0 = Output  ' Ustawia pin 0 portu B jako wyjście
Config Portd.2 = Input   ' Ustawia pin 2 portu D jako wejście
Config Pind.3 = Input    ' Alternatywny sposób konfiguracji wejścia

Podstawowe operacje w BASCOM dla ATtiny2313

Sterowanie diodą LED to klasyczny przykład w programowaniu mikrokontrolerów. Oto prosty kod:

Do
  Set Portb.0  ' Włącza diodę LED
  Waitms 500   ' Czeka 500 ms
  Reset Portb.0  ' Wyłącza diodę LED
  Waitms 500
Loop

Ten kod cyklicznie włącza i wyłącza diodę LED podłączoną do pinu 0 portu B.

Odczyt stanu przycisku jest równie prosty:

Do
  If Pind.2 = 0 Then  ' Jeśli przycisk jest wciśnięty
    Set Portb.0  ' Włącz diodę LED
  Else
    Reset Portb.0  ' Wyłącz diodę LED
  End If
Loop

Pętla główna programu

Pętla główna to serce każdego programu dla ATtiny2313. To w niej umieszczamy kod, który ma być wykonywany cyklicznie. Zwykle używamy do tego konstrukcji "Do...Loop":

Do
  ' Kod wykonywany w pętli
  If Pind.2 = 0 Then  ' Sprawdza stan przycisku
    Toggle Portb.0  ' Przełącza stan diody LED
    Waitms 200  ' Krótkie opóźnienie dla debounce
  End If
Loop

Ten kod ciągle sprawdza stan przycisku i reaguje na jego naciśnięcie, przełączając stan diody LED. Opóźnienie zapobiega wielokrotnym przełączeniom przy jednym naciśnięciu.

Kompilacja i wgrywanie programu do ATtiny2313

Proces kompilacji w BASCOM AVR jest prosty:

  • Kliknij "Program" > "Compile" lub użyj skrótu F7
  • Sprawdź okno komunikatów pod kątem błędów
  • Jeśli kompilacja się powiedzie, zobaczysz komunikat o sukcesie

Wybór programatora zależy od Twojego sprzętu. Popularne opcje to USBasp lub AVR ISP. Upewnij się, że wybrałeś odpowiedni w ustawieniach BASCOM.

Wgrywanie programu do ATtiny2313:

  1. Podłącz programator do komputera i mikrokontrolera
  2. W BASCOM, wybierz "Program" > "Send to chip"
  3. Sprawdź ustawienia i kliknij "Program"
  4. Poczekaj na komunikat o zakończeniu programowania
Ważna wskazówka: Zawsze dokładnie sprawdzaj połączenia przed programowaniem. Nieprawidłowe podłączenie może uszkodzić mikrokontroler lub programator!

Rozwiązywanie typowych problemów

Problem z wykrywaniem mikrokontrolera to częsta bolączka początkujących. Sprawdź, czy ATtiny2313 jest prawidłowo podłączony do programatora. Upewnij się, że sterowniki programatora są zainstalowane. Jeśli problem persist uje, spróbuj zresetować fuse bity mikrokontrolera.

Błędy kompilacji często wynikają z literówek lub nieprawidłowej składni. Dokładnie czytaj komunikaty błędów - zwykle wskazują linię i rodzaj problemu. Sprawdź też, czy używasz odpowiednich nazw rejestrów dla ATtiny2313 - niektóre mogą się różnić od innych mikrokontrolerów AVR.

Prosty projekt: Migająca dioda LED

Schemat połączeń jest prosty. Podłącz anodę diody LED do pinu PB0 ATtiny2313 przez rezystor 220 Ω. Katodę diody połącz z masą (GND). Zasilanie mikrokontrolera podłącz do VCC i GND.

Oto kod programu z objaśnieniami:

$regfile = "attiny2313.dat"
$crystal = 1000000  ' Ustawienie częstotliwości na 1 MHz

Config Portb.0 = Output  ' Konfiguracja pinu PB0 jako wyjście

Do
  Toggle Portb.0  ' Przełączanie stanu diody LED
  Waitms 500  ' Opóźnienie 500 ms
Loop
End

Ten program cyklicznie włącza i wyłącza diodę LED co pół sekundy. Instrukcja Toggle zmienia stan pinu na przeciwny, co upraszcza kod.

Rozszerzenie projektu: Sterowanie jasnością LED

PWM (Pulse Width Modulation) pozwala na kontrolę jasności diody LED. ATtiny2313 ma wbudowane timery, które można wykorzystać do generowania sygnału PWM.

Oto modyfikacja kodu dla kontroli jasności:

$regfile = "attiny2313.dat"
$crystal = 1000000

Config Portb.2 = Output  ' Używamy PB2, który obsługuje PWM
Config Timer0 = PWM, Prescale = 64, Compare A PWM = Clear Up

Dim Jasnosc As Byte

Do
  For Jasnosc = 0 To 255
    Pwm0a = Jasnosc
    Waitms 10
  Next
Loop
End

Ten kod płynnie zwiększa jasność diody LED od 0 do maksimum, a następnie proces się powtarza.

Zaawansowany projekt: Termometr cyfrowy

Projekt termometru cyfrowego wymaga czujnika temperatury (np. DS18B20), wyświetlacza LCD oraz ATtiny2313. Potrzebne będą też rezystory podciągające i kondensatory odsprzęgające.

Schemat połączeń: DS18B20 podłącz do PD2 przez rezystor 4.7kΩ do VCC. Wyświetlacz LCD połącz z portami PB ATtiny2313. Pamiętaj o podłączeniu zasilania i masy do wszystkich komponentów.

Oto kluczowe fragmenty kodu:

$regfile = "attiny2313.dat"
$crystal = 8000000

Config 1wire = Portd.2  ' Konfiguracja 1-Wire dla DS18B20
Config Lcd = 16 * 2  ' Konfiguracja LCD 16x2
Config Lcdpin = Pin, Db4 = Portb.4, Db5 = Portb.5, Db6 = Portb.6, Db7 = Portb.7, E = Portb.3, Rs = Portb.2

Dim Temp As Integer

Do
  1wreset  ' Reset magistrali 1-Wire
  1wwrite &HCC  ' Pomiń adresowanie ROM
  1wwrite &H44  ' Rozpocznij konwersję temperatury
  Waitms 750  ' Czekaj na konwersję

  1wreset
  1wwrite &HCC
  1wwrite &HBE  ' Odczytaj scratchpad

  Temp = 1wread(2)  ' Odczytaj 2 bajty temperatury
  Temp = Temp * 10 / 16  ' Konwersja na dziesiątki stopni Celsjusza

  Cls  ' Wyczyść ekran LCD
  Lcd "Temp: " ; Temp / 10 ; "." ; Temp Mod 10 ; " C"
  Wait 1
Loop

Ten kod cyklicznie odczytuje temperaturę z DS18B20 i wyświetla ją na LCD z dokładnością do 0.1°C.

Debugowanie programów dla ATtiny2313

BASCOM AVR oferuje kilka technik debugowania programów dla ATtiny2313:

  • Użycie instrukcji Print do wyświetlania wartości zmiennych
  • Wykorzystanie punktów przerwania (breakpoints)
  • Krokowe wykonywanie programu

Symulacja w BASCOM pozwala na testowanie kodu bez fizycznego mikrokontrolera. To świetne narzędzie do wstępnego debugowania i nauki programowania ATtiny2313.

Optymalizacja kodu dla ATtiny2313

Zarządzanie pamięcią w ATtiny2313 jest kluczowe ze względu na ograniczone zasoby. Unikaj używania zmiennych typu String, preferuj typy Integer lub Byte. Wykorzystuj EEPROM do przechowywania stałych danych.

Oto kilka porad optymalizacyjnych:

  • Używaj zmiennych lokalnych zamiast globalnych, gdy to możliwe
  • Wykorzystuj bitowe operacje zamiast pełnych bajtów, gdy pracujesz na pojedynczych bitach
  • Unikaj zbyt częstego używania instrukcji Delay - zamiast tego wykorzystuj przerwania
  • Kompiluj kod z optymalizacją dla rozmiaru, jeśli zbliżasz się do limitu pamięci Flash

Stosując te techniki, możesz znacznie poprawić wydajność i zmniejszyć zużycie pamięci w swoich projektach z ATtiny2313.

Zaawansowane funkcje BASCOM dla ATtiny2313

BASCOM AVR oferuje wiele zaawansowanych funkcji, które można wykorzystać w projektach z ATtiny2313. Przyjrzyjmy się kilku z nich:

Obsługa przerwań

Przerwania pozwalają na natychmiastową reakcję na zdarzenia zewnętrzne. Oto przykład obsługi przerwania dla ATtiny2313:

Config Int0 = Falling  ' Konfiguracja przerwania INT0 na zbocze opadające
On Int0 Przycisk_Wcisniety  ' Przypisanie procedury obsługi przerwania
Enable Int0  ' Włączenie przerwania INT0
Enable Interrupts  ' Globalne włączenie przerwań

Do
  ' Główna pętla programu
Loop

Przycisk_Wcisniety:
  Toggle Portb.0  ' Przełącz stan diody LED
Return

Ten kod reaguje na naciśnięcie przycisku podłączonego do pinu INT0, przełączając stan diody LED.

Komunikacja szeregowa

ATtiny2313 posiada sprzętowy UART, który można wykorzystać do komunikacji z komputerem lub innymi urządzeniami. Oto przykład konfiguracji i użycia UART:

$baud = 9600  ' Ustawienie prędkości transmisji

Config Com1 = Dummy, Synchrone = 0, Parity = None, Stopbits = 1, Databits = 8
Open "com1:" For Binary As #1

Do
  Print #1, "Hello from ATtiny2313!"
  Waitms 1000
Loop

Ten program wysyła wiadomość co sekundę przez UART. Możesz go użyć do debugowania lub komunikacji z innymi urządzeniami.

Wykorzystanie timera

Timery są niezwykle przydatne w programowaniu mikrokontrolerów. Oto przykład użycia Timer0 do generowania precyzyjnych opóźnień:

Config Timer0 = Timer, Prescale = 64
On Timer0 Moja_Procedura
Enable Timer0
Enable Interrupts

Do
  ' Główna pętla programu
Loop

Moja_Procedura:
  Toggle Portb.0  ' Przełącz stan diody LED
  Timer0 = 250  ' Ustaw ponownie wartość timera
Return

Ten kod przełącza stan diody LED co dokładnie 1 ms (przy częstotliwości zegara 8 MHz).

Projekty zaawansowane z ATtiny2313

Wykorzystanie pełnego potencjału ATtiny2313 wymaga kreatywności i znajomości zaawansowanych technik programowania w BASCOM. Oto kilka pomysłów na zaawansowane projekty:

  1. Sterownik RGB LED z PWM: Wykorzystaj 3 kanały PWM do sterowania kolorową diodą LED. Możesz stworzyć efekty płynnej zmiany kolorów lub reagować na zewnętrzne bodźce.
  2. Prosta stacja pogodowa: Połącz czujnik temperatury i wilgotności (np. DHT11) z wyświetlaczem LCD. Dodaj funkcję rejestrowania danych w EEPROM.
  3. Sterownik silnika krokowego: Wykorzystaj porty I/O do sterowania silnikiem krokowym. Dodaj obsługę przycisków do kontroli kierunku i prędkości.
  4. Prosty syntezator dźwięku: Użyj PWM do generowania różnych tonów. Dodaj przyciski do zmiany częstotliwości i możliwość odtwarzania prostych melodii.

W każdym z tych projektów kluczowe jest efektywne wykorzystanie ograniczonych zasobów ATtiny2313 i optymalizacja kodu.

Podsumowanie i kolejne kroki

Programowanie ATtiny2313 w BASCOM otwiera drzwi do fascynującego świata mikrokontrolerów. Zaczynając od prostych projektów, takich jak migająca dioda LED, możesz stopniowo przechodzić do bardziej zaawansowanych zastosowań.

Oto kilka sugestii dotyczących dalszego rozwoju:

  • Eksperymentuj z różnymi czujnikami i aktuatorami
  • Zgłębiaj techniki oszczędzania energii, wykorzystując tryby uśpienia ATtiny2313
  • Poznaj zaawansowane funkcje BASCOM, takie jak obsługa protokołów komunikacyjnych (I2C, SPI)
  • Rozważ przejście na inne mikrokontrolery AVR, wykorzystując zdobyte umiejętności

Pamiętaj, że kluczem do sukcesu w programowaniu mikrokontrolerów jest praktyka i ciągłe eksperymentowanie. Każdy projekt to okazja do nauki i doskonalenia umiejętności.

Wskazówka końcowa: Dokumentuj swoje projekty i dziel się nimi z społecznością. Nie tylko pomoże Ci to w nauce, ale także inspiruje innych i otwiera możliwości współpracy!

Przewodnik po programowaniu ATtiny2313 w BASCOM: Od podstaw do zaawansowanych aplikacji

Programowanie ATtiny2313 w BASCOM to fascynująca podróż, która rozpoczyna się od zrozumienia podstaw mikrokontrolera i kończy na tworzeniu zaawansowanych projektów. W tym kompleksowym przewodniku omówiliśmy krok po kroku proces konfiguracji środowiska, podstawowe operacje, a także zaawansowane techniki programowania.

Od migającej diody LED po zaawansowane projekty, takie jak termometr cyfrowy czy sterownik silnika krokowego, ATtiny2313 udowadnia swoją wszechstronność i moc. Kluczem do sukcesu jest zrozumienie specyfiki tego mikrokontrolera, w tym jego ograniczeń pamięciowych i możliwości sprzętowych, oraz umiejętne wykorzystanie funkcji BASCOM AVR.

Pamiętaj, że nauka programowania mikrokontrolerów to proces ciągły. Eksperymentowanie, debugowanie i optymalizacja kodu to nieodłączne elementy tej fascynującej dziedziny. Wraz z rosnącym doświadczeniem, będziesz w stanie tworzyć coraz bardziej zaawansowane i efektywne projekty, wykorzystując pełny potencjał ATtiny2313 i środowiska BASCOM.

Źródło:

[1]

https://forum.ep.com.pl/viewtopic.php?t=11368

[2]

http://feriar-lab.pl/kurs-bacom-3-pierwszy-progra/

[3]

https://wileczeknet.blogspot.com/2012/09/programowanie-mikrokontrolerow-avr-cz-2.html

[4]

https://serwis.avt.pl/manuals/AVTKURS_s1.pdf

[5]

https://avrhelp.mcselec.com/attiny2313.htm

Najczęstsze pytania

ATtiny2313 jest świetnym wyborem dla początkujących ze względu na prostotę i niski koszt. Oferuje podstawowe funkcje, które pozwalają na naukę programowania mikrokontrolerów. BASCOM ułatwia start, dzięki intuicyjnej składni. Pamiętaj jednak, że ATtiny2313 ma ograniczoną pamięć, co może być wyzwaniem przy bardziej złożonych projektach.

Podłączenie programatora do ATtiny2313 wymaga połączenia pinów MOSI, MISO, SCK i RESET z odpowiednimi pinami programatora. Upewnij się, że zasilanie jest podłączone prawidłowo. Sprawdź dokumentację programatora i ATtiny2313, aby uniknąć błędów. Użyj płytki stykowej dla łatwiejszego prototypowania. Zawsze dwukrotnie sprawdzaj połączenia przed programowaniem.

BASCOM oferuje przyjazne środowisko dla programistów ATtiny2313. Jego główne zalety to: łatwa do nauki składnia, bogata biblioteka funkcji, wbudowany symulator dla testowania kodu bez hardware'u, efektywna kompilacja kodu oraz wsparcie dla wielu mikrokontrolerów AVR. BASCOM umożliwia szybkie prototypowanie i jest idealny zarówno dla początkujących, jak i zaawansowanych użytkowników.

Tak, możesz używać przerwań w ATtiny2313 programując w BASCOM. ATtiny2313 obsługuje przerwania zewnętrzne, timery i inne źródła. BASCOM zapewnia łatwe w użyciu komendy do konfiguracji i obsługi przerwań. Pamiętaj, aby prawidłowo skonfigurować rejestry przerwań i zachować ostrożność przy ich używaniu, aby uniknąć konfliktów w kodzie.

Debugowanie programu na ATtiny2313 w BASCOM można przeprowadzić na kilka sposobów. Możesz użyć wbudowanego symulatora do testowania kodu bez fizycznego układu. Dla debugowania na żywo, wykorzystaj instrukcje PRINT do wysyłania danych przez UART. BASCOM oferuje też opcję punktów przerwania. W bardziej zaawansowanych przypadkach rozważ użycie debuggera sprzętowego kompatybilnego z ATtiny2313.

5 Podobnych Artykułów

  1. Internet w Albanii: Co musisz wiedzieć o dostępności i prędkości
  2. Baterie 1,5 V: Wszystko o typach, zastosowaniach i wyborze
  3. Schemat Arduino: Jak Prawidłowo Połączyć Komponenty Elektroniczne
  4. Jaki Samsung wybrać? Przegląd najlepszych i wartych uwagi modeli
  5. Jak dobrać kabel do Arduino UNO: Wszystko, co musisz wiedzieć
tagTagi
shareUdostępnij artykuł
Autor Dawid Andrzejewski
Dawid Andrzejewski

Jako entuzjasta nowych technologii i założyciel portalu poświęconego elektronice, moja przygoda zaczęła się od młodzieńczych eksperymentów z pierwszym komputerem. Ta pasja przerodziła się w profesjonalną ścieżkę kariery inżyniera elektronika, co pozwoliło mi zgłębić tajniki najnowszych technologicznych innowacji. Na moim portalu dzielę się wiedzą i doświadczeniem, oferując czytelnikom szczegółowe recenzje, poradniki DIY i analizy trendów w elektronice. Moim celem jest ułatwienie zrozumienia złożonych koncepcji technicznych, inspirowanie do twórczego wykorzystania elektroniki w codziennym życiu oraz promowanie bezpiecznego i świadomego korzystania z nowych technologii. Wierzę, że dzielenie się wiedzą to klucz do budowania społeczności pasjonatów, którzy, tak jak ja, chcą nieustannie odkrywać możliwości, jakie niesie ze sobą postęp technologiczny.

Oceń artykuł
rating-fill
rating-fill
rating-fill
rating-fill
rating-fill
Ocena: 0.00 Liczba głosów: 0

Komentarze(0)

email
email

Polecane artykuły