Passaggio da PIC ad AVR [chiuso]


13

Lavoro con PIC16 e PIC18 da oltre tre anni e vorrei conoscere anche AVR. Non ho in mente un progetto specifico, ma vorrei provare con le diverse architetture. Vorrei ricevere un rapporto di compatibilità su PIC e AVR.

Software
di uC ho familiarità con Assembly e C per PIC16 e PIC18. In che modo le varianti Assembly e C per i microcontrollori AVR variano rispetto alle varianti PIC? Ci sono molte differenze?

Software per PC Di
quale software avrei bisogno per compilare e assemblare i miei programmi per i chip AVR? È gratuito e dove posso scaricarlo?

Hardware di programmazione
Ho usato il Wisp648 di VOTI per programmare i PIC, ma quella scheda non può programmare gli AVR. Devo comprare un programmatore o ci sono dei circuiti disponibili sul web che posso costruire da solo?

Hardware di uC
Per PIC, ho usato molto PIC18F4620 . Sto cercando un AVR con caratteristiche simili. Le caratteristiche che mi piacciono sono:

  • Oscillatore interno
  • Timer
  • Versione 5V e 3.3V
  • ADC
  • MSSP con supporto I2C e SPI
  • (E) USART
  • PWM
  • Molti pin I / O
  • > = 32 kB di memoria del programma,> = 2 kB di RAM
  • Pacchetto DIP

Quale chip AVR avrebbe le stesse caratteristiche? Il pacchetto è un affare, voglio davvero DIP, PDIP o SPDIP. Quale sarebbe un AVR con caratteristiche simili?

Varianti SPI e I2C
Mi è stato detto che Microchip ha le sue varianti sul protocollo SPI e I2C. Uso spesso i dispositivi slave SPI e I2C del microchip in combinazione con un PIC. Sarei in grado di utilizzare questi chip (23K256, RTC, ENC28J60, ...), in combinazione con un AVR? Oltre a ciò, sarebbe possibile collegare un AVR e un chip PIC usando I2C o SPI?


@LeonHeller mi dispiace non sono stato chiaro, non ho in mente un progetto specifico, ma mi piacerebbe giocare un po 'per conoscere le diverse architetture.

5
Questa domanda è troppo ampia e non è adatta al nostro formato Q + A, ma in generale leggi le schede tecniche dei processori che stai considerando di utilizzare. Non so come sia il lato oscuro, ma Atmel probabilmente ha una guida di selezione come fa Microchip. Queste aziende hanno troppi micro da tenere a mente per chiunque. Ho svolto oltre 100 progetti PIC in modo professionale in 15 anni, ma continuo a consultare la guida di selezione quando ne scelgo uno nuovo.
Olin Lathrop,

1
Che tipo di istruzione imposta l'uso di AVR, gli strumenti di sviluppo e così via, sono facilmente ricercabili. Queste cose sono ben supportate, come PIC. Consiglio questo video divertente: youtube.com/watch?v=DBftApUQ8QI
Kaz

Dai un'occhiata a electronics.stackexchange.com/a/66163/8627 e cambia Linux per Windows. La toolchain è sostanzialmente la stessa. Non identico, ma pieno di cose per Google.
jippie,

@jippie nice! Salvato nel mio segnalibro per quando sono arrivati ​​i miei campioni :)

Risposte:


8

software di uC

I set di istruzioni PIC e AVR sono simili, ma non vorrei iniziare a programmare un AVR in assembly. Programma in C, con Atmel Studio. Viene fornito con la versione AVR di gcc e ha un ottimo disassemblatore che mostra la linea di C che hai scritto e, sotto di essa, le istruzioni di assemblaggio risultanti, molto utili. Vorrei anche scaricare WinAVR .

Software per PC

Usa Atmel Studio . Non preoccuparti di Eclipse, del Blocco note del programmatore o di qualsiasi altro IDE casuale utilizzato dalle persone. Atmel Studio è basato su Visual Studio, ha tutti i tipi di plug-in disponibili da Atmel e ha un buon simulatore integrato.

Hardware di programmazione

Ci sono molti programmatori AVR economici, come Bus Pirate, ma ottieni un ICSP Atmel . Vale assolutamente la spesa extra se si intende fare più di un progetto AVR. Utilizza USB ed è controllabile dall'interno di Atmel Studio.

hardware di uC

Esiste uno strumento di selezione , ma in generale l'hardware tipico di fascia bassa AtMega è:

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

Passare a chip con prestazioni più elevate ti farà guadagnare più timer e PWM. La quantità di memoria flash e SRAM disponibile dipende dal chip specifico. La maggior parte dei pezzi di ricambio AtMega sono disponibili in PDIP, con un numero di pin davvero elevato che è QFP.

Varianti SPI e I2C

