Beralih dari PIC ke AVR [ditutup]

13

Saya telah bekerja dengan PIC16 dan PIC18s selama lebih dari tiga tahun sekarang dan ingin mengenal AVR juga. Saya tidak memiliki proyek khusus dalam pikiran, tetapi ingin mencoba-coba dengan berbagai arsitektur. Saya ingin mendapatkan laporan kompatibilitas pada PIC dan AVR.

Perangkat lunak UC
Saya kenal dengan Assembly dan C untuk PIC16 dan PIC18. Bagaimana varian Assembly dan C untuk mikrokontroler AVR berbeda dari varian PIC? Apakah ada banyak perbedaan?

Perangkat lunak PC Perangkat lunak
apa yang saya perlukan untuk menyusun dan merakit program saya untuk chip AVR? Apakah gratis dan di mana saya bisa mengunduhnya?

Memprogram perangkat keras
Saya telah menggunakan Wisp648 VOTI untuk memprogram PIC, tetapi board itu tidak dapat memprogram AVR. Apakah saya harus membeli seorang programmer atau apakah ada sirkuit yang tersedia di web yang dapat saya bangun sendiri?

Perangkat keras UC
Untuk PIC, saya sering menggunakan PIC18F4620 . Saya mencari AVR dengan fitur serupa. Fitur yang saya suka adalah:

  • Osilator Internal
  • Pengatur waktu
  • Versi 5V dan 3.3V
  • ADC
  • MSSP dengan dukungan I2C dan SPI
  • (E) USART
  • PWM
  • Banyak pin I / O
  • > = 32kB memori program,> = 2kB RAM
  • Paket DIP

Chip AVR apa yang akan memiliki fitur yang sama? Paket ini adalah deal breaker, saya benar-benar ingin DIP, PDIP atau SPDIP. Akan seperti apakah AVR dengan fitur yang sebanding?

Varian SPI dan I2C
Saya diberitahu bahwa Microchip memiliki varian sendiri pada protokol SPI dan I2C. Saya sering menggunakan perangkat budak SPI dan I2C dari microchip dalam kombinasi dengan PIC. Apakah saya dapat menggunakan chip ini (23K256, RTC, ENC28J60, ...), dalam kombinasi dengan AVR? Selain itu, apakah mungkin menghubungkan AVR dan chip PIC menggunakan I2C atau SPI?


sumber
@LeonHeller maaf saya tidak jelas, saya tidak memiliki proyek tertentu dalam pikiran, tetapi ingin bermain-main sedikit untuk mengenal arsitektur yang berbeda.
5
Pertanyaan ini terlalu luas dan tidak cocok untuk format Q + A kami, tetapi secara umum Anda membaca lembar data prosesor yang Anda pertimbangkan untuk digunakan. Saya tidak tahu bagaimana rasanya di Sisi Gelap, tetapi Atmel mungkin memiliki panduan pemilih seperti yang dilakukan Microchip. Perusahaan-perusahaan ini memiliki terlalu banyak mikro bagi siapa pun untuk diingat. Saya telah melakukan lebih dari 100 proyek PIC lebih dari 15 tahun secara profesional, tetapi masih berkonsultasi dengan panduan pemilih ketika memilih yang baru.
Olin Lathrop
1
Jenis instruksi apa yang digunakan AVR, dan alat pengembangan, dan sebagainya, mudah diteliti. Hal-hal ini didukung dengan baik, seperti PIC. Saya merekomendasikan video yang menghibur ini: youtube.com/watch?v=DBftApUQ8QI
Kaz
Lihatlah electronics.stackexchange.com/a/66163/8627 dan ubah Linux untuk Windows. Toolchain sebagian besar sama. Tidak identik, tetapi penuh dengan hal-hal untuk Google.
jippie
@ jippie bagus! Disimpan di bookmark saya ketika sampel saya sudah tiba :)

Jawaban:

8

perangkat lunak UC

Set instruksi PIC dan AVR serupa, tapi saya tidak akan memulai pemrograman AVR dalam perakitan. Program di C, dengan Atmel Studio. Itu datang dikemas dengan versi AVR gcc, dan memiliki disassembler yang sangat bagus yang menunjukkan Anda garis C yang Anda tulis, dan di bawahnya, instruksi perakitan yang dihasilkan, sangat berguna. Saya juga akan mengunduh WinAVR .

Perangkat lunak PC

Gunakan Atmel Studio . Jangan repot-repot dengan Eclipse, Notepad Programmer, atau apa pun yang digunakan orang secara acak. Atmel Studio didasarkan pada Visual Studio, memiliki semua jenis plug in yang tersedia dari Atmel, dan memiliki simulator yang baik.

Perangkat keras pemrograman

Ada banyak programmer AVR murah, seperti Bus Pirate, tetapi dapatkan Atmel ICSP . Ini sepenuhnya sepadan dengan biaya tambahan jika Anda berniat melakukan lebih dari satu proyek AVR. Menggunakan USB, dan dapat dikontrol dari dalam Atmel Studio.

perangkat keras UC

Ada alat pemilih , tetapi secara umum, perangkat keras khas AtMega low end adalah:

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

Pergi ke chip berkinerja lebih tinggi akan memberi Anda lebih banyak timer dan PWM. Berapa banyak memori flash dan SRAM yang Anda miliki tergantung pada chip tertentu. Sebagian besar suku cadang AtMega tersedia di PDIP, dengan jumlah pin yang sangat tinggi adalah QFP.

Varian SPI dan I2C

