Forum: Mikrocontroller und Digitale Elektronik Anforderungen an Mikroprozessor aufstellen


von C. S. (syntec)


Lesenswert?

Hallo an alle,

für ein einmaliges Projekt möchte ich eine Regelung auf einen 
Mikrocontroller implentieren. Als erstes möchte ich nun die 
Anforderungen an den Mikroprozessor aufstellen bevor ich dann ein 
geeignetes Entwicklungsboard suche.
Da ich in C programmieren möchte und es vor allem zum AVR recht viele 
Hilfen gibt, möchte ich diesen auch verwenden.
Für mich stellt sich nun die Frage, wie groß der Programmspeicher sowie 
die Rechnergröße sein müssen.
Mein kompilierter C-Code, der noch nicht ganz fertig ist, ist mit dem 
Bibliothelen etwa 100 kB groß. Kann man den Speicherbedarf einfach 1:1 
auf den Programmspeicher übertragen oder sollte man da sicherheitshabler 
etwas überdimesnionieren?
Da mit 8 Bit nur Zahlen bis 255 verarbeitet werden können, ich aber ein 
etwas größeren Zahlenbereich brauche muss ich auf einen 16 Bit Prozessor 
zugreifen oder doch eher gleich einen 32 Bit?
Spielt es bei einen 32 Bit Rechner dann nbei einen solchen kleineren 
Projekt noch eine Rolle, ob man mit Festkomma- oder Gleitkommaarithmetik 
arbeiten will?

Ich würde mich freuen, wenn ihr mir ein paar Ratschläge und Hilfen geben 
könntet, da ich noch relativ neu auf diesen Gebiet bin.

von spess63 (Gast)


Lesenswert?

Hi

>Mein kompilierter C-Code, der noch nicht ganz fertig ist, ist mit dem
>Bibliothelen etwa 100 kB groß.

Auf welcher Plattform?

>Da mit 8 Bit nur Zahlen bis 255 verarbeitet werden können, ich aber ein
>etwas größeren Zahlenbereich brauche muss ich auf einen 16 Bit Prozessor
>zugreifen oder doch eher gleich einen 32 Bit?

Ich habe auf einem AVR schon 64-Bit-Zahlen benutzt.

MfG Spess

von Tropenhitze (Gast)


Lesenswert?

Sag doch einfach, was Du machen willst.
Es soll 8Bit µCs geben, mit denen sich sogar 16Bit berechnen lassen und 
auch Fließkomma. Da staunst Du, nicht wahr?

von Michael S. (ebay_junky)


Lesenswert?

Codegröße: Wenn Dein Code als Binärfile vorliegt, hast du wirklich 100k 
Code, wenn es z.B. ein Hex-File ist, sinds weniger als 50k.

16-Bit Zahlen auf 8-Bit Prozessoren: kein Problem. Das 8-Bit bezieht 
sich nur auf die Registerbreite - Du kannst auch locker 16-Bit, 32-Bit 
oder größere Zahlen verwenden, ist dann nur eine Sache der 
Geschwindigkeit...

von 9xklug (Gast)


Lesenswert?

Wie haben die damals auf nem C64 nur diese Flieskommaberechnungen 
hinbekommen. Und überhaupt, wie kann es sein, dass eine 8-Bit CPU weiter 
wie bis 255 zählen kannn...

von Purzel H. (hacky)


Lesenswert?

Samplerate & Algorithmus ? Anzahl Sensoren ? Ein Steuerglied.

von Michael S. (ebay_junky)


Lesenswert?

Du benutzt mehrere Register, um deine Zahl zu verwursten --> 2 Register 
= 16 Bit...

von C. S. (syntec)


Lesenswert?

Danke erstmal für die raschen Antworten.
Na wie gesagt, bin ich noch Neuling und habe mir den Artikel 
http://www.mikrocontroller.net/articles/Mikrocontroller durchgelesen, 
auf den ich auf die 255 gestoßen bin.

@Michael S: es ist ein hex-file. Also kann man die "reale" Größe dann 
letztendlich auf den Speicher nur abschätzen?!

Habe eine PID und Fuzzy Regelung zwischen denen gewählt werden kann. PID 
arbeitet mit 2 Sensoren und einem Stellglied und der Fuzzy nur mit einem 
Wegsensor und einem Stellglied.
Die Werte sollten schon im Mikrobereich verarbeitet werden.
Samplerate würde ich jetzt erstmal 20 kHz sagen.
Würden da 8 Bit noch reichen?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

9xklug schrieb:
> Wie haben die damals auf nem C64 nur diese Flieskommaberechnungen
> hinbekommen. Und überhaupt, wie kann es sein, dass eine 8-Bit CPU weiter
> wie bis 255 zählen kannn...

Wie kann es sein, daß man weilter als 5 zählen kann... bei nur 5 Finger 
an einer Hand?

von 9xklug (Gast)


Lesenswert?

Oh das geht schon. Manche Völker benutzen die Fingergelenke zum zählen 
und kommen so an einer Hand bis 12. Zusammen mit der anderen Hand können 
die dann bis 144 (12^2) zählen. Eigentlich ne feine Sache ;-)

von Karl H. (kbuchegg)


Lesenswert?

C. S. schrieb:

> Habe eine PID und Fuzzy Regelung zwischen denen gewählt werden kann. PID
> arbeitet mit 2 Sensoren und einem Stellglied und der Fuzzy nur mit einem
> Wegsensor und einem Stellglied.

Und dafür brauchst du 100kB?
DAs kann und will ich nicht glauben

Die 100kB, wo hast du die her?

von Alexander S. (esko) Benutzerseite


Lesenswert?

