Przełączanie z PIC na AVR [zamknięte]

14

Współpracuję z PIC16 i PIC18 od ponad trzech lat i chciałbym również poznać AVR. Nie mam na myśli konkretnego projektu, ale chciałbym spróbować z różnymi architekturami. Chciałbym otrzymać raport zgodności na temat PIC i AVR.

Oprogramowanie uC
Znam Zgromadzenie i C dla PIC16 i PIC18. W jaki sposób warianty montażu i C dla mikrokontrolerów AVR różnią się od wariantów PIC? Czy jest wiele różnic?

Oprogramowanie na PC
Jakie oprogramowanie byłoby potrzebne do skompilowania i złożenia moich programów dla układów AVR? Czy to jest darmowe i gdzie mogę je pobrać?

Sprzęt do programowania
Użyłem Wisp648 VOTI do programowania PIC, ale ta płyta nie może programować AVR-ów. Czy muszę kupić programator, czy w sieci są dostępne obwody, które sam mogę zbudować?

Sprzęt uC W
przypadku PIC bardzo często korzystałem z PIC18F4620 . Szukam AVR z podobnymi funkcjami. Funkcje, które lubię to:

  • Wewnętrzny oscylator
  • Timery
  • Wersja 5 V i 3,3 V.
  • ADC
  • MSSP z obsługą I2C i SPI
  • (E) USART
  • PWM
  • Wiele styków we / wy
  • > = Pamięć programu 32kB,> = 2kB RAM
  • Pakiet DIP

Który układ AVR miałby te same funkcje? Pakiet jest przełomowy, naprawdę chcę DIP, PDIP lub SPDIP. Czym byłby AVR z porównywalnymi funkcjami?

Warianty SPI i I2C
Powiedziano mi, że Microchip ma własne warianty protokołu SPI i I2C. Często używam urządzeń podrzędnych SPI i I2C firmy Microchip w połączeniu z PIC. Czy będę mógł używać tych układów (23K256, RTC, ENC28J60, ...) w połączeniu z AVR? Ponadto, czy byłoby możliwe połączenie AVR i układu PIC za pomocą I2C lub SPI?


źródło
@LeonHeller przepraszam, że nie było jasne, nie mam na myśli konkretnego projektu, ale chciałbym się trochę pobawić, aby poznać inną architekturę.
5
To pytanie jest zbyt szerokie i nie pasuje do naszego formatu Q + A, ale ogólnie czytasz karty danych procesorów, które rozważasz. Nie wiem, jak to jest po Ciemnej Stronie, ale Atmel prawdopodobnie ma przewodnik wyboru, tak jak Microchip. Firmy te mają zbyt wiele mikrotelefonów, aby każdy mógł o nich pamiętać. W ciągu 15 lat wykonałem ponad 100 projektów PIC profesjonalnie, ale przy wyborze nowego nadal korzystaj z przewodnika wyboru.
Olin Lathrop,
1
Jakiego rodzaju zestaw instrukcji, wykorzystanie AVR, narzędzia programistyczne itp. Są łatwe do zbadania. Te rzeczy są dobrze obsługiwane, jak PIC. Polecam ten zabawny film: youtube.com/watch?v=DBftApUQ8QI
Kaz
Rzuć okiem na electronics.stackexchange.com/a/66163/8627 i zmień Linux na Windows. Zestaw narzędzi jest w dużej mierze taki sam. Nie identyczne, ale pełne rzeczy dla Google.
jippie
@jippie nice! Zapisane w mojej zakładce, kiedy przybyły moje próbki :)

Odpowiedzi:

8

Oprogramowanie uC

Zestawy instrukcji PIC i AVR są podobne, ale nie chciałbym zaczynać programowania AVR w asemblerze. Program w C, z Atmel Studio. Jest dostarczany z wersją gcc AVR i ma naprawdę dobry deasembler, który pokazuje linię napisanego przez Ciebie C, a pod nią wynikowe instrukcje montażu, bardzo przydatne. Chciałbym również pobrać WinAVR .

Oprogramowanie komputerowe

Użyj Atmel Studio . Nie przejmuj się Eclipse, Notatnikiem programisty lub jakimkolwiek innym przypadkowym IDE, którego używają ludzie. Atmel Studio jest oparte na Visual Studio, ma wszystkie wtyczki dostępne od Atmel i ma wbudowany dobry symulator.

Sprzęt do programowania

Istnieje wiele tanich programistów AVR, takich jak Bus Pirate, ale dostań Atmel ICSP . Jest to całkowicie warte dodatkowych kosztów, jeśli zamierzasz wykonać więcej niż jeden projekt AVR. Wykorzystuje USB i można nim sterować z poziomu Atmel Studio.

Sprzęt uC

Istnieje narzędzie do selekcji, ale ogólnie rzecz biorąc, typowy sprzęt AtMega klasy niskiej to:

Internal Oscillator (8 MHz)
3 Timers
2.7-5.5V Supply range
8-channel multiplexed ADC
I2C and SPI support
USART
2 PWMs that work in conjunction with the 8 bit timers

Przejście na układy o wyższej wydajności spowoduje zakup większej liczby zegarów i PWM. Ilość dostępnej pamięci flash i SRAM zależy od konkretnego układu. Większość części AtMega jest dostępna w PDIP, przy czym naprawdę dużą liczbą pinów jest QFP.

Warianty SPI i I2C