È possibile utilizzare i dispositivi MCP I2C (TWI per AVR) e SPI con AVR uC. Devi davvero leggere attentamente le sezioni SPI e TWI del datasheet AVR, non saltare una riga. Esistono più registri di controllo per ordine dei dati, polarità di clock, ecc. Per ciascuna interfaccia. È tutto disposto nei fogli dati ed è molto leggibile. Non sarebbe difficile collegare un AVR e un PIC. Avresti solo bisogno di giocare con le modalità SPI o TWI fino a quando non hai stabilito la comunicazione.


3
ATtiny è il fratello minore di ATmega. Sono molto simili quando si tratta di programmarli. Ho "portato" il software da mega a tiny semplicemente cambiando il tipo di parte nel Makefile.
jippie,

@CamilStaps jippie è un buon punto. Non so se questa sia una somiglianza con PIC, ma i processori AVR condividono per lo più nomi di registro e ordini di bit. Ci sono alcune eccezioni, come un processore più capace può spezzare un registro di controllo in due parti. I fogli dati hanno tutti una sezione di descrizione del registro in ogni capitolo che semplifica il confronto.
Matt Young,

Anche i PIC funzionano, almeno in una famiglia (PIC16, PIC18, ..). Grazie per la punta (@jippie)!

Questa è un'ottima spiegazione I miei chip AVR preferiti sono ATmega328p e ATtiny24. Altre linee comuni sono tinyx5 e tiny2313. Questi sono tutti disponibili in DIP e hanno tutti la stessa interfaccia di programmazione basata su SPI: ISP. Per un avvio rapido ed economico, prova questo programmatore USB di Sparkfun: sparkfun.com/products/9825 Degno di nota è anche un popolare pacchetto di programmi per Windows noto come WinAVR: winavr.sourceforge.net Non è necessario alcun tipo di sviluppo scheda, solo un alimentatore, cappucci di bypass e forse un cristallo.
Kurt E. Clothier,

11
  • C sarà lo stesso con alcune piccole differenze del compilatore. L'assemblaggio sarà piuttosto diverso poiché si tratta di un'architettura diversa. Consiglio di andare con C, e forse prendere abbastanza assemblaggio per essere in grado di incorporare alcune routine importanti.

  • Per l'IDE e il programmatore, Atmel ha offerte simili a Microchip, basta dare un'occhiata al loro sito Web, scaricare l'IDE gratuito e scegliere un programmatore.

  • Un chip simile a un 18F potrebbe essere qualcosa come ATMega328 (quello usato negli Arduinos) credo che abbiano versioni del pacchetto DIP.

  • Sì, I2C e SPI dovrebbero funzionare allo stesso modo. Il collegamento di un AVR e PIC non dovrebbe essere un problema.

Disclaimer - Non uso un AVR da molto tempo. Oggigiorno utilizzo principalmente PIC e ARM, ma in passato non ho mai avuto problemi a connettere nulla con SPI / I2C, avendo spesso utilizzato SPI per connettermi, ad esempio, PIC / Atmel EEPROM / Cortex-M3 / FPGA. SPI è un protocollo molto semplice di cui praticamente qualsiasi micro moderno dovrebbe essere capace nell'hardware.
I2C è un po 'più complesso. Non riesco a ricordare la storia della licenza / denominazione (ad es. 2-wire, I2C, SMBus) dalla parte superiore della mia testa, ma la maggior parte delle periferiche sono compatibili a livello base per quanto ne so. Leggi le pagine Wiki per maggiori dettagli.


TWI (Two Wire Interface) di Atmel è compatibile con I2C. I2C può essere concesso in licenza da NXP (ex tecnologia Philips), ma Atmel è riuscito a aggirare il canone.
jippie,

11

Lavoro ugualmente bene su PIC e AVR (e anche su altri).

Mi piacciono gli AVR in gran parte a causa di AVR-libc . Si tratta di una libreria incorporata decente che è open source e ragionevolmente ben documentato ( A DIFFERENZA PLIB di Microchip, ma PLIB ha sorgente completo, che io sinceramente apprezzo). Gli AVR usano regolarmente vecchi gcc e gdb, il che significa che nessun IDE idiota mi ostacola. Gli stessi strumenti funzionano su Windows, OSX e Linux e non ho bisogno di un IDE da 600 MB + con Java e Netbeans o Eclipse per inciampare o inquinare il mio albero dei sorgenti con la loro spazzatura.

La programmazione di AVR avviene di solito tramite ISP o JTAG (c'era una domanda recente a riguardo) e, dal punto di vista della programmazione, in realtà non è molto diversa da qualsiasi altro micro.

Da un punto di vista personale, ho imparato a non apprezzare i fogli dati e la numerazione delle parti di Microchip. Ho tagliato i denti sul design incorporato con Microchip e li ho amati per molto, molto tempo, ma quando cerco un micro in questi giorni tendo a iniziare con Atmel, anche se non sono anche privi di difetti. (SAM-BA è spazzatura per le loro parti SAM e ho avuto qualche problema anche con il loro supporto di fabbrica.)

Per quanto riguarda quale usare ... provare entrambi, è come la differenza tra Coke e Pepsi. Sono molto, molto simili e la scelta di solito si riduce al prezzo e agli strumenti che preferisci usare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.