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.
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.
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.
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.
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.
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.
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
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
Die alten ARM7TDMI µController von AD würde ich nicht unbedingt empfehlen. Denen fehlt ein Interrupt-Controller.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.