Forum: Mikrocontroller und Digitale Elektronik Was ist von Analog Devices MCU zu halten?


von ANAL-og Devices (Gast)


Lesenswert?

Ich werde bald ein Projekt an  der Uni anfangen,
Es geht um sehr  genaue Prozesssteuerung. Mein Betreuer meinte zu 
mir,ich muss mir ein MCU mit sehr gute analoger Leistung nehmen : hohe 
Auflösung, mehr als 8  ADC-Eingängen  mit min. 1 KSPS.

Das einzige was ich bis jetzt gefunden habe, sind die "Analog Devices 
Precision Analog Microcontrollers"
http://www.analog.com/en/processors-dsp/analog-microcontrollers/products/index.html

Insgesamt sieht  es sehr gut aus.
Nun will ich hier Fragen, wie sieht es mit Software/Hardware Entwicklung 
bei Analog Devices aus.
Ich habe gehört, dass die  Programmer/Debugger  sehr teuer sind, und die 
Software ist auch nicht kostenlos.
Hat jemand damit Erfahrung gehabt?

Gibt es eventuell andere Alternativen außer AD?

PS
Ich muss erstmals ein MCU auswählen, dann wird ein kleines Dev-Board für 
mein Projekt gekauft. Danach wird ein PCB mit ausgewählten MCU 
entwickelt.
Das ganze wird zwar  von der Uni bezahlt, aber  die werden sicherlich 
ungern 200-500 Euro für die Hardware ausgeben.

von Dr. Sommer (Gast)


Lesenswert?

ANAL-og Devices schrieb:
> ich muss mir ein MCU mit sehr gute analoger Leistung nehmen : hohe
> Auflösung, mehr als 8  ADC-Eingängen  mit min. 1 KSPS.
Was auch immer das heißt? Falls für dich
"The STM32F373x devices offer one fast 12-bit ADC (1 Msps), up to three 
16-bit Sigma delta ADCs, up to two comparators, up to two DACs (DAC1 
with 2 channels and DAC2 with 1 channel)," auch unter "sehr gute Analoge 
Leistung" fällt, hast hast damit einen Controller der auch sehr gute 
digitale Leistung, freie Tools und günstige Debugger und Evalboards hat.

von H.Joachim S. (crazyhorse)


Lesenswert?

Prinzipiell bessere Ergebnisse bekommt man, wenn man externe Wandler 
einsetzt.
Schnelle digitale Schaltungen stören den Analogteil durch Übersprechen, 
oft Masse- und Vcc-Sorgen.

Trenne beides, und du hast neben besseren Eigenschaften die (fast) freie 
Wahl, sowohl beim A/D-Wandler als auch beim MC.
Und wenn sich ein Teil von beiden als unbrauchbar für die Aufgabe 
erweist (oft weiss man ganz am Anfang nicht, wo man letzendlich landen 
wird), kann man da nachbessern, ohne ganz von vorne anzufangen zu 
müssen.

Für ein Uniprojekt (also minimale Stückzahlen) spielen die (höheren) 
Bauteilkosten keine Rolle, das wird erst bei Serienfertigung evtl. ein 
Problem. Ab und zu wird ja aus einem Uniprojekt tatsächlich ein Produkt. 
Aber dann kennt man die tatsächlichen Anforderungen und kann falls 
erforderlich umdesignen auf ein System mit internem Wandler.
Und du kannst einen Prozessor benutzen, den du schon kennst - das spart 
Unmengen von Stunden bei der Programmiererei. Du willst ja ein Problem 
lösen und nicht einen Prozessor studieren, der zwar evtl. geeignet wäre, 
aber dich viel Einarbeitungszeit kostet, die nicht zur Problemlösung 
beträgt, aber erforderlich ist, um überhaupt was zustande zu bringen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Bin ja ein Fan von LT...
Geh mal auf die Seite von linear.com, da bekommst du Infos über fertige 
eval-boards. Da kannst du davon ausgehen, dass die Analog-Sache nahezu 
perfekt ist. Gibts für rel. kleines Geld (50...100€) und du bist von 
Anfang an ein evtl. grosses Problem los.

von W.S. (Gast)


Lesenswert?

ANAL-og Devices schrieb:
> Es geht um sehr  genaue Prozesssteuerung. Mein Betreuer meinte zu
> mir,ich muss mir ein MCU mit sehr gute analoger Leistung nehmen

Ähem.. Das klingt mir ein bissel sehr seltsam nach ahnungslosem 
Geschwafel.

Was bittesehr ist eine "genaue Prozeßsteuerung"? und wie definiert dein 
Betreuer die "sehr gute analoge Leistung" eines µC?

