Jump to content
Sign in to follow this  
dan_e

ADC Atmel AVR vs. ADC PIC ?

Recommended Posts

Citeam pe net ca ar fi o diferenta de performanta intre convertoarele analog-digital din microcontrolere Atmel si cele din PIC-uri. Voi ce ati auzit / constatat ?

Share this post


Link to post
Share on other sites

Daca te referi la microcontrolere pe 8 bit care au ADC-uri pe 10bit, in cazul Atmel pinul AVCC trebuie filtrat bine comparabil cu ADC-urile din PIC-uri care nu sunt asa zgomotoase. Pe de alta parte, Atmel-urile sunt mai practice deoarece poti selecta canalul dorit foarte usor, nu ca la PIC-uri cand ca sa ajungi, spre ex., la canalul ADC3, trebuie sa treci prin 0,1,2. Precizia de folosire ADC, pentru ambele MCU-uri, e aceeasi treaba, fara avantaje sau dezavantaje.

Share this post


Link to post
Share on other sites
Acum 23 ore, dan_e a spus:

Citeam pe net ca ar fi o diferenta de performanta intre convertoarele analog-digital din microcontrolere Atmel si cele din PIC-uri. Voi ce ati auzit / constatat ?

Si ce anume ati citit?

Acum 16 ore, prog a spus:

Daca te referi la microcontrolere pe 8 bit care au ADC-uri pe 10bit, in cazul Atmel pinul AVCC trebuie filtrat bine comparabil cu ADC-urile din PIC-uri care nu sunt asa zgomotoase. Pe de alta parte, Atmel-urile sunt mai practice deoarece poti selecta canalul dorit foarte usor, nu ca la PIC-uri cand ca sa ajungi, spre ex., la canalul ADC3, trebuie sa treci prin 0,1,2. Precizia de folosire ADC, pentru ambele MCU-uri, e aceeasi treaba, fara avantaje sau dezavantaje.

Ma intreb care este tipul PIC-ului care are asemenea proprietati aratate in textul ingrosat.

Eu am programat diverse tipuri PIC de uC, seriile 16, 18 sau dsPIC seriile 30 si 33 si la acestea poti alege, dupa configurare, orice canal aleator fara nici o restrictie.

Proiectarea circuitului are o mare importanta in respectarea linearitatii, atit la nivele mici LSB cit si la nivele mari USB, deoarece curentii prin traseele

 de masa si alimentare creaza caderi de tensiune de cativa mV, care denatureaza conversia poate si cu 5-6 biti.

@gsabac

Share this post


Link to post
Share on other sites
Posted (edited)

ADC - urile de la PIC si AVR sunt exact asa cum sunt descrise in datasheet-urile lor. Nu merg nici mai bine nici mai prost. Din proprie experienta pot spune ca e destul de usor de atins performanta descrisa in datasheet. (Amble au application notes ANxxx  care descriu partea de hardware si de software ca sa obtii ce trebuie de la ele)

RR

Edited by roadrunner

Share this post


Link to post
Share on other sites
Posted (edited)

Exact ce spuneam cu cateva postari mai inainte, numai prin proiectarea inteligenta a circuitului imprimat si a unui soft adecvat

 se pot obtine performante, adica exact cit are ADC-ul precizie, doar 1/2 LSb. La conversia ADC cu 8 bit sau 10 bit realizarea practica

 este oarecum facila, dar spre 12 bit cand o treapta are circa 1mV trebuiesc luate masuri deosebite de stabilitate a etalonului, a impedantei

 sursei de semnal, de filtrare a semnalului de intrare si a sursei de alimentare.

@gsabac

Edited by donpetru
Indepartare continut OFFTOPIC inutil in contextul discutiei actuale

Share this post


Link to post
Share on other sites
La 28.03.2019 la 11:39, gsabac a spus:

Si ce anume ati citit?

Ma intreb care este tipul PIC-ului care are asemenea proprietati aratate in textul ingrosat.

Eu am programat diverse tipuri PIC de uC, seriile 16, 18 sau dsPIC seriile 30 si 33 si la acestea poti alege, dupa configurare, orice canal aleator fara nici o restrictie.

Proiectarea circuitului are o mare importanta in respectarea linearitatii, atit la nivele mici LSB cit si la nivele mari USB, deoarece curentii prin traseele

 de masa si alimentare creaza caderi de tensiune de cativa mV, care denatureaza conversia poate si cu 5-6 biti.

@gsabac

Eu asa mi-aduc aminte ca erau acum vreo 10 ani in urma, poate s-o fi schimbat lucrurile, nu stiu!

Share this post


Link to post
Share on other sites
Posted (edited)

