Forum: Mikrocontroller und Digitale Elektronik Neu bei Mikrocontrollers - ein paar Fragen


von Gonzalo M. (winterhunter)


Lesenswert?

Hallo,

Am Moment will ich eine kleines SCADA-system für mein Haus bauen (um die 
Heizung, Alarm, usw. zu Automatisieren).

Ich habe mit C-Control Mikrocontrollers (ein Freescale MC68H12 
programmierbar unter Basic), und finde dass es:
  + nicht genug leistung hat (~20000 I/s, nur 140 bytes RAM)
  + sehr limitiert ist (BASIC Sprache, keine threads, keine Coroutine, 
usw)
  + nicht "freundlich" zu ausprüfen ist (keine Simulation oder 
Debug-Programm).

Ich suche eine Lösung dass besser Unterstützung hat (Debug- oder 
Simulation-Programm, C Sprache Kompiler).  Die Hauptpunkte für mich 
sind:
  + Besser "Scalability" (durch die Möglichkeit eine RTOS oder ein 
interruptgesteuert Task-Scheduler zu nutzen).
  + Freies oder billiges Kompiler + Debug-Programm (ein IDE wenn 
möglich).

Ich habe über einen Paar Möglichkeiten gedacht :
  + dsPIC 33 mit der IDE+Kompiler+Simulation-Programm von 
Mikroelectronika.
  + ARM (Was für IDE/Kompiler/Simulation- oder Debug-Programm gibt es? 
Was ist und wie funktioniert das JTAG?)


Was empfehlen sie?

Danke sehr!

MfG,

Gonzalo MEZA

Danke

von Falk (Gast)


Lesenswert?

@Gonzalo Meza


>Ich habe über einen Paar Möglichkeiten gedacht :
>  + dsPIC 33 mit der IDE+Kompiler+Simulation-Programm von
>Mikroelectronika.

Kann mich mit PICs nciht aus, aber nach allem was man so hört sind die 
eher Mist.

>Was empfehlen sie?

AVR, gibts von ganz klein (1k FLASH) bis recht gross (256K FLASH). Weit 
verbreitet (vorallem hier), leistungsfähig, sehr viele 
Programmiersprachen in verschiedenen Stufen (Bascom, C, ASM, etc.)

MFG
Falk

von Wolfram (Gast)


Lesenswert?

>Ich habe mit C-Control Mikrocontrollers (ein Freescale MC68H12
>programmierbar unter Basic), und finde dass es:
>  + nicht genug leistung hat (~20000 I/s, nur 140 bytes RAM)
>  + sehr limitiert ist (BASIC Sprache, keine threads, keine Coroutine,
>usw)

Was machst du in deiner Steuerung für dein Haus was mit 20000 I/s nicht 
zu erschlagen ist?

Auch wenn ein heutiger Mikrocontroller 8.000.000 I/s aufwärts bietet, 
der Weg den du einschlägst führt dich möglicherweise nicht dahin, wo du 
hinwillst.

Du willst einen Mikrocontroller in C mit oder ohne RTOS programmieren.
>in Basic ..keine threads, keine Coroutine,usw)
das gilt für C genauso, wenn man dieses Problem löst. Auf die gleiche 
Weise wäre es aber auch in Basic lösbar.

