Jeśli chcemy zbudować prosty układ to szkoda angażować do tego całe Arduino. Możemy wykorzystać jakiś mikrokontroler (samo Arduino też taki posiada).
Mikrokontroler jest to pojedynczy układ scalony, zawierający jednostkę centralną (CPU), pamięć RAM oraz na ogół pamięć programu i rozbudowane układy wejścia-wyjścia.
Ja wykorzystałem mikroprocesor ATTINY2313V firmy Atmel który kosztuje ok. 6-8 złotych.
Co nam będzie potrzebne?
ATTINY posiada zegar systemowy (który taktuje z odpowiednią częstotliwością), więc potrzeba nam tylko mikrokontroler i Arduino. Tak, żadnych innych części (no poza przewodami… ;) )
ATTINY2313
Karta katalogowa: www.atmel.com/Images/doc2543.pdf
Są dwie wersje ATTINY2313. Różnią się tylko kilkoma elementami:
Attiny2313 | Attiny2313V | |
Zasilanie | 2,7 – 5,5V | 1,8 – 5,5V |
Częstotliwość pracy | 0–10 MHz dla 2,7 – 5,5V 0–20 MHz dla 4,5 – 5,5V |
0–4 MHz dla 1,8 – 5,5V 0–10 MHz dla 2,7 – 5,5V |
Liczba instrukcji | 120 | |
Ilość pamięci flash | 2 kB | |
Ilość programowalnej pamięci EEPROM | 128 B | |
Żywotność pamięci EEPROM i flash | 100 000 cykli (zapis/kasowanie) | |
Ilość pamięci SRAM | 128 B | |
oscylator | wewnętrzny | |
Ilość linii wejście/wyjście | 18 programowalnych | |
Ilość kanałów PWM | 4 | |
Programowe blokowanie odczytu | pamięci programu (Flash) – TAK danych(EEPROM) – TAK |
Firma Atmel produkuje mikroprocesor ATTINY2313 w dwóch wersjach. Z wyjściami/wejściami (nóżkami) na dwóch bokach lub czterech. Szukałem w internecie wersji MLF – nie znalazłem w żadnym sklepie, ani nawet zdjęć – wyłącznie specyfikacje techniczną.
Wersja PDIP/SOIC występuje także w odmianach SMD (ATTINY2313-20SU) lub THT (ATTINY2313-20PU). Różnią się one wielkością ale nie mają wpływu na działanie mikrokontrolera. Wygodniejsza jest wersja THT, ze względu na łatwy montaż w płytce stykowej.
Podłączenie gdy mikrokontroler posiada zegar
na przykładzie Atmel ATTINY2313
BIAŁY PRZEWÓD PODŁĄCZAMY PÓŹNIEJ
Arduino | Mikrokontroler |
10 | (RESET/dW) |
11 | PB5 (MOSI/DI/SDA/PCINT5) |
12 | PB6 (MISO/DO/PCINT6) |
13 | PB7 (UCSK/SCL/PCINT7) |
GND (masa – są 3 takie piny w Arduino) | GND |
5V | VCC |
Software
Gdy wgrywamy program na Arduino nie musimy się martwić o dodatkowe pliki. Inaczej jest w przypadku gdy programujemy zewnętrzny mikrokontroler.
Ściągnij te paczki i je rozpakuj:
Jednym z plików w paczce tiny.zip jest plik boards.txt, który zwiększa liczbę obsługiwanych mikrokontrolerów – pojawią się między innymi: ATtiny25, ATtiny45, ATtiny4314, ATtiny84, ATtiny85 oraz nasze ATtiny2313.
Większej ilości urządzeń trzeba szukać w internecie (są gotowe paczki jak i konfiguracje do pojedynczych mikrokontrolerów) – i dopisywać je do pliku boards.txt.
Tworzymy katalogi:
Mac OS X:
user / Dokumenty / Arduino / hardware / tiny
user / Dokumenty / Arduino / libraries / WProgram
Do folderu hardware przenieś zawartość paczki tiny.zip, a do libraries WProgram.zip
Powinno to wyglądać tak:
Jeśli ktoś chce sobie wgrać “gotowca” to wystarczy wystarczy ściągnąć tę paczkę: Arduino
i ją przenieść do folderu:
Mac OS X: user / Dokumenty
Arduino na Windowsa jest w wersji portable, więc wystarczy pliki skopiować do katalogu z aplikacją.
Wgrywamy pliki
- Sprawdź czy masz dobrze wybrany port przez który podłączasz Arduino:
Tools > Serial Port >
oraz dobrą płytkę (mikrokontroler):
Tools > Board > - Otwieramy program i z menu wybieramy:
File > Examples > ArduinoISPMusimy znaleźć linijkę:
1delay(40);i zamienić ją na (zmniejszyć 40 na 20):
1delay(20);Czyli ten fragment kodu będzie wyglądać:
123456789uint8_t hbval=128;int8_t hbdelta=8;void heartbeat() {if (hbval > 192) hbdelta = -hbdelta;if (hbval < 32) hbdelta = -hbdelta;hbval += hbdelta;analogWrite(LED_HB, hbval);delay(20);} - Wgrywamy ArduinoISP na Arduino. Po poprawnym przesłaniu, będziemy mieli komunikat:
- Musimy teraz zmienić tryb działania Arduino. Wybieramy:
Tools > Programmer > Arduino as ISP
- Program który przed chwilą wgraliśmy dotyczył Arduino. Teraz musimy wybrać jakim kontrolerem będziemy się zajmować:
Tools > Board - Niektóre wersje Arduino (np. UNO – NIE, Duemilanove – TAK) muszą mieć połączone w momencie wgrywania programu dodatkowo dwa piny, w celu wyłączenia trybu auto-resetowania (powinno się opornikiem, ale przewodem też działa):
Arduino Arduino RESET VIN - Wgrywamy bootloader, czyli program startowy na danym mikrokontrolerze:
Tools > BurnbootloaderPamiętaj że operacja wgrywania bootloadera jest jednorazowa. Tej czynności nie wykonujesz już w przyszłości. Robi się to tylko raz, na początku.
- Możemy teraz wgrać nasz program!
Pamiętaj że używamy pinów z mikrokontrolera a nie Arduino. Arduino będzie nam służyć tylko i wyłącznie jako źródło prądu (możemy użyć baterii i wtedy Arduino jest całkowicie zbędne). W schemacie musimy sprawdzić jak dany pin (nóżka) nazywa i wpisać to w programie. Pamiętaj że nie każda nóżka będzie działać w programie – część obsługuje zasilanie, a w większych mikrokontrolerach tylko część może być używana w taki sposób jak w programie poniżej. Na przykładzie blink:Program sprawiający że odpowiednio podłączona dioda będzie mrugać:
123456789101112131415// Majsterkowo.plint mruga = 8; // Ustawiamy wyjścia (zobacz zdjęcie powyżej)void setup() {pinMode(mruga, OUTPUT);}void loop() {digitalWrite(mruga, HIGH); // napięcie w pinie 8 (stan wysoki)delay(1000); // 1 sekunda przerwydigitalWrite(mruga, LOW); // brak napięcia w pinie 9 (stan niski)delay(1000); // 1 sekunda przerwy}// Majsterkowo.pl
Cześć,
co to za płytka od której to wszystko wpinasz? Czy ogległości między pinami są znormalizowane? Bo tu wszystkie są równe. Przepraszam za banalne pytanie, ale dopiero chcę zacząć przygodę z elektroniką, więc brak mi podstawowej wiedzy,
Gratuluje świetnego pomysł z tą stroną
Pozdrawiam!
@D4L52SPN:
To uniwersalna płytka stykowa: http://mikrokontrolery.blogspot.com/2011/04/plytka-stykowa-zasady.html
Ile zostanie z 2kB po wgraniu bootloadera?
Błędy i pomyłki w poście można wyeliminować – grunt, że jest to zrozumiałe dla każdego laika, którego ciekawi wkroczenie w świat mikrokontrolerów. Bo chyba właśnie takie jest założenie Majsterkowa – prosto, tanio i praktycznie ;)
Czy w podobny sposób da się zaprogramować Atmega8 lub Atmega16?
Teoretycznie można, ale nam się to jeszcze nie udało ;) Ale nie poddajemy się i mam nadzieję, że na dniach powstanie jeszcze post o ATmegach ;)
@Łukasz Więcek:
Było by bardzo miło. Na arduino mam już działający projekcik i chciałbym go przenieść na atmegę16. Pozostaje kwestia zaprogramowania atmegi. Liczę na was!
Też właśnie mam jeden projekt do przeniesienia i walczę z tą ATmegą ;) Póki co wyjściem awaryjnym jest dla mnie ATtiny44, na którym ten mój projekt się spokojnie zmieści (i w przeciwieństwie do ATtiny2313 ma wejścia analogowe:)
@Łukasz Więcek:
Niby w tym miejscu jest działający sposób na zaprogramowanie atmegi:
http://www.instructables.com/id/How-to-program-a-AVR-arduino-with-another-arduin/
Nie miałem jeszcze czasu aby go przetestować.
@Łukasz Więcek: Dla tych co mają dostęp do portu LPT (stare komputery) wystarczy wtyczka i 4 rezystory 330R i programator gotowy, za niecałe 3 zł.
W jaki sposób stwierdzasz, że mikrokontroler nie został zaprogramowany?
@Dondu: No – ale nie porównujmy programowania w czystym C do programowania w Arduino IDE, z którym poradzi sobie największy laik (a nawet jego dziewczyna;)
A stwierdzam po tym, że Arduino IDE sypie błędami, a program na procku się nie wykonuje ;)
@Dondu: Mógłbyś rozwinąć swoją wypowiedź? Jakiś link, schemat, szerszy opis jak to zrobić. Zaglądają tu też początkujący i myślę że byliby Ci bardzo wdzięczni za lepsze opisanie tematu.
@Dawid: Dondu pokazał na swojej stronie, jak zrobić taki programator na LPT: http://mikrokontrolery.blogspot.nl (swoją drogą polecam zapoznać się z całą zawartością strony:)
@Łukasz Więcek:Wszystko pięknie, tylko w jaki sposób wgrać przez ten programator program działający na arduino do atmegi16? Da się to zrobić przez Arduino IDE?
@Dawid: Jak wspomniałem wcześniej, nie znam środowiska Arduino, ale każdy program jest kompilowany do postaci wynikowej assemblera i musi działać na mikrokontrolerze niezależnie czy jest on w płytce Arduino, czy na płytce stykowej.
Chyba, że nie kumam do końca o co chodzi :-)
A swoją drogą, w Waszych Arduino też ciągle świeci dioda L, nawet jak pin 13 nie jest na stanie wysokim?
tak jezeli maszw wgrane arduino isp – tutaj to widac – https://www.youtube.com/watch?v=cMxacXqxMiM
@Łukasz Więcek: Niestety nie miałem nigdy Arduino w ręku i nie znam środowiska, ale zastanawia mnie, dlaczego macie takie problemy z programowaniem ATmeg, a ATtiny już nie?
Jak każdy kompilator zapewne i środowisko Arduino generuje pliki hex, którymi można zaprogramować mikrokontroler. Czy tak jest?
@Dawid: bardzo proszę: http://mikrokontrolery.blogspot.com/2011/04/jak-najtaniej-zaczac.html
@Dondu: Nie znałem wcześniej tej strony.
Rozumiem, że proponujesz wygenerowanie pliku hex w Arduino IDE a następnie za pomocą innego softu zaprogramować ATmegę przy pomocy tego programatora za 3zł?
@Dawid: Tak, jeżeli da się uzyskać plik HEX z Arduino IDE.
Warto oczywiście dalej powalczyć nad tym projektem, by nie było problemów z ATmegami (trzymam kciuki), ale awaryjnie można robić tak jak napisałem :-)
mógłbyś zrobić post o programowaniu mikro kontrolerów ale przez zwykły programator
@tomek: Mam przed oczyma to maleństwo: http://nettigo.pl/products/307, ale nie mam kiedy się zabrać za ten post :)
Np. przy takim “programie” świeci:
void setup() {
}
void loop() {
}
Mógłby ktoś to sprawdzić na swoim Arduino?
a jak próba wgrania bootloadera do tiny wywala kilometr błędów mimo, że wszystko powyżej zrobione tak samo i potórzone trzy razy to … co sprawdzić?
@warto: Na początek pokaż, co to konkretnie za błędy :) A najlepiej, to opisz wszystko (razem z błędami) na naszym majsterkowym forum w dziale Arduino: https://majsterkowo.pl/forum/problemy-f48.html :)
@Łukasz Więcek:
prosze bardzo:
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: stk500_disable(): unknown response=0x12
miedzy komputerem a tiny jest arduino uno na 100% podlaczone tak jak na obrazkach powyzej swoja droga ten animowany obrazek jest piekny ale zwykjly schemat (obrazkowy i kolorowy) ale nei migajacy bylby chyba wygodnijszy
Osobiście Arduino dopiero zamówiłem, ale z tego co wiem, to fakt, że nie ustawiłeś stanu danego pinu nie oznacza, iż jest on całkowicie “wyłączony”.
A, jeżeli nie jest on odcięty to jakiś stan musi mieć, a możliwości to 0 lub 1, i jest duża szansa, że w przypadku Arduino domyślnie jest 1 ;)
Jest dokładnie tak, jak pisze Krzysiek – jeżeli nie zdefiniujesz dla pinu żadnego stanu, to będzie na nim stan nieustalony – i to jest normalne w całej cyfrowej elektronice :)
Mam wsad w HEXie pod ATMEGĘ, oraz Arduino, chciałbym zaprogramować Atmegę8 jednak muszę zmienić fusebity, czy jest to możliwe przy programowaniu z Arduino czy nie?
Pingback: Zdalne sterowanie mikserem audio za pomocą Arduino » Majsterkowo.pl
A czemu nie użyłeś tego programatora, o którym pisałeś na fb?
Tak prawdę mówiąc, to początkowo nie mogłem rozpracować programowania za pomocą Arduino, dlatego ściągnąłem sobie programator (ale inny, niż pokazywałem na Fb). Później Maciej rozgryzł to programowanie przez Arduino i programator zalega teraz w szufladzie ;)
Ale w sumie mogę przygotować post i pokazać, jak przerzucić program zwykłym programatorem :)
@Łukasz Więcek: Byłoby bardzo miło :) i na pewno się przyda
Pingback: Programowanie mikrokontrolerów za pomocą programatora USBasp » Majsterkowo.pl
Bardzo ciekawy artykuł – mógłby być tylko ciut dłuższy!
A tak w ogóle to gratuluję ciekawej strony!
Z ATMegą8A nie ma większych problemów, tylko trzeba działać na zewnętrznym oscylatorze 16MHz. Wtedy nie trzeba kombinować z boards.txt, bo działa domyślny “Arduino NG or older w/ ATmega8”. Jedna wskazówka, straciłem przez to godzinę życia: bootloader trzeba wgrać PRZED KAŻDĄ aktualizacją programu, inaczej wgra się z błędami. No i na Uno nie trzeba między RESET, a GND podłączać kondensatora 10uF jak mówi tutorial na arduino.cc. Jedyny mankament to to, że od włączenia zasilania do włączenia programu mija około 6 sekund, nie wiem czym to jest spowodowane.
@Maxik: Kilka dni temu udało mi się wreszcie rozpracować ATmega8a i ATmega328 i tak:
– tego kondensatora do resetu nie trzeba rzeczywiście dawać w UNO
– po dodaniu do board.txt odpowiednich wpisów nie trzeba dawać zewnętrznego osylatora
– bootloader wystarczy wgrać tylko raz i programy pięknie wgrywają się zarówno za pomocą Arduino, jak i programatora USBasp :)
@Łukasz Więcek: Wiem, to ja w komentarzu na G+ pytałem o wpis na ten temat :)
Nie mogłem w internecie znaleźć żadnego konkretnego wpisu, więc zaryzykowałem ten od NG i okazał się działać.
Wydaje mi się, że bootloader to wymysł typowo Arduinowy, aby uprościć upload szkiców i nie bierze on żadnego udziału w programowaniu przez USBasp. Dodatkowo wybór profilu może mieć wpływ na to, że jeśli tuż przed wgraniem programu nie wypalę bootloadera to uC programuje się z błędami, nie przechodzi weryfikacji i zwyczajnie nie działa. Nie jest to też jakiś wielki wysiłek – wgranie BL to dosłownie 3s.
Mógłbyś się podzielić wpisami do boards.txt dla ATmega8A? Dla 328 są “oficjalne” na arduino.cc :)
@Łukasz Więcek:
Tak więc kiedy będzie post o Atmedze8 ?
@Jakub: Póki co dodałem na forum post z opisem, jak dodać sobie do powyższej instrukcji obsługę ATmega8 i ATmega328: https://majsterkowo.pl/forum/programowanie-atmega8a-oraz-atmega328p-za-pomoca-arduino-t280.html :)
Witam, czy gdy już zrobię wszystko zeby to zaprogramowac to gdybym czcial wtedy normalnie programowac samo arduino to co muszę pozmieniac w ustawieniach
? przepraszam za taki troche nie zrozumiały komentarz ale jestem w mikrokontroleracz kompletnie zielony
Po prostu wgrywasz swój szkic na Arduino. Programator to tez szkic.
// panie Więcku, proszę o jakąś ikonkę “odkop” albo “górnik” :)
Pingback: Jak sterować dowolnym urządzeniem w domu za pomocą pilota od TV i Arduino? » Majsterkowo.pl
Łukasz, ale podłączając led do pin 8 w arduino trzeba wpisać 6, inaczej nie zadziała. Sprawdziłem- 0 to pin 2 a 8 to pin 11
http://blog.gagalabs.com/programming-the-attiny2313-with-the-arduino-i
Na stronie:
http://www.ernstc.dk/arduino/2313.htm
jest instrukcja jak wgrać program do ATtiny2313 bez wcześniejszego wgrywania bootloadera – tylko wtedy pracuje przy taktowaniu 1MHz.
Z czego to wynika, że dla 8MHz trzeba wgrać bootloader, a dla 1MHz można od razu wysłać sketch i to działa?
W obu wypadkach możesz dodać “skecza” od razu bez bootloadera :) arduino ide 1.0.3
Witam,
dopiero zaczynam przygodę z Arduino itp.
więc pozdrawiam serdecznie wymiataczy :)
płykta z mikrokontrolerem może działać samoistnie po doprowadzeniu zasilania z baterii 9v czy 12v czy jak?
czy po zmontowaniu takiego zestawu Arduino bedzie potrzebne tylko do przesylu danych na plytke?
tzn. czy wystarczy z tej plytki z ATTINY2313 wyprowadzić złącze do Arduino i przesłać program?
Witam, nie rozumiem jednej rzeczy- mianowicie dlaczego opornik i dioda połączone są z pinem 20 ?? czy wszystkie rzeczy podpięte pod mikrokontroler muszą być do tego pinu dołączone, czy mozna to jakos ominąć?
Przeprasza, chodzi mi o pin 11, z tego co zauważyłem nie potrzeba nic mieć podłączone do pinu 8 który mamy zadeklarowany w programie bo działa to tylko dla pinu 11, a w przypadku zmiany w programie nr pinu z 8 na coś innego kompletnie nic nie działa :/
wlasnie podbijam temat kolegii damnbo1993 – nie chcę być negatywnie nastawiony i w ogóle ale jak się robi tutorial który mają powtarzać setki osób to pasowałoby zrobić go dobrze – bo jako tutorial ma on wyjść dobrze i być bezproblemowy.
Całe życie miałęm przekonanie że jak arduino i elektronika to stronka po angielsku – bo jest profesjonalnie i wszystko jasne od razu. A tutaj co – Jeśli na jednym obrazku dajecie info by użyć PIN8 na programowanym IC to ja podłączam pod pin8 – i nic nie działa… no i potem 1.5 godziny szukania skąd ten komunikat >>> avrdude: stk500_initialize(): programmer not in sync, resp=0x15
kombinowanie na każdy możliwy sposób itd. tylko po to by znaleźć informacje że na jednym obrazku dajecie schemat gdzie jest pin 8 a na drugim pin 11… no i oczywiście jedynym poprawnym jest ten pin 11 pokazany jedynie na lekko lipnej animacji zrobionej we fritzingu – bo fritizing to profesjonalizm, aye ?
na przyszłość wrzućcie chociaż normalny schemat wygenerowany z fritziga
Bardzo dziękuję za poradnik, bez niego pewnie za dużo bym nie zrobił :)
Czy jest jakaś szansa na poradnik jak programować ATtiny45 i 85? Są one nieco tańsze i mniejsze :)
PS Znalazłem angielski filmik jak to zrobić: https://www.youtube.com/watch?v=30rPt802n1k
Chcę za pomocą Arduino Duemilanove programować atmegę8A. Udało mi się wgrać bootloader ( http://machtudong.vn/sanpham/atmega8a-pu-tuong-thich-voi-board-arduino.html ) i utknąłem na przypisaniu programu na Atmegę8A.
Skąd wiadomo, które oznaczenie na naklejce (chodzi o te PD1 PD2, PD3, PC… PB…) to Digital pin do wpisania w programie pinMode(?????, OUTPUT); Na płytce Arduino jest wygodny opis bezpośrednio (wypisane numerki), podane które są pwm, gdzie są piny do używania z pomocą AnalogRead jak zrobić sobie taki opis dla Atmegi8?
Wszystko dotąd wydawało mi się takie proste, a tu niespodzianka. Przejrzałem datasheet do atmegi, która jest w płytce arduino i tam też tylko są opisy PD.. PA.. PB i które z nich to na przykład pin 11, 12, 13 nie mogę dojść.
Proszę o wskazanie miejsca gdzie można znaleźć taką informację dla Atmegi8A i Atmega328P.
Na początku datasheet masz rozrysowane obudowy mikrokontrolera wraz z zaznaczonymi pinami i ich wszystkimi funkcjonalnościami. Dodatkowo na następnych stronach w rozdziale Pin Descriptions jest omówienie pinów.
Czy to załatwia Twój problem?
Nie, nie załatwia problemu, bo co z tego, że w datasheet są rozpisane wyjścia, jeśli w Arduino są inne oznaczenia i co innego wpisuje się do programu? :-)
No dobra, ale znalazłem w końcu pod jakim hasłem trzeba szukać: mapowanie pinów czyli pinmapping i pinout.
Tu jest ładny rysunek dla Atmegi328:
http://www.hobbytronics.co.uk/arduino-atmega328-pinout
a ja szukałem dla Atmega8a i znalazłem tutaj:
http://arduino.cc/en/Hacking/PinMapping – z tego rysunku można dowiedzieć się ze PB4 to pin 11 do użycia w programie: pinMode(11, OUTPUT); i np. że pin 5 nie ma PWM jak w arduino. Dla początkującego te oznaczenia są mocno niejasne i takiego właśnie wyjaśnienia szukałem.
Może komuś się przyda:
Atmega88: http://www.morethantechnical.com/2012/04/04/bootloading-an-atmega88-for-arduino-w-code/
http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard
sorry za te pytanie ale gdzie konkretnie trzeba wgrać wprogram i tiny
mam windows xp
Świetny artykuł. Ale działa wam tylko przypadkiem. int mruga = 8; aktywuje tak naprawdę pin 11, a nie 8.
Wyprowadzenia pinów dla AT2313:
http://www.fibidi.com/wp-content/uploads/2012/06/attiny2313-pinout.jpg
Dlaczego tak to jest?
Witam, czy w ten sposób można zaprogramować atmegę 16? Jeżeli jest to możliwe proszę o pomoc :) (co potrzebuję) Jestem początkującym .
Pingback: Własny internetowy termometr » Majsterkowo.pl
Witam, mam pytanko czy atmega328 p taką jak jest w arduino uno można programować po prostu przez podmianę elementów. wyciągam oryginalny wkładam nowy z wgranym bootloaderem i mogę programować?
Jeżeli kupisz atmegę już z bootloaderem i masz Arduino, w którym atmega jest w podstawce, to możesz.
Witam, mam takie pytanie:
Jak podłączyć Atmege328 do programowania przez Arduino?
Kochani, czy możecie mi doradzić jak zrobić żeby do programu fritzinga dodać mikroprocesor attiny 2313? please
Pingback: Lampka zapalana przez Internet » Majsterkowo.pl
Gdzie w ATTINY2313A znajdują się ANALOGowe piny?
Zgodnie z notą katalogową – nigdzie. Polecam przeczytać to:
http://www.atmel.com/images/doc8246.pdf
albo przynajmniej to:
http://www.atmel.com/Images/8246s.pdf
Z racji że stawiam pierwsze kroki z mikrokontrolerami mam takie pytanie czy udało się komuś zmusić do migania LED na Attiny2313A? Zrobiłem wszystko zgodnie z opisem… i nie działa. Wszystko ładnie się ładuję brak błędów itp a dioda nie miga.
Problemem okazały się wyprowadzenia… artykuł wprowadza w błąd (nawet na dołączonej grafice) że pin 8 to fizyczny pin 8 a tak naprawdę jest to pin 11.
Powiem Wam tak – środowisko Arduino jest bardzo fajne, ale tylko wtedy gdy programujemy Arduino, a nie zewnętrzny procesor. Już mówię dlaczego – jeżeli programujemy zewnętrzny procesor, to jego wyprowadzenia wcale nie są takie jak w Arduino. Co to znaczy? No właśnie to, co powyżej. Jeżeli procesor mamy z takimi samymi wyprowadzeniami, to i tak jest problem, bo w Arduino piszą digitalRead(10) oznacza, że chcemy odczytać tak naprawdę PB2 na porcie B, który z kolei jest fizycznie pinem 16. Atmegi328. Moim zdaniem to za duży kłopot. Ja od pewnego czasu próbuję swoich sił w czystym C/C++ i chociaż na początku ciężko się było połapać, programowanie staje się bardziej oczywiste – wystarczy nota katalogowa i można oprogramować każdy procesor.
Polecam spróbować. Arduino też tak można oprogramować, żeby zobaczyć, że początkowa czarna magia staje się bardziej biała.
Pingback: Tablica podświetlana LED RGB sterowana pilotem IR » Majsterkowo.pl
Witam, zaprogramowałem Attiny2313-20PU przez programator usbasp. Wszystko poszło gładko, bez błędów, jednak dioda nie działa (Blink sketch), nie wiem w czym może byc problem, proszę o propozycje, dzieki
Czemu po wgraniu bootloadera do Atmegi 328p przestał działać PWM??
Wejścia i wyjścia cyfrowe działają, analog write do 127: stan niski, od 128: wysoki.
Wersja MLF jest dostępna tutaj: http://sklep.avt.pl/uklad-scalony-attiny2313-20mu-mlf20.html
ten rezystor z diodą to raczej nie w tym miejscu, bo w myśl artykułu:
https://majsterkowo.pl/programowanie-mikrokontrolerow-za-pomoca-programatora-usbasp/
to rezystor miał zabezpieczać układ na powrocie z diody… a tu coś jakby inaczej i ten kod do pinu 9 nie wiem właściwie po co ? nie można po prostu włączać i wyłączać prądu na 8?
Witam mam problem przy ładowaniu programu wyskakuje mi błąd i nie mogę z tym poradzić
sketch_may08a.ino:2:21: error: Arduino.h: No such file or directory
sketch_may08a.ino:2:21: error: Arduino.h: No such file or directory jak rozwiązac ten problem?
Witam, u mnie cały czas pojawia się problem:
“avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.” Wie ktoś może jak temu zaradzić ? Próbowałem reinstalować IDE, sprawdziałem podłączenia, wszystko wygląda prawidłowo. Dodam, że programuję uC AtMega8 używając paczki zamieszczonej w innym artykule Majsterkowa.
Wolałbym, żebyś więcej tłumaczył co dlaczego a nie tylko, żeby to zrobić tak a tamto tak, ale ogólnie ciekawy poradnik. Tylko nie rozumiem stwierdzenia, że Arduino jest tylko do zasilania, jak komputer po USB jest podłączony do Arduino a do niego ATtiny. Jak niby miałby wgrywać program bez Arduino?
To nie są procesory…. Procesor to co innego.. To są mikrokontrolery.
Gdyby ktoś potrzebował – attiny 2313a nie jest poprawnie wykrywane.
mam problem: podczas wypalania bootloadera wyskakuje mi taki bąd: avrdude: stk500_getsync(): not in sync: resp=0x00
https://majsterkowo.pl/naprawa-bledu-avrdude-stk500_getsync-not-in-sync-resp0x00-w-arduino/
ale samo arduino (leonardo R3) działa mi bez problemu
pomocy!!!!!!!!!!!!!!
Witajcie, czy ktoś próbował dostać się do EEPROM w Attiny 2313 przy użyciu bootloadera Arduino?
Czy ktoś próbował wykonać ten projekt w arduino 1.6.3 ? Mam problem z bootloader do Attiny 2313
Mam problem z wgranie programu na Attiny2313. Skorzystałem z powyższego poradnika. Udało się wgrać bootloader, ale jakiegokolwiek programu już nie… Starałem się również znaleźć informację o tym problemie w innych źródłach, ale bez skutecznie. Poniżej treść błędu występującego w moim przypadku. Będę wdzięczny za jakieś wskazówki.
Płytka tiny:avr:attiny2313at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: AVR_ATTINY2313AT1
Uwaga: platform.txt z rdzenia ‘Arduino Tiny’ zawiera przestarzałe tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude, przekonwertowane automatycznie na tools.avrdude.cmd.path={path}/bin/avrdude. Rozważ uaktualnienie tego rdzenia.
Uwaga: platform.txt z rdzenia ‘Arduino Tiny’ zawiera przestarzałe tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf, przekonwertowane automatycznie na tools.avrdude.config.path={path}/etc/avrdude.conf. Rozważ uaktualnienie tego rdzenia.
Uwaga: platform.txt z rdzenia ‘Arduino Tiny’ zawiera przestarzałe recipe.ar.pattern=”{compiler.path}{compiler.ar.cmd}” {compiler.ar.flags} “{build.path}/{archive_file}” “{object_file}”, przekonwertowane automatycznie na recipe.ar.pattern=”{compiler.path}{compiler.ar.cmd}” {compiler.ar.flags} “{archive_file_path}” “{object_file}”. Rozważ uaktualnienie tego rdzenia.
Uwaga: platform.txt z rdzenia ‘Arduino Tiny’ zawiera przestarzałe recipe.c.combine.pattern=”{compiler.path}{compiler.c.elf.cmd}” {compiler.c.elf.flags} -mmcu={build.mcu} -o “{build.path}/{build.project_name}.elf” {object_files} “{build.path}/{archive_file}” “-L{build.path}” -lm, przekonwertowane automatycznie na recipe.c.combine.pattern=”{compiler.path}{compiler.c.elf.cmd}” {compiler.c.elf.flags} -mmcu={build.mcu} -o “{build.path}/{build.project_name}.elf” {object_files} “{archive_file_path}” “-L{build.path}” -lm. Rozważ uaktualnienie tego rdzenia.
exec: “avr-g++”: executable file not found in %PATH%
Błąd kompilacji.
Witam. Jak programować Digispark Attiny85 za pomocą Arduino, nie mogę wkleić bibliotek z płytkami Digisparka.
Świetny poradnik. Dzięki, tego potrzebowałem
Mam problem pokazuje mi się komunikat:
” Płytka tiny:tiny:attiny84at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY84AT1
Płytka tiny:tiny:attiny24at16 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY24AT16
Płytka tiny:tiny:attiny45at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY45AT8
Płytka tiny:tiny:attiny4313at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY4313AT8
Płytka tiny:tiny:attiny85at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY85AT8
Płytka tiny:tiny:attiny44at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY44AT1
Płytka tiny:tiny:attiny4313at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY4313AT1
Płytka tiny:tiny:attiny84at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY84AT8
Płytka tiny:tiny:attiny44at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY44AT8
Płytka tiny:tiny:attiny85at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY85AT1
Płytka tiny:tiny:attiny45at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY45AT1
Płytka tiny:tiny:attiny85at16e nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY85AT16E
Płytka tiny:tiny:attiny25at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY25AT8
Płytka tiny:tiny:attiny2313at8 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY2313AT8
Płytka tiny:tiny:attiny84at16 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY84AT16
Płytka tiny:tiny:attiny85at16p nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY85AT16P
Płytka tiny:tiny:attiny2313at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY2313AT1
Płytka tiny:tiny:attiny85at128 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY85AT128
Płytka tiny:tiny:attiny25at1 nie definiuje ustawienia ‘build.board’. Automatyczne ustawienie: TINY_ATTINY25AT1″.
Jak to rozwiązać?
Tak samo jak w poradniku na Win 7 (może ta informacja pomoże)
Witam nastepujący problem z wypaleniem Bootloadera :::
java.lang.NullPointerException
at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:362)
at processing.app.Editor.lambda$handleBurnBootloader$14(Editor.java:2486)
at java.lang.Thread.run(Thread.java:745)
Błąd przy wgrywaniu bootloadera.
jakies pomysły ?
czyli rozumiem, ze program dla attiny piszemy jak dla arduino?