Am sa arat cum folosesc eu secventele de cod pentru selectarea canalelor ADC la microcontrolerele PIC, dupa initializare.

Mai jos este o parte din codul compilat de la un generator DDS cu AD9850(AD9851) si PIC18F2550. Click pentru marire.

1105979862_sweepercompilat.thumb.png.7b8470807be6751ffd8bbc9e68063f61.png

Am schimbat secventele de cod initiale 0,1,2,3 cu 2,4,1,3 si codul a fost compilat si linkeditat cu succes, dupa care

 am incarcat codul HEX in Proteus si am initializat rularea. Cu Visual Studio 2013, cu o legatura duplex prin USB, am comandat baleiajul

 frecventelor si am receptionat semnalele in modul si faza de pe o sarcina complexa, in esenta in final ar fi o antena de emisie-receptie.

Click pentru marire.

467574437_sweepercuPIC18F2550.thumb.png.c7a2a3bc752774eb218f2bb350a356e9.png

Semnalele verticale arata baleajul frecventei in timp, fiecare cu amplitudinea si faza si sunt calculate si afisate curbele de raspuns si valorile esentiale.

Ca o concluzie la procedeul folosit, nu am observat nici o modificare in schimbarea functionarii complexului de simulare si codul prezentat

 pentru ADC  poate fi util vreunui user interesat.

@gsabac

Edited by gsabac

Share this post


Link to post
Share on other sites

Mi-a sarit ceva in ochi uitandu-ma la codul C de mai sus


 

adcVal = ADRESH;
writebuf[5]= adcVal;
adcVal = ADRESL;
writebuf[6]= adcVal;

 

nu era mai simplu ?
 

writebuf[5]= ADRESH;
writebuf[6]= ADRESL;

 

RR

 

Share this post


Link to post
Share on other sites

Multumesc,

am incercat modificarea sugerata, se compileaza si linkediteaza corect si ansamblul functoneaza perfect.

@gsabac

Share this post


Link to post
Share on other sites

@gsabac

In ce limbaj e scris codul de mai sus ca nu se potriveste cu sintaxa de C din manual (ANSI C) ?

RR

 

Share this post


Link to post
Share on other sites

Codul scris de @gsabac pare scris in compilatorul celor de Mikroelektronika si anume MikroC for PIC (compilator cu o sintaxa mai aparte comparativ cu cele uzuale, gen Atmel Studio etc.) !!!

Share this post


Link to post
Share on other sites
Posted (edited)

Eu folosesc cel mai mult cod in MikroBasic, cu compilatoarele de la Mikroelectronica pentru microcontrolerele PIC si dsPIC,

ca in secventa prezentata anterior, dar si MikroC. Se poate folosi si codul in MicroPascal pentru cunoscatori cu aceleasi rezultate,

 deoarece pentru toate, compilatorul le transforma in ASM.

Frecventa de esantionare maxima pentru PIC18F2550(are USB, max. 13 canale ADC de 10 bit) este de 100Ksps,

 iar la familia dsPIC33EPXXGS50X (are SPI-15 Mbps, 10-22 canale ADC de 12 bit) este de 3.25 Msps.

Ar fi util de postat si un cod similar pentru ADC-uri la microcontrolerele Atmel si performantele la tipuri reprezentative cu ADC.

@gsabac

Edited by gsabac

Share this post


Link to post
Share on other sites

La partea de ADC (la MCU de 8 Biti ca la ele se refera topicul) AVR-ul si PIC-ul nu se diferentiaza prea tare, la fel de bune sau la fel de limitate depinde de unde privesti.

Codul arata foarte similar la AVR - alegi viteza (care influenteaza precizia) - alegi modul de aliniere al rezultatului (left/right justified) - alegi canalul - si setezi bitul de start.

Astepti bitul de conversie completa sau te duci mai departe daca lucrezi cu intreruperi. (culegi rezultatul in rutina de intrerupere)

 

Din pacate ambele AVR si PIC 8 biti - sunt depasite din toate punctele de vedere  performante/pret de MCU moderne (Cortex M0 M4 etc.) - Atmel s-a prins de treaba asta si a inceput acum 17 ani sa faca si MCU cu ARM (seria SAM) - aia de la PIC au ramas blocati in lumea lor, cu tool-uri slabe si compilatoare care mergeau numai pe PIC-uri.

Cand Microchip si-au dat seama ca au ramas in urma au cumparat ATMEL (dupa ce au aruncat cu rahat unii in altii 25 de ani) de fapt 70% la suta din piata de MCU e cu ARM la ora actuala si microchip avea nevoie de o felie din piata.

RR

 

 

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Multumesc tuturor pentru explicatii.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.