Pracowałem nad projektem Arduino. Po tym, jak wszystko działa z Arduino, chciałbym przejść do rozwiązania, które NIE korzysta z Arduino. To znaczy, chciałbym użyć mikrokontrolera bez angażowania płyty Arduino. Pozwoli to na pojedynczą płytę, bez rozwiązania tarczy.
Wiem, że istnieją metody tworzenia własnego Arduino na desce do krojenia, ale tak naprawdę nie chcę tego robić.
Nie jestem do końca pewien, jak to zrobić.
O ile nie ma lepszej opcji, skłaniam się ku użyciu ATmega328, z której korzysta Arduino. Rozumiem, że narzędzia programistyczne są dostępne bezpłatnie lub przynajmniej niezbyt drogie.
Dla celów tego pytania, załóżmy, że mogę uzyskać + 5 V do mojego obwodu.
Moje pierwsze pytanie brzmi: jak zaprogramować MCU. Wierzę, że są dwie opcje:
- Kup programator, zaprogramuj MCU, a następnie umieść układ w moim obwodzie.
- Zaprojektuj mój obwód tak, aby zawierał obsługę programowania w obwodzie.
Zakładam, że jeśli wybiorę opcję nr 1, jest to tak proste, jak wstawienie zaprogramowanego układu do mojego obwodu; Nie potrzebuję nic więcej. Oczywiście zmiana oprogramowania byłaby niewygodna.
Ale w przypadku opcji nr 2 nie jestem pewien, czego potrzebuję. Po odrobinie czytania, myślę, że potrzebuję kabla do programowania i złącza na mojej płycie (jaki typ?). Potem chyba (prawidłowo) podłączam złącze do niektórych styków ATmega.
Tak czy inaczej będę potrzebować studia Atmel.
Po drugie, poza zasilaczem, czy w Arduino jest coś, czego absolutnie potrzebuję? Chyba może przełącznik resetowania?
źródło
Odpowiedzi:
Witamy w cudownym świecie Atmel. Pozwól, że przedstawię Ci odpowiedzi na pytania w oparciu o moje hobby i doświadczenie zawodowe.
Nie przejmuj się niczym, ALE programowaniem w obwodzie. Chyba że jesteś doskonałym programistą, usuwanie chipa za każdym razem, gdy chcesz go zaprogramować, to koszmar. Polecam AVRISPmkII jako narzędzie do programowania na poziomie podstawowym. Wadą jest brak obsługiwanego debugowania sprzętowego. Alternatywą jest smok, ale nie mam z tym doświadczenia. Mogę powiedzieć, że JTAGICEmk3 jest dobrym narzędziem do debugowania.
Studio Atmel jest dobre do programowania. To właściwie moje ulubione osadzone środowisko programistyczne. Możesz używać narzędzi CLI, takich jak AVRDUDE i AVR-GCC, ale IDE dba o to za Ciebie.
W PODSUMOWANIU:
Kup AVRISP dla samego programowania (łatwiej, plug & play) lub DRAGON (nie mogę zaoferować porady).
Na swojej płycie wyciągnij piny ICSP do 6-pinowego podwójnego nagłówka 0.100 "- połączenia opisano w tym arkuszu danych .
Przełączniki resetowania nie są potrzebne.
źródło
Nie musisz „kończyć” na raz. Oto jak przekonwertowałem:
Na początek używałem Arduino, ale przekształciłem wywołania biblioteki Arduino w odczyty i zapisy rejestrów, po jednym wierszu na raz, sprawdzając, czy moje programy nadal działają. W ten sposób przyzwyczaiłem się do używania rejestrów i zobaczyłem, że nie były one radykalnie nieciągłe w sposobie robienia Arduino. Funkcje Arduino, takie jak digitalWrite (), po prostu manipulują rejestrami - możesz je czytać i pisać bezpośrednio w swoich szkicach.
Moim następnym krokiem było umieszczenie ATTiny 85 na płycie chleba i zaprogramowanie go w Arduino jako ISP ( http://highlowtech.org/?p=1695 ). Jeśli kupisz zasilacz płytowy i użyjesz wewnętrznego oscylatora ATTiny, wymaga to śmiesznie małego okablowania. Użyłem Arduino IDE do kompilacji, ale nadal korzystałem z rejestrów, jak mogłem.
Następnie zainstalowałem darmowy zestaw narzędzi wiersza poleceń Crosspack i skompilowałem migający program. Po kilku próbach i błędach udało mi się zaprogramować ATTiny tylko avrdude, pozostając całkowicie poza ekosystemem Arudino.
Gdy osiągniesz blinky tylko za pomocą narzędzi wiersza poleceń, jesteś wolny od Arduino. Poznaj różne urządzenia peryferyjne i ich rejestry, a wkrótce stanie się to całkowicie naturalne.
Po tym wszystkim często używam Arduino, ponieważ jest szybszy. Przekonałem się, że przeglądanie opisów rejestrów jest do bani; nie ma sensu tego robić, jeśli nie musisz. Warto jednak wiedzieć, jak to zrobić.
źródło
Zgadzam się z powyższym komentarzem HL-DSK. Wydałbym dodatkowe pieniądze i zdobyłem programistę z funkcjami debugowania. Używam JTAGICE3, około 110 USD na digi-key.
Przeczytaj o programowaniu ISP tutaj . Pokaże Ci, jak wydobyć połączenia SPI. Połączenia SPI na twoim chipie będą znajdować się w arkuszu danych ATmega. Poszukaj na stronie 2 pinów MISO / MOSI / SCK / RESET. Programator musi mieć możliwość sterowania linią resetowania. Pamiętaj, aby użyć rezystora podciągającego na linii zerowania, aby układ działał po odłączeniu programatora.
Zdobądź tutaj nagłówek 2x3 . Lub stwórz własny, używając odrywalnych nagłówków.
źródło
Różnica między Arduino a nagim ATmega328 to tylko dwie rzeczy. Program ładujący Arduino i biblioteki Arduino. Możesz kodować Arduino z czystym C lub C ++ bez użycia żadnej biblioteki. Zamiast tego możesz również użyć zestawu. Program ładujący umożliwia ładowanie nowego kodu poprzez szereg bez przechodzenia przez (nieco) bardziej skomplikowane programowanie szeregowe w obwodzie (w zasadzie SPI).
Możesz używać standardowych bibliotek programistycznych i avr-gcc z prawie każdym pomysłem. W przeciwieństwie do tego, co powiedzieliby inni, kodowanie Arduino jest w zasadzie jak kodowanie samego mikrokontrolera, z pewnymi dodatkowymi udogodnieniami kosztem pewnej wydajności.
źródło
Kupuję wstępnie załadowane układy Atmega328P i programuję je w obwodzie za pomocą kabla FTDI i avrdude, identycznie jak w przypadku programowania Arduino. Lubię środowisko Eclipse IDE, ale możesz używać dowolnego środowiska - Atmel Studio, Arduino IDE, emacsa lub boso w wierszu poleceń.
Ta płyta jest w budowie w punkcie, w którym jest wystarczająco kompletna, aby przetestować za pomocą programu Hello, używając kabla do programowania, zasilania i terminala. Nadal będzie potrzebował zasilacza - LM2936 ultra-niskiej bieżącej quiescient regulator napięcia i złącze baterii, w moim przypadku - i wszelkie inne elementy na pokładzie i połączenia off-board projekt będzie potrzebne:
Ponieważ masz Arduino, możesz zaoszczędzić trochę pieniędzy i użyć niezaprogramowanych układów, używając Arduino do zainstalowania bootloadera. Ładne niebieskie etykiety na pin-out pomagają obniżyć mój współczynnik wygłupów! Używam kryształu 16 MHz, ale jeśli możesz pracować z wewnętrznym oscylatorem, liczba części spada o 3 (xtal i 2 kondensatory).
źródło
Aby przejść z Arduino, gdzie dostarczany jest sprzęt, a oprogramowanie jest nakładką w języku C, chciałbym przedstawić kilka sugestii. Widzę, że ludzie opublikowali kilka przydatnych odpowiedzi, ale byłem tam, gdzie jesteś i robiłbym rzeczy trochę inaczej.
Mam kilka schematycznych pomysłów, których nauczyłem się sam, dzięki czemu masz czysty i płynny interfejs do swojej mikro. Daj mi znać jeśli potrzebujesz pomocy.
źródło
Uczciwa rada
Arduino jest dla początkujących, można stąd przejść na dwa sposoby
Sposób 1: Zrozumienie działania mikrokontrolera / procesora (preferowane podejście)
Rozumiem przez to uczenie się architektur i kodu asemblera (lub goły metal) dla micro p / c. Jeśli potrzebujesz do tego punktu wyjścia, sugerowałbym Atmel 8051, który jest 8-bitowym mikrokontrolerem z najprostszym zestawem instrukcji architektury i montażu. Każdy inny nowoczesny 32-bitowy lub 64-bitowy procesor ma pochodną formę architektury. Ten mikrokontroler jest nadal używany jako część mojej pracy dyplomowej, ponieważ jest dobrym punktem wyjścia i dostępna jest duża literatura.
Aha, i zestawy do stworzenia twojej płyty ISP są sprzedawane (kompletnie zmontowane zestawy z proceso, przylutuj elementy do zestawów płyt i możesz sam zbudować płytę programistyczną, wymaga tylko kilku kabli / gniazd IC-232)
Ponieważ jest to technologia mało zaawansowana, wszystkie elementy będą tanie.
Sposób 2: Przejdź do podejścia sprzętowo-programowego (mniej preferowane)
Jest to podejście dla slackerów, którzy zanurzyli się w trochę montażu i „stuknęli” LUB ludzi, którzy chcą przejść na więcej oprogramowania niż sprzętu. Sugerowałbym przejście do innej płyty dla hobbystów, takiej jak Raspberry Pi lub BeagleBoneBlack z procesorami ARM i rozpoczęcie projektów przy ich kreatywności.
źródło
Możesz korzystać z tablicy Arduino, bez korzystania z bibliotek i środowiska piaskownicy, wszystko możesz zaprogramować bezpośrednio. Jeśli chcesz użyć ich programu ładującego przez serial / uart do programowania, to działa dobrze. Ale większość / wszystkie części avr można również zaprogramować w inny sposób, przy czym część jest resetowana, co oznacza, że nie można jej przeglądać. dość łatwo jest bit bit spi z arduino lub innego mikrokontrolera lub z ftdi wyrwać się z jakiegoś smaku. Sparkfun ma tablice arduino i nie-arduino (na przykład 32u), że nagłówek SPI jest oczywisty. oraz tablice rozdzielające ftdi, które można łatwo bitbangować za pomocą biblioteki ftdi lub biblioteki ftdi dostarczanej z linuksem.
Dokumentacja dla każdej części pokazuje opcje uruchamiania i opcje programowania flash. tak, nietrudno jest też kupić niektóre części i stworzyć własną deskę ratunkową. Nie zrobiłbym tego, dopóki nie użyjesz istniejącej karty breakout lub zwykłej karty ewaluacji, a następnie sklonujesz ją w razie potrzeby. Idealnie zacznij od części z wewnętrznym oscylatorem rc, w zasadzie pinów zasilania, uziemienia i programowania ...
źródło