>nicht "freundlich" zu ausprüfen ist (keine Simulation oder Debug-Programm
reinhacken und ausprobieren ist meist die Ursache des Problems, egal wie 
schnell des Controller ist.

> + Besser "Scalability" (durch die Möglichkeit eine RTOS oder ein 
>interruptgesteuert Task-Scheduler zu nutzen)
in einem RTOS mußt du genau wissen was du tust, das zu debuggen ist nur 
bedingt möglich.

Basic hat dir bisher viel abgenommen, dies wird in C nicht so sein.
Wenn du deine Steuerung also realisieren willst, dann zeige mal dein 
Programm damit man sehen kann wo das Problem liegt.
Wenn du was neues zum ausprobieren suchst, es gibt auch einen gcc für 
den 68hc12, wahrscheinlich wäre also auch deine alte Hardware in C 
programmierbar.


von Winfried (Gast)


Lesenswert?

Mit ARM wirst du wahrscheinlich nicht an die Leistungsgrenzen stoßen. 
Der Einarbeitungsaufwand soll wohl etwas höher sein, als z.B. AVR.

AVR sollte für dein Vorhaben genauso ausreichen. Es gibt viele freie und 
gute Werkzeuge.

Sollten also beides gute Alternativen sein.

von Peter D. (peda)


Lesenswert?

Saumäßige Projektvorbereitung kann man niemals durch noch soviel 
Rechenleistung kompensieren.

Du mußt Dir nur einenm Ablaufplan machen, wie alles ineinander greift, 
dann kannst Du es bequem z.B. mit nem ATMega16 erschlagen.

Ne Heizungssteuereung ist definitiv alles andere als 
rechenleistungshungrig.

Einen kleinen effektiven Scheduler für Wartezeiten findest Du in der 
Codesammlung.


Peter

von Gonzalo M. (winterhunter)


Lesenswert?

Danke sehr für deinen Antworte.

@Wolfram:
> Was machst du in deiner Steuerung für dein Haus was mit 20000 I/s nicht
> zu erschlagen ist?
20.000 I/s ist zu viel um die Heizung zu regeln... 140 bytes RAM, das 
kann ein Problem sein wenn man threads nutzen wollte.


> Du willst einen Mikrocontroller in C mit oder ohne RTOS programmieren.
Ich brauche ein Scheduler und ein RS-232 Stack (oder USB-Stack)...  Wenn 
ich eine kleines RTOS nutzen kann, wäre es einfacher. Es gibt auch viele 
beispiele Schedulers (weighted Round-Robin, usw) und RS-232-Stacks im 
Internet, und mann sollt nur die µC-Spezifiches teil wechseln.

>>in Basic ..keine threads, keine Coroutine,usw)
> das gilt für C genauso, wenn man dieses Problem löst. Auf die gleiche
> Weise wäre es aber auch in Basic lösbar.
Die C-Control Basic++ ist sehr labil, wenn man pointers nutzt.