9xklug schrieb:
> Und überhaupt, wie kann es sein, dass eine 8-Bit CPU weiter
> wie bis 255 zählen kannn...

> Manche Völker benutzen die Fingergelenke zum zählen und kommen so an einer
> Hand bis 12.
> Zusammen mit der anderen Hand können die dann bis 144 (12^2) zählen.

2^12

Wenn man keine Ahnung hat...

von 9xklug (Gast)


Lesenswert?

Nein, die benutzen die eine Hand und berühren dabei die Fingergelenke 
der anderen Hand. Zählen als bis 12. Dann benutzen sie das nächste 
Gelenk der einen Hand und gehen damit die zwölf Gelenke der anderen 
wieder durch. Das ganze wiederholt sich dann, biss alle Gelenke der 
einen Hand 12 mal abgetastet wurden, als 12x12=144. Solltest dich halt 
mal über andere Völker informieren...

von Peter D. (peda)


Lesenswert?

C. S. schrieb:
> Mein kompilierter C-Code, der noch nicht ganz fertig ist, ist mit dem
> Bibliothelen etwa 100 kB groß.

Auf welcher CPU, mit welchem Compiler?
Hast Du mal Optimierungen eingeschaltet?
Kannst Du den Code mal zeigen (als Anhang)?

100kB sind für nen MC schon wahre Monsterprogramme.
Die meisten MC-Programme sind 1..10kB groß.


Peter

von U.R. Schmitt (Gast)


Lesenswert?

9xklug schrieb:
> 12x12=144

Alexander Schmidt schrieb:
> 2^12

Ihr habt beide nicht recht, wenn dann 0 - 12^2 - 1 = 0 - 143
(Duck und weg)

von Michael S. (ebay_junky)


Lesenswert?

C. S. schrieb:
> Also kann man die "reale" Größe dann
> letztendlich auf den Speicher nur abschätzen?!

Nein - manche Compiler(-Toolchains) sagen es Dir direkt. Ansonsten muss 
man sich das MAP-File vom Linker/Locater mal anschauen. Da siehst Du 
dann auch, was Du an RAM verbrauchst - mit dem RAM auszukommen ist bei 
einigen µC wesentlich kniffliger, als der vorhandene Programmspeicher.

von \0 (Gast)


Lesenswert?

An alle Fingerzähler:
zehn Finger, "eingeklappt" oder "ausgeklappt"
2^10 = 1024 verschiedene Zustände

Also ich komm mit 10 Fingern bis 1023 (und hört bitte auf euch mit 144 
rumzukloppen).
\0

von Olaf (Gast)


Lesenswert?

> @Michael S: es ist ein hex-file. Also kann man die "reale" Größe
> dann letztendlich auf den Speicher nur abschätzen?!

Noe, man koennte das HEX File mit dem Editor oeffnen und dann genau 
ablesen wieviel Byte es wohin legen will. Man koennte aber auch schauen 
was der Linker einem sagt wie gross das eigene Project denn so ist. 
Entweder sagen die es einem direct nach dem compilieren von selber, oder 
man kann die veranlassen einem ein mapfile zu erzeugen wo man genau 
ablesen kann wie gross alles ist.

Das einzige was man da nicht ablesen kann ist zur Laufzeit angeforderter 
Speicher. Also z.B die groesse der benoetigten Stacks.

> Habe eine PID und Fuzzy Regelung zwischen denen gewählt werden kann.

Solche Regelungen lassen sich sicherlich im bereich einstelliger kbytes 
realisieren.

> Die Werte sollten schon im Mikrobereich verarbeitet werden.
> Samplerate würde ich jetzt erstmal 20 kHz sagen.
> Würden da 8 Bit noch reichen?

Das wird vielleicht noch gehen, aber es wird grenzwertig. Da deine 
Stueckzahl 1 ist, sind auch die Kosten der Controllers unerheblich.
Du musst unter Umstaenden geringere Performance durch bei dir nicht 
vorhandene Erfahrung ausgleichen.

Ich sage nicht das du den nehmen sollst, aber nur mal als Beispiel:
Ich setze hier den R32C116 ein. Das ist ein 32Bit Controller mit 
Fliesskommaeinheit, 20kRam, 256kFlash und der kostet deutlich unter 
10Euro.
Da wuerde ich nicht den geringsten Gedanken mehr an einen abgehalfterten 
8Bit Prozessor verschwenden! Nimm mindestens einen 16Bit Prozessor und 
achte darauf das die Entwicklungsumgebung brauchbar ist!

Und noch was, die Programmierung eines Reglers ist eigentlich total 
einfach. Schwierig ist die Parametrierung. Und da wirst du ein bisschen 
Reserve im Controller fuer Testausgaben sehr bald zu schaetzen wissen. 
Und es ist auch sehr nett wenn Interruptfunktionen in einem Zugriff auf 
16Byte Werte zugreifen und man nicht jedesmal bei der Datenuebergabe den 
IRQ sperren muss.

Wenn man natuerlich fuer Apple arbeitet und 1Million ipads herstellt so 
nimmt man den billigsten 8Bit Prozessor den man bekommt und reisst sich 
bei der Implementierung den Arsch auf. Aber bei kleinen Stueckzahlen wo 
die Kosten fast zu 100% durch die Entwicklung bestimmt werden nimmt man 
irgendwas dickes, idealerweise natuerlich einen Typen den man schon 
kennt.

Olaf

von Vlad T. (vlad_tepesch)


Lesenswert?

ich vermute, dass der TE ganz einfach die Größe eines kompiliertes 
Windows oder Linuxbinary genommen hat (wenn icht gar die Größe des 
Source-Codes)

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.