Halte dich an H.J.Seifert und such dir für die analogen Meßaufgaben die 
dafür geeigneten Teile heraus und nimm für die Verarbeitung einen 
ordentlichen nicht zu knapp bemessenen µC. Für so ein Projekt zählen 
deine Mannstunden (und die deines Betreuers) viel mehr als 20 Euro für 
nen ADC oder nen µC.

Und mach dir deine Leiterplatte selber! Damit du auch auf diesem Gebiet 
was lernst und dich nicht mit den Unzulänglichkeiten fertiger 
Eval-Boards herumärgern mußt.

W.S.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

ANAL-og Devices schrieb:
> Ich habe gehört, dass die  Programmer/Debugger  sehr teuer sind, und die
> Software ist auch nicht kostenlos.

Aha. AD verwendet zwei unterschiedliche CPU-Kerne im Rahmen ihrer 
ADuC-Reihe, einerseits den schon etwas angestaubten MCS-51 und 
andererseits ARM7 bzw. Cortex-M3. Ersteren kann man mit dem kostenlosen 
C-Compiler SDCC programmieren, man muss sich halt eine Headerdatei mit 
den passenden Peripheriedefinitionen besorgen oder selberstricken.

Die ARMe können mit frei verfügbaren Compilern programmiert werden, und 
auch das zum Programmieren/Debuggen erforderliche JTAG-Interface ist 
kein Problem, hier geht sogar der simple steinalte Frickelport-Adapter 
"Wiggler", oder einer der FT2232-basierten OpenOCD-Adapter.

Kostenlose Versionen kommerzieller Tools, die i.d.R. eine 
Codegrößenbeschränkung haben, können aber auch in Frage kommen, da gibt 
es beispielsweise die Kickstart-Version von IARs Embedded Workbench for 
ARM oder Atollic TrueStudio Lite.

von Frank K. (fchk)


Lesenswert?

Alternativen wären Silicon Labs (die haben allerdings bei den Modellen 
mit >=16Bit ADC nur 8051-Kerne, also eher geringe Rechenleistung) und TI 
MSP430 (der wird gerne zB in Messgeräten verbaut, und da gibt es einige 
Modelle mit 16 und 24 Bit ADCs).

Überlege Dir auch: Brauchst Du >=8 Eingänge oder >=8 ADCs? 
Normalerweise hat ein Mikrocontroller nur einen einzigen ADC mit einem 
Analogmultiplexer davor. Heißt also: serielle Wandlung der einzelnen 
Eingangssignale. Wenn Du mehrere Kanäle synchron abtasten und wandeln 
musst, brauchst Du für jeden Eingangskanal einen eigenen ADC. Das gibts 
auch, zB bei Chips für die Energiemessung, da gibts von TI zB einen 
MSP430F6... (Nummer müßt ich jetzt raussuchen), der 7 24 Bit ADCs hat, 
die synchron abtasten und wandeln, weil es für diese Anwendung eben 
erforderlich ist.

Dann: Wie viel Rechenleistung brauchst Du? Musst Du unbedingt 
Gleitkomma-Arithmetik haben? FFTs machen oder Filter rechnen? Wenn das 
mehr ist, fällt der ganze 8051-Krempel raus.

Den Verweis auf externe Wandler solltest Du ernst nehmen. Achte dann 
aber auch darauf, dass Du die Werte effizient in den Controller hinein 
bekommst.

Und nicht zuletzt: Es ist gar nicht so einfach, einen 16 Bit ADC so 
aufzubauen, dass Du von den ganzen Bits auch was hast. Wenn die unteren 
4 Bit aufgrund mangelhaften Layouts eh nur Rauschen sind, dann kannst Du 
auch gleich 12 Bit Wandler nehmen und Stress und Geld und Aufwand 
sparen.
Bei 24 Bit ADCs gilt das noch sehr viel mehr.

fchk

von Blackbird (Gast)


Lesenswert?

ADuC702x haben einen seriellen Bootloader, der mit der AD-Software 
ARMWSD.exe (Windows) programmiert werden kann. Zum Eval-Board wird ein 
Seriell-to-3,3V-Adapter mitgeliefert. IAR und andere Compilerhersteller 
unterstützen die Chips und es gibt von fast Jedem eine (eingeschränkte) 
kostenlose Version.

12bit-ADU und 12bit-DAU sind mit bis zu 1Msps einsetzbar. Im 
free-running-mode habe ich 1,8Msps gemessen.

Blackbird

von (prx) A. K. (prx)


Lesenswert?

Die alten ARM7TDMI µController von AD würde ich nicht unbedingt 
empfehlen. Denen fehlt ein Interrupt-Controller.

von Blackbird (Gast)


Lesenswert?