>>nicht "freundlich" zu ausprüfen ist (keine Simulation oder Debug-Programm
> reinhacken und ausprobieren ist meist die Ursache des Problems, egal wie
> schnell des Controller ist.
Stimmt, dass es SEHR wichtig ist.

@Peter:
Projektvorbereitung/Ablaufpläne/usw, das kenne ich (beruflich bin ich 
Projektleiter).  Und ja, 20.000 I/s ist zu viel um zu steuern eine 
Heizung (Man kann die Eigenzeit des Systemes in Sekunden messen).

Mit ein Thead/Task-Scheduler, gibt es die Möglichkeit um neuen 
Funktionen einfach beeinzufügen (ein Thread regelt die Heizung, andere 
die Diebstahlsicherung, ein kontrolliert die Datenkommunikation mit dem 
PC, usw).

Für dem ARM, ich habe ein paar Fragen noch :
  + Kann man mit die GCC Toolkit (gdb) die µC über JTAG debuggen?
  +  Gibt es andere freie oder billige Kompilers/Simulators/Debuggers 
für dem ARM?

Danke sehr!

von TheMason (Gast)


Lesenswert?

@gonzalo

also für dein haus-projekt sollte ein avr allemale ausreichend sein.
einen richtigen scheduler als solches (multi-threading) ist vollkommen 
oversized. bau dein programm so um das du mit kooperativen multitasking 
auskommst. das ist auf jedenfall machbar (vor allem in einem projekt wo 
du eh nur alle paar sekunden auf irgendwas reagieren musst, ein rtos ist 
total oversized). hat außerdem den vorteil das es einfacher zu debuggen 
ist.
was meinst du mit rs-232-stack ?
meinst du eine art shell mit der du über die rs232 oder usb befehle an 
das system geben kannst ?


von tom (Gast)


Lesenswert?

wenn du noch nicht mit Mikrocontrollern vertraut bist, vergiss die ganze 
RTOS Geschichte ertstmal. Ich empfehle erstmal das Tutorial auf dieser 
Seite und dann erstmal nen paar LEDs blinken lasse. Die Empfehlung gilt 
ganz besonders für PC/Windows Programmierer die meinen schon alles zu 
können. Peter hat schon recht, geht sicher alles bequem auf nem Mega16.
Gruß tom

von Wolfram (Gast)


Lesenswert?

>140 bytes RAM, das kann ein Problem sein wenn man threads nutzen wollte.
stimmt

Es gibt andere Möglichkeiten das gleiche einfacher zu erreichen, z.B. 
mit Statusmaschinen.
Kann es sein, dass du sonst nur auf "grossen" Mikrocontrollern und dem 
PC programmierst? Dein Herangehen und Ausdrucksweisen wie "rs-232-stack" 
legt diese Vermutung nahe.
Wenn es nur um eine Heizungssteuerung bei Dir zu Hause geht, kauf Dir 
ein kleines Board, wo ein Linux drauf läuft da kannst du genau deinen 
Ansatz umsetzen und es wird auch noch sehr bequem auch beim debugging, 
nebenbei das ganze mit Webinterface wär das nichts?

Andere Variante: Board mit ARM/AVR + debugger ,Einarbeitung in z.B. 
FreeRTOS
ist auf jeden Fall zeitaufwendiger. Wenn du nicht gerade alles selbst 
löten willst und es richtig ordentlich werden soll, wirst du am Ende 
sehr wahrscheinlich bei ähnlichen Kosten landen wie bei der vorherigen 
Lösung.

von winterhunter (Gast)


Lesenswert?

@Wolfram:
Nochmal, danke sehr für deinem Antwort.
Du bist recht, ich habe am meistens im Computern (C64, Amiga, PC, 
PowerPC) programmiert.

@TheMason:
Ja, ich will die µC "steuern" mit ein PC (um Daten im PC zu speichern, 
und das HIM im PC zu bauen).

@Tom:
Ich habe schon ein "blinking LED" mit ein PIC12 im Uni gemacht (in ASM). 
Wenn ich nur ein "simple" Heizungsteuerung machen wollte, könnte ich es 
mit ein PIC12 tun (aber nicht auf ASM - Harvard-Architecture-ASM ist 
nicht für mich).
Ich habe es schon mit die C-Control gemacht, aber es ist sehr labil (die 
OS - der Autor des OSs hat mein Programm nachgeprüft und kann kein 
Fehler finden; trotzdem die OS hängt auch bei ihm).
Am moment soll ich ein Heizungsteuerung machen dass :
  + 2 Klimaanläge über IR regeln (es soll alle die Befehle der 
Fernsteuerung des Anlages imitieren).  Es sollt die Uhr und Tage des 
Woches betrachten
  + die Verbrauch des Anlages überwachen.

Sage mir, warum empfehlst du ein AVR statt ein PIC? Was für Vorteile 
gibt es?

von mr.chip (Gast)


Lesenswert?

Hallo

Für deinen Zweck dürfte ein AVR genau das richtige sein. Du scheinst 
dich ja mit Elektronik und Programmierung auszukennen, einzig der 
richtige Mikrocontroller fehlt dir noch. Ein AVR ist leicht zu 
beschaffen, leicht zu programmieren, AVRStudio bietet sogar einen 
Simulator, kostet nicht viel und hat locker die Leistung, die du 
brauchst. Zum Vergleich: Man kann damit (per Software natürlich) ein 
S/W-Videosignal mit einer Auflösung ähnlich einem Handy-Display 
generieren.

Wegen den PICs: Man hört einfach beinahe nur schlechtes - kennen tu ich 
sie aber nicht.

Gruss

Michael

von Gerhard (Gast)


Lesenswert?

Hallo,

jetzt moechte ich mal meinen Senf beitragen. :)

Vor ein paar Jahren entwickelte ich fuer meine Firma ein PIC(18F8722) 
gesteuertes Kontrollsystem fuer eine Marine Umweltmesssystem. Dort 
musste der PIC das folgende in Real-time bewaeltigen:

Die gleichzeitige PI Steuerung von drei Peltier Klimaanlagen fuer die 
Temperaturkontrolle der eigentlichen teuren Messgeraete in einem weiten 
Bereich.

Gleichzeitige proportionale Innendrucksteuerung  von zwei 
Instrumentkompartments.

Wetterstationmessaufgaben.

Protokolluebersetzung fuer ein Zusatzgeraet.

Alarminterface.

Erfassung aller wichtigen Telemetriedaten und AC und DC Schaltfunktionen 
bis zu 5KW Gesamtleistung (440V, 3-Ph. 230V). Autonomer Selbstschutz des 
System im Falle einer Communications-Stoerung.

Gleichzeitiger Gebrauch beider UARTS mit dem Host und zusaetzlicher 
Peripherie.

Real-time communications mit dem Hostsystem im Einsekundentakt mit ca. 
5KB an Telemetrie und Steuerung ueber eine RS485 Leitung mit 57.6Kb/s .

