Chuyển từ PIC sang AVR [đã đóng]


13

Tôi đã làm việc với PIC16 và PIC18 được hơn ba năm nay và tôi cũng muốn biết về AVR. Tôi không có dự án cụ thể trong tâm trí, nhưng muốn thử xung quanh với các kiến ​​trúc khác nhau. Tôi muốn nhận được một báo cáo tương thích trên PIC và AVR.

Phần mềm của uC
Tôi quen thuộc với hội và C cho PIC16 và PIC18. Làm thế nào để các biến thể hội và C cho vi điều khiển AVR khác với các biến thể PIC? Có nhiều sự khác biệt?

Phần mềm của PC
Tôi cần phần mềm nào để biên dịch và lắp ráp các chương trình của mình cho các chip AVR? Nó có miễn phí không và tôi có thể tải nó ở đâu?

Phần cứng lập trình
Tôi đã sử dụng Wisp648 của VOTI để lập trình PIC, nhưng bo mạch đó không thể lập trình các AVR. Tôi có phải mua một lập trình viên hay có bất kỳ mạch nào có sẵn trên web mà tôi có thể tự xây dựng không?

Phần cứng của
uC Đối với PIC, tôi đã sử dụng PIC18F4620 rất nhiều. Tôi đang tìm kiếm một AVR với các tính năng tương tự. Các tính năng tôi thích là:

  • Dao động nội bộ
  • Đồng hồ bấm giờ
  • Phiên bản 5V và 3.3V
  • ADC
  • MSSP với sự hỗ trợ của I2C và SPI
  • (E) USART
  • PWM
  • Nhiều chân I / O
  • > = Bộ nhớ chương trình 32kB,> = RAM 2kB
  • Gói DIP

Chip AVR nào sẽ có các tính năng tương tự? Gói này là một công cụ thỏa thuận, tôi thực sự muốn DIP, PDIP hoặc SPDIP. Một AVR với các tính năng tương đương sẽ là gì?

Các biến thể SPI và I2C
Tôi được thông báo rằng Microchip có các biến thể riêng trên giao thức SPI và I2C. Tôi thường sử dụng các thiết bị nô lệ SPI và I2C từ microchip kết hợp với PIC. Tôi có thể sử dụng các chip này (23K256, RTC, ENC28J60, ...), kết hợp với một AVR không? Ngoài ra, có thể liên kết một chip AVR và chip PIC bằng I2C hoặc SPI không?


@LeonHeller xin lỗi Tôi không rõ ràng, tôi không có dự án cụ thể nào, nhưng muốn chơi xung quanh một chút để tìm hiểu kiến ​​trúc khác nhau.

5
Đây là câu hỏi quá rộng và không phù hợp với định dạng Q + A của chúng tôi, nhưng nói chung bạn đọc các bảng dữ liệu của bộ xử lý mà bạn đang xem xét sử dụng. Tôi không biết nó như thế nào trên Dark Side, nhưng Atmel có thể có một hướng dẫn chọn như Microchip. Các công ty này có quá nhiều micros cho bất cứ ai ghi nhớ. Tôi đã thực hiện tốt hơn 100 dự án PIC trong hơn 15 năm một cách chuyên nghiệp, nhưng vẫn tham khảo hướng dẫn chọn khi chọn một dự án mới.
Olin Lathrop

1
Loại hướng dẫn nào sử dụng và các công cụ phát triển của AVR, v.v., dễ dàng được nghiên cứu. Những thứ này được hỗ trợ tốt, như PIC. Tôi đề xuất video giải trí này: youtube.com/watch?v=DBftApUQ8QI
Kaz

Hãy xem Electronics.stackexchange.com/a/66163/8627 và thay đổi Linux cho Windows. Các toolchain phần lớn giống nhau. Không giống hệt nhau, nhưng đầy đủ mọi thứ cho Google.
jippie

@jippie đẹp quá! Đã lưu trong dấu trang của tôi khi mẫu của tôi đã đến :)

Câu trả lời:


8

phần mềm của uC