Na und? Interrupts werden da so behandelt:
1
/*********************************************************************
2
3
 Author        : ADI - Apps            www.analog.com/MicroConverter
4
5
 Date          : Sept. 2005
6
7
 File          : MultInt.c
8
9
 Hardware      : ADuC702x Rev I silicon
10
11
 Description   : Example program using two IRQs.
12
     Timer1 causes an IRQ which complements P4.2.
13
     XIRQ0 causes an IRQ which complements P4.2.
14
    
15
*********************************************************************/
16
17
#include "ioADuC7026.h"          // Include ADuC7024 Header File
18
                      
19
//  Function Prototypes
20
21
void delay(int);
22
void DemoConfig(void);
23
long ADCconvert(void);
24
void delay (int length);
25
26
27
__irq __arm void irq_handler()      // example with two IRQs
28
{        
29
      
30
  if ((IRQSTA & XIRQ0_BIT) != 0)       // external IRQ?
31
  {  
32
    GP4DAT ^= 0x00040000;      // Complement P4.2
33
    while(GP0DAT & 0x00010){}    // wait for XIRQ to be low again
34
  }      
35
  if ((IRQSTA & GP_TIMER_BIT) != 0)    // Timer1 IRQ?
36
  {
37
    T1CLRI = 0;        // Clear Timer IRQ
38
    GP4DAT ^= 0x00040000;      // Complement P4.2
39
    T1LD = 0x20000;        // Timer  reload
40
        }             // required to clear ADC interrupt
41
42
}
43
44
45
46
// MAIN PROGRAM....
47
48
int main (void)  {
49
50
  DemoConfig();          // set up ADC, DAC, & reference
51
52
  GP0CON = 0x00;
53
  GP4DAT = 0x04000000;        // Configure P4.2 as output
54
  GP3DAT = 0xff000000;        // Configure port 3 as output
55
              // Timer 1 configuration
56
  T1LD = 0x8000;          // Counter Value
57
  T1CON = 0xC4;          // Enabled,Periodic,Binary and CLK/16
58
59
  IRQEN = XIRQ0_BIT + GP_TIMER_BIT;    // Enable XIRQ0 and Timer1 IRQ
60
61
62
  while(1)
63
  {
64
    GP3DAT ^= 0x00ff0000;      // Compliment P3
65
    ADCCON = 0x6A3;        // single conversion
66
    delay(0x2000);        // Delay Blinking of P3
67
  }
68
69
}
70
71
void delay (int length)
72
{
73
  while (length >=0)
74
    length--;
75
}
76
77
void DemoConfig(void) {                // ADC, DAC and Reference configuration
78
  ADCCON = 0x620;                // ADC on
79
        ADCCP = 0x00;          // conversion on ADC0
80
  DAC1CON = 0x13;          // AGND-AVDD range
81
  REFCON = 0x01;          // internal 2.5V reference
82
83
  return;
84
}

Muß jeder selber abschätzen, ob das relevant für die Aufgabe ist.

Blackbird

von ungenau definiert (Gast)


Lesenswert?

bei der Anforderung vom Betreuer an den uC ist 10bit AD Auflösung 
vielleicht schon hoch, dann ist ein ATmega88 schon ein passender 
Kandidat.
und ein xmega128A1+extRAM macht restlos glücklich.
Und wer als erstes uC-Projekt mehr als 12bit AD Auflösung 
(0,0008V/3V3max) hinbekommt, Respekt !
24 bit vom AnalogDevices uC sind schon recht sportlich.

von Wilhelm F. (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:

> Aha. AD verwendet zwei unterschiedliche CPU-Kerne im Rahmen ihrer
> ADuC-Reihe, einerseits den schon etwas angestaubten MCS-51 und
> andererseits ARM7 bzw. Cortex-M3. Ersteren kann man mit dem kostenlosen
> C-Compiler SDCC programmieren, man muss sich halt eine Headerdatei mit
> den passenden Peripheriedefinitionen besorgen oder selberstricken.

SDCC ist gut und auch unlimitiert, aber man muß sich da wirklich alles 
selbst stricken. Am Headerfile Definitionen kann man schon mal einen Tag 
verbringen, und am Batch-File für die Compilierung zwei bis drei Tage, 
wenn man aber schon was von der Materie versteht. Für Ungeübte können da 
auch zwei Wochen für drauf gehen. Debuggen muß man nach der alt her 
gebrachten Methode Terminalprogramm am PC und serielle Kommunikation mit 
Snapshots. Da geht auch Zeit drauf, um das zu erstellen.

Es geht also mit dem kostenlosen Tool unter Umständen einen Monat mehr 
Zeit drauf als nötig, und deshalb würde ich mich für eine Studienarbeit 
nur ganz schwer auf so was einlassen wollen. Was nix kostet, ist aber im 
Hobby brauchbar, wo es keinen Zeitdruck und Termine gibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.