Możliwe jest użycie MCP I2C (TWI dla AVR) i urządzeń SPI z AVR uCs. Naprawdę musisz uważnie przeczytać sekcje SPI i TWI arkusza danych AVR, nie pomijaj wiersza. Dla każdego interfejsu istnieje wiele rejestrów kontroli porządku danych, polaryzacji zegara itp. Wszystko jest przedstawione w arkuszach danych i jest bardzo czytelne. Nie byłoby trudno połączyć AVR i PIC. Musisz tylko grać w trybach SPI lub TWI, dopóki nie nawiążesz komunikacji.

Matt Young
źródło
3
ATtiny jest mniejszym bratem ATmega. Są bardzo podobne, jeśli chodzi o ich programowanie. „Przeniesiłem” oprogramowanie z mega na malutkie, po prostu zmieniając typ części w Makefile.
jippie
@CamilStaps jippie ma sens. Nie wiem, czy jest to podobne do PIC, ale procesory AVR w większości dzielą nazwy rejestrów i zamówienia bitowe. Istnieją pewne wyjątki, np. Bardziej wydajny procesor może rozbić rejestr kontrolny na dwie części. Wszystkie karty danych mają sekcję opisu rejestru w każdym rozdziale, co ułatwia porównanie.
Matt Young,
PIC również, przynajmniej w jednej rodzinie (PIC16, PIC18, ..). Dzięki za wskazówkę (@jippie)!
To świetne wytłumaczenie. Moje ulubione układy AVR to ATmega328p i ATtiny24. Inne typowe linie to tinyx5 i tiny2313. Wszystkie są dostępne w DIP i wszystkie mają dokładnie taki sam interfejs programowania oparty na SPI: ISP. Aby szybko i tanio rozpocząć, wypróbuj programator USB Sparkfun: sparkfun.com/products/9825 Warto również wspomnieć o popularnym pakiecie programów dla systemu Windows znanym jako WinAVR: winavr.sourceforge.net Nie potrzebujesz żadnego rozwoju płytka, tylko zasilacz, obejścia, a może kryształ.
Kurt E. Clothier
12

Pracuję równie dobrze na PIC i AVR (i innych też).

Lubię AVR głównie z powodu AVR-libc . To przyzwoity wbudowane biblioteki, który jest open source i dość dobrze udokumentowane ( PRZECIWIEŃSTWIE PLIB Microchip, ale plib ma pełną źródło, które naprawdę docenić). AVR używają zwykłych starych gcc i gdb, co oznacza, że ​​żadne idiotyczne IDE nie przeszkadzają. Te same narzędzia działają w systemach Windows, OSX i Linux i nie potrzebuję IDE 600 MB + z Javą i Netbeans lub Eclipse, aby potknąć się lub zepsuć moje drzewo źródłowe własnymi śmieciami.

Programowanie AVR-ów odbywa się zwykle przez ISP lub JTAG (pojawiło się ostatnie pytanie na ten temat) iz punktu widzenia programowania, tak naprawdę niewiele różni się od innych mikro.

Z osobistego punktu widzenia bardzo nie lubię arkuszy danych Microchip i numeracji części. Obcinam zęby na osadzonym projekcie za pomocą Microchip i kocham je przez długi, długi czas, ale kiedy szukam mikro, zaczynam od Atmela, chociaż nie są one również pozbawione wad. (SAM-BA jest śmieciem dla ich części SAM, a także miałem problemy z ich wsparciem fabrycznym.)

Jeśli chodzi o to, którego użyć ... spróbuj obu, to jest jak różnica między colą a pepsi. Są bardzo, bardzo podobne, a wybór zwykle sprowadza się do ceny i narzędzi, których wolisz używać.

akohlsmith
źródło
11
  • C będzie taki sam z pewnymi małymi różnicami w kompilatorach. Montaż będzie zupełnie inny, ponieważ jest to inna architektura. Radzę iść z C, a może zebrać wystarczająco dużo zestawu, aby móc wprowadzić kilka ważnych procedur.

  • Dla IDE i programisty Atmel ma podobne oferty do Microchip, wystarczy zajrzeć na ich stronę internetową, pobrać bezpłatne IDE i wybrać programistę.

  • Podobny układ do 18F może być czymś takim jak ATMega328 (ten używany w Arduinos). Wierzę, że mają wersje pakietu DIP.

  • Tak, I2C i SPI powinny działać tak samo. Łączenie AVR i PIC nie powinno stanowić problemu.

Zastrzeżenie - Dawno nie korzystałem z AVR. Obecnie używam głównie PIC i ARM, ale nigdy wcześniej nie miałem problemu z łączeniem czegokolwiek ze SPI / I2C, ponieważ często używałem SPI do łączenia np. PIC / Atmel EEPROM / Cortex-M3 / FPGA. SPI jest bardzo podstawowym protokołem, który praktycznie każda nowoczesna mikro powinna być w stanie sprzętowo.
I2C jest nieco bardziej skomplikowany. Nie pamiętam historii licencjonowania / nazewnictwa (np. 2-żyłowy, I2C, SMBus) z góry mojej głowy, ale o ile mi wiadomo, większość urządzeń peryferyjnych jest kompatybilna na poziomie podstawowym. Zapoznaj się ze stronami Wiki, aby uzyskać więcej szczegółów.

Oli Glaser
źródło
Interfejs TWI (Two Wire Interface) firmy Atmel jest zgodny z I2C. I2C może być licencjonowany przez NXP (wcześniej technologia Philips), ale Atmel zdołał obejść opłatę licencyjną.
jippie