Các tập lệnh PIC và AVR tương tự nhau, nhưng tôi sẽ không bắt đầu lập trình một bộ lắp ráp AVR. Chương trình trong C, với Atmel Studio. Nó được đóng gói với phiên bản gcc của AVR và có trình phân tách thực sự tốt cho bạn thấy dòng C bạn đã viết, và theo đó, hướng dẫn lắp ráp kết quả, rất tiện dụng. Tôi cũng sẽ tải xuống WinAVR .

Phần mềm PC

Sử dụng Atmel Studio . Đừng bận tâm với Eclipse, Notepad của lập trình viên hoặc bất kỳ IDE ngẫu nhiên nào mà mọi người sử dụng. Atmel Studio dựa trên Visual Studio, có tất cả các loại plugin có sẵn từ Atmel và được tích hợp một trình giả lập tốt.

Lập trình phần cứng

Có rất nhiều lập trình viên giá rẻ, chẳng hạn như Bus Pirate, nhưng nhận được một ICSP Atmel . Nó hoàn toàn xứng đáng với chi phí thêm nếu bạn dự định thực hiện nhiều hơn một dự án AVR. Nó sử dụng USB và có thể điều khiển được từ bên trong Atmel Studio.

phần cứng của uC

Có một công cụ chọn , nhưng nói chung, phần cứng thông thường của AtMega cấp thấp là:

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

Đi đến các chip hiệu suất cao hơn sẽ mua cho bạn nhiều bộ định thời và PWM hơn. Bộ nhớ flash và SRAM bạn có sẵn bao nhiêu tùy thuộc vào chip cụ thể. Hầu hết các bộ phận của AtMega đều có sẵn trong PDIP, với công cụ đếm số pin thực sự cao là QFP.

Các biến thể SPI và I2C

Có thể sử dụng các thiết bị MCP I2C (TWI cho AVR) và SPI với các uCs AVR. Bạn thực sự cần phải đọc kỹ các phần SPI và TWI của bảng dữ liệu AVR, đừng bỏ qua một dòng. Có nhiều thanh ghi điều khiển cho thứ tự dữ liệu, cực của đồng hồ, vv cho mỗi giao diện. Tất cả đều được trình bày trong bảng dữ liệu và rất dễ đọc. Sẽ không khó để liên kết một AVR và PIC. Bạn sẽ chỉ cần chơi với các chế độ SPI hoặc TWI cho đến khi bạn thiết lập giao tiếp.


3
ATtiny là anh trai nhỏ hơn của ATmega. Chúng rất giống nhau khi lập trình chúng. Tôi đã chuyển phần mềm từ mega sang tiny chỉ bằng cách thay đổi loại phần trong Makefile.
jippie

@CamilStaps jippie làm cho một điểm tốt. Tôi không biết liệu đây có phải là điểm tương đồng với PIC hay không, nhưng bộ xử lý AVR cho hầu hết các tên đăng ký và đơn đặt hàng bit. Có một số trường hợp ngoại lệ, như bộ xử lý có khả năng cao hơn có thể chia thanh ghi điều khiển thành hai phần. Tất cả các datasheets đều có phần mô tả đăng ký trong mỗi chương giúp cho việc so sánh trở nên dễ dàng.
Matt Young

PIC cũng làm như vậy, ít nhất là trong một gia đình (PIC16, PIC18, ..). Cảm ơn vì tiền boa (@jippie)!

Đây là một lời giải thích tuyệt vời. Các chip AVR yêu thích của tôi là ATmega328p và ATtiny24. Các dòng phổ biến khác là tinyx5 và tiny2313. Tất cả đều có sẵn trong DIP và tất cả đều có giao diện lập trình dựa trên SPI chính xác: ISP. Để bắt đầu nhanh, rẻ, hãy thử lập trình viên USB này từ Sparkfun: sparkfun.com/products/9825 Một điều đáng nói nữa là gói chương trình phổ biến dành cho Windows có tên là WinAVR: winavr.sourceforge.net Bạn không cần bất kỳ loại phát triển nào bảng, chỉ là một nguồn cung cấp năng lượng, bỏ qua mũ, và có thể là một tinh thể.
Kurt E. Clothier