Das Programm wurde in CCS-C erstellt und lastet den PIC nur 35% (Zeit) 
aus bei 16MHz Takt.

Ich will damit nur rausttellen dass es PICs auch wunderschoen tun. 
Realtime Leistung war unschwer zu bewaeltigen durch den sachgerechten 
Einsatz von State Machines und Interrupts.

Diese Systeme funktionieren schon seit ihrer Erstellung jahrelang 
anstandslos ohne Stoerungen und ich finde dass man mit PICS durchaus 
Erfolg haben kann. Ich habe auch oft mit AVRs gearbeitet und sehr viel 
Erfolg und Freude damit gehabt. Meiner Meinung nach macht das wenig 
Unterschied, ausser dass der AVR etwas schneller ist.

In Bezug auf Zuverlaessigkeit, kommt es natuerlich sehr auf den Aufbau 
und externe Beschaltung an, so dass der PIC/AVR von der Umwelt 
ausreichend geschuetzt ist.

Home automation sollte anstandslos zu bewaeltigen sein, da 
Geschwindigkeit der Steuerung absolut unwichtig ist. Das Programm 
duerfte sich hoechstwarscheinlich ueber 90% im Leerlauf befinden.

Ich hoffe dass meine Ausfuehrungen etwas helfen mehr Vertrauen zur 
Leistungsfaehigkeit dieser 8-bit MPUs zu haben und dass es 
hauptsaechlich auf die Art und Weise des Designs ankommt. Mit C zur 
Programmerstellung kann man erstaunlich viel anstellen. :)

Ich bitte das alles auf keinen Fall als Besserwisserei aufzufassen und 
will hier niemand auf die Fuesse treten.

Gruss,
Gerhard





von crazy horse (Gast)


Lesenswert?

"ich finde dass man mit PICS durchaus
Erfolg haben kann. Ich habe auch oft mit AVRs gearbeitet und sehr viel
Erfolg und Freude damit gehabt."

Das ist doch auch eine Art Bewertung, oder? :-)
Der effektivste Prozessor ist immer der, den man gut bis bestens kennt. 
Das macht mehr oder weniger den Unterschied. Und am Einarbeiten in den 
PIC bin ich gescheitert, das war nicht meine Schiene. SIcher hat sich 
dieses Problem durch Hochsprachenprogrammierung entschärft - 
verschwunden ist es aber nicht. Insofern habe ich den AVR "sofort" 
kapiert, komme aus der Z80 und 8051 Ecke. Ich könnte mir gut vorstellen, 
das sich ein ehemaliger 6502-Fan sehr viel leichter mit dem PIC tut.

von Peter D. (peda)


Lesenswert?

Ich komme auch aus der Z80/8051-Ecke und hab mir dann erst den PIC 
angesehen.
Da muß man ganz zwangsläufig zu dem Schluß kommen: Nein, sowas total 
verqueres tue ich mir auf keinen Fall an.

Als ich dieses umständliche RETLW gesehen hab, konnt ich mich vor Lachen 
kaum halten.

Dagegen beim 8051: "MOVC A,@A+DPTR", wow wie clever, Indexaddition und 
Tabellenzugriff in einem Abwasch.
Und "MOVC A, @A+PC", wow wie clever, Tabellenzugriff in Interrupts ohne 
DPTR sichern zu müssen.
Und "ANL C, bit", "ORL C, /bit", wow Logikgleichungen einfach so 
hinschreiben, wie sie sind.
Und "DJNZ byte", wow, haufenweise Countdown-Zähler ohne das SREG sichern 
zu müssen.
Man hat sofort gemerkt, die 8051-Entwickler haben total mitgedacht und 
genau gewußt, wo der Schuh drückt.
Etwas geärget hatte mich, daß "PUSH P2" nicht das Ausgangsregister 
sichert, aber da ich schon lange keinen externen Code-Flash mehr nutze, 
ist das Schnee von gestern.


Man staunt manchmal, auf welche Ideen die PIC-Kids so kommen, was es so 
für Applikationen mit PICs gibt. Warscheinlich fördert die verquere 
Architektur sogar den Willen, etwas daraus zu machen.
Das Schwierige ist ja immer, die Idee zu haben, das Umrubeln auf nen 
8051/AVR ist dann nur noch ein Klacks.

Man kann bestimmt viele 8051/AVR-Applikationen auch mit nem PIC machen, 
aber ohne mich.


Peter

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.