Dimungkinkan untuk menggunakan MCP I2C (TWI untuk AVR) dan perangkat SPI dengan AVR UC. Anda benar-benar perlu membaca bagian SPI dan TWI lembar data AVR dengan hati-hati, jangan melewati satu baris pun. Ada beberapa register kontrol untuk pesanan data, polaritas jam, dll untuk setiap antarmuka. Semuanya tercantum dalam lembar data, dan sangat mudah dibaca. Tidak akan sulit untuk menautkan AVR dan PIC. Anda hanya perlu bermain dengan mode SPI atau TWI sampai Anda menjalin komunikasi.

Matt Young
sumber
3
ATtiny adalah adik lelaki ATmega. Mereka sangat mirip dalam hal memprogram mereka. Saya telah 'porting' perangkat lunak dari mega ke kecil dengan hanya mengubah tipe bagian di Makefile.
jippie
@CamilStaps jippie membuat poin yang bagus. Saya tidak tahu apakah ini mirip dengan PIC, tetapi prosesor AVR untuk sebagian besar berbagi nama register dan pesanan bit. Ada beberapa pengecualian, seperti prosesor yang lebih mampu memecah register kontrol menjadi dua bagian. Lembar data semua memiliki bagian deskripsi register di setiap bab yang memudahkan perbandingan.
Matt Young
PIC juga, setidaknya dalam satu keluarga (PIC16, PIC18, ..). Terima kasih atas tipnya (@jippie)!
Ini penjelasan yang bagus. Chip AVR favorit saya adalah ATmega328p dan ATtiny24. Baris umum lainnya adalah tinyx5 dan tiny2313. Ini semua tersedia dalam DIP, dan semua memiliki antarmuka pemrograman berbasis SPI yang sama: ISP. Untuk memulai yang murah dan cepat, coba programmer USB ini dari Sparkfun: sparkfun.com/products/9825 Juga layak disebutkan adalah bundel program populer untuk Windows yang dikenal sebagai WinAVR: winavr.sourceforge.net Anda tidak memerlukan pengembangan apa pun papan, hanya catu daya, tutup bypass, dan mungkin kristal.
Kurt E. Clothier
11
  • C akan sama dengan beberapa perbedaan kompiler kecil. Perakitan akan sangat berbeda karena arsitekturnya berbeda. Saya menyarankan untuk menggunakan C, dan mungkin mengambil cukup perakitan untuk dapat menjalankan beberapa rutinitas penting.

  • Untuk IDE dan programmer, Atmel memiliki penawaran yang mirip dengan Microchip, lihat saja situs web mereka, unduh IDE gratis dan pilih programmer.

  • Sebuah chip yang mirip dengan 18F mungkin sesuatu seperti ATMega328 (yang digunakan di Arduinos) Saya percaya mereka memiliki versi paket DIP.

  • Ya, I2C dan SPI harus bekerja sama. Menghubungkan AVR dan PIC seharusnya tidak menjadi masalah.

Penafian - Saya belum pernah menggunakan AVR untuk waktu yang lama. Saya terutama menggunakan PIC dan ARM saat ini, tetapi saya tidak pernah memiliki masalah menghubungkan apa pun dengan SPI / I2C di masa lalu, setelah sering menggunakan SPI untuk menghubungkan antara misalnya PIC / Atmel EEPROM / Cortex-M3 / FPGA. SPI adalah protokol yang sangat mendasar yang harus dimiliki oleh setiap mikro modern dalam perangkat keras.
I2C sedikit lebih kompleks. Saya tidak dapat mengingat kisah lisensi / penamaan (misalnya 2-kawat, I2C, SMBus) di atas kepala saya, tetapi sebagian besar periferal kompatibel pada tingkat dasar sejauh yang saya ketahui. Baca halaman-halaman Wiki - untuk lebih jelasnya.

Oli Glaser
sumber
TWI (Two Wire Interface) dari Atmel kompatibel dengan I2C. I2C dapat dilisensikan dari NXP (mantan teknologi Philips), tetapi Atmel berhasil mengatasi biaya lisensi.
jippie
11

Saya bekerja sama baiknya pada PIC dan AVR (dan lainnya, juga).

Saya suka AVR karena AVR-libc . Ini adalah perpustakaan tertanam layak yang open source dan cukup baik didokumentasikan ( TIDAK SEPERTI PLIB Microchip, tapi PLIB memang memiliki sumber penuh, yang saya benar-benar menghargai). AVR menggunakan gcc dan gdb tua biasa yang berarti tidak ada IDE idiot yang menghalangi saya. Alat yang sama berfungsi pada Windows, OSX dan Linux, dan saya tidak perlu 600MB + IDE dengan Java dan Netbeans atau Eclipse untuk tersandung atau mencemari pohon sumber saya dengan sampah mereka sendiri.

Pemrograman AVR biasanya dilakukan melalui ISP atau JTAG (dulu ada pertanyaan baru tentang itu), dan dari sudut pandang pemrograman, itu benar-benar tidak jauh berbeda dari mikro lainnya.

Dari sudut pandang pribadi, saya telah tumbuh menjadi sangat tidak suka lembar data dan penomoran part Microchip. Saya memotong gigi saya pada desain tertanam dengan Microchip dan saya menyukainya untuk waktu yang sangat lama, tetapi ketika saya mencari mikro hari ini saya cenderung memulai dengan Atmel, meskipun mereka tidak tanpa kekurangan mereka juga. (SAM-BA adalah sampah untuk komponen SAM mereka, dan saya juga mengalami masalah dengan dukungan pabrik mereka.)

Sejauh yang digunakan ... coba keduanya, itu seperti perbedaan antara Coke dan Pepsi. Mereka sangat, sangat mirip dan pilihan biasanya turun ke harga dan alat yang Anda suka gunakan.

akohlsmith
sumber