11
  • C sẽ giống nhau với một số khác biệt trình biên dịch nhỏ. Hội sẽ khá khác nhau vì nó là một kiến ​​trúc khác nhau. Tôi khuyên bạn nên đi với C, và có thể chọn đủ lắp ráp để có thể thực hiện một số thói quen quan trọng.

  • Đối với IDE và lập trình viên, Atmel có các dịch vụ tương tự như Microchip, chỉ cần xem trang web của họ, tải xuống IDE miễn phí và chọn một lập trình viên.

  • Một con chip tương tự như 18F có thể giống như ATMega328 (loại được sử dụng trong Arduinos) Tôi tin rằng chúng có các phiên bản gói DIP.

  • Có, I2C và SPI nên hoạt động giống nhau. Liên kết một AVR và PIC sẽ không có vấn đề gì.

Tuyên bố miễn trừ trách nhiệm - Tôi đã không sử dụng một thiết bị AVR trong một thời gian dài. Tôi chủ yếu sử dụng PIC và ARM hiện nay, nhưng tôi chưa bao giờ gặp vấn đề gì khi kết nối bất cứ thứ gì với SPI / I2C trước đây, vì thường xuyên sử dụng SPI để kết nối giữa ví dụ PIC / Atmel EEPROM / Cortex-M3 / FPGA. SPI là một giao thức rất cơ bản mà hầu như bất kỳ micro hiện đại nào cũng có khả năng về phần cứng.
I2C phức tạp hơn một chút. Tôi không thể nhớ câu chuyện cấp phép / đặt tên (ví dụ 2 dây, I2C, SMBus) ngoài đỉnh đầu, nhưng hầu hết các thiết bị ngoại vi đều tương thích ở cấp độ cơ bản theo như tôi biết. Hãy đọc các trang Wiki để biết thêm chi tiết.


TWI (Giao diện hai dây) của Atmel tương thích với I2C. I2C có thể được cấp phép từ NXP (công nghệ cũ của Philips), nhưng Atmel đã xoay sở để giải quyết vấn đề về phí giấy phép.
jippie

11

Tôi làm việc tốt như nhau trên PIC và AVR (và những người khác nữa).

Tôi thích AVR phần lớn là do AVR-libc . Đây là một thư viện nhúng tốt, là nguồn mở và được ghi chép hợp lý ( UNLIKE Microchip, nhưng plib có nguồn đầy đủ, mà tôi thực sự đánh giá cao). Các AVR sử dụng gcc và gdb cũ thông thường, điều đó có nghĩa là không có IDE ngu ngốc nào cản trở tôi. Các công cụ tương tự hoạt động trên Windows, OSX và Linux và tôi không cần IDE 600 MB với Java và Netbeans hoặc Eclipse để vấp phải hoặc làm ô nhiễm cây nguồn của tôi với rác của riêng chúng.

Lập trình AVR thường được thực hiện thông qua ISP hoặc JTAG (đã có một câu hỏi gần đây về điều đó) và từ quan điểm lập trình, nó thực sự không khác nhiều so với bất kỳ vi mô nào khác.

Từ quan điểm cá nhân, tôi đã phát triển rất nhiều việc không thích các bảng dữ liệu và đánh số phần của Microchip. Tôi đã cắt răng trên thiết kế nhúng với Microchip và tôi đã yêu thích chúng trong một thời gian dài, nhưng khi tôi tìm kiếm một micro ngày nay tôi có xu hướng bắt đầu với Atmel, mặc dù chúng cũng không phải là không có lỗi của chúng. (SAM-BA là rác cho các bộ phận SAM của họ và tôi cũng gặp một số rắc rối với bộ phận hỗ trợ tại nhà máy của họ.)

Theo như sử dụng ... hãy thử cả hai, nó giống như sự khác biệt giữa Coke và Pepsi. Chúng rất, rất giống nhau và sự lựa chọn thường liên quan đến giá cả và các công cụ bạn thích sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.