Forum: Mikrocontroller und Digitale Elektronik Wie arbeiten Mikrocontroller?


von Frage (Gast)


Lesenswert?

Hallo,

ich habe eine kurze Frage welche ich jedoch beim Googeln nicht 
herausfinden konnte.


Wenn ein Mikrocontroller einen sehr rechenintensive Aufgabe zu erledigen 
hat, z.B. die Erstellung eines MD5-Hashes, erzeugt der Mikrocontroller 
den Hash zuerst und arbeitet dann die restliche Source ab oder wird mit 
jedem neuen Durchgang ein bisschen mehr vom Hash errechnet?

Ich hoffe man kann verstehen wie ich das meine, ist schwer zu 
beschreiben.

von Dennis S. (eltio)


Lesenswert?

Beides ist möglich, je nach dem ob Multitasking genutzt wird oder 
nicht. Bei ersterem kann es sein, dass auch noch andere Threads 
aktiviert werden. Es ist auch abhängig davon, ob die Aufgabe überhaupt 
unterbrechbar ist. Es ist Aufgabe des Programmierers festzulegen was der 
Controller macht.

Gruß
Dennis

von Frage (Gast)


Lesenswert?

Ok, danke für die Antwort.

Weißt du zufällig (ich hab das Gefühl ich mach mich mit der Frage jetzt 
nicht beliebt ;)) wie dies in der Arduino IDE funktioniert?

von Dennis S. (eltio)


Lesenswert?

Die Art der Programmierung ist unabhängig von der IDE! Die ist 
(vereinfacht) nur für das Erstellen des Programms zuständig. Du kannst 
ja in Word auch ein Gedicht oder einen Roman schreiben..

Hausaufgabe für dich: Erkläre die Begriffe IDE, Compiler, 
Mikrocontroller, Interrupts und Linker... ;-) Hilfe gibt es auch hier im 
AVR-Tutorial.

Gruß
Dennis

von lrep (Gast)


Lesenswert?

Frage schrieb:
> arbeitet dann die restliche Source ab oder wird mit
> jedem neuen Durchgang ein bisschen mehr vom Hash errechnet

Kommt drauf an, wie das programmiert ist.
Ein PC z.B. ist so schnell, daß er fast immer auf irgend etwas wartet.
Während dieser Zeit kann er im Hintergrund irgendwelche wenig wichtige 
Dinge erledigen, wie z.B. Bildschirmschoner, Videos codieren, oder auch 
nur die Uhrzeit weiterzählen.
Gewöhnlich werden diese Programm nach kurzer Zeit von einem 
Hardwaretimer unterbrochen, und dann schaut der Prozessor in einer Liste 
nach, was jetzt das Wichtigste ist, und dann rechnet er ein bischen an 
dem anderen Programm, bis er wieder unterbrochen wird.

Gewöhnlich sind die Programme von Mikrocontrollern aber einfacher 
gestrickt, u.a. weil solche Verwaltungsaufgaben selber einiges an 
Rechenzeit und Speicher verbrauchen.

von FelixW (Gast)


Lesenswert?

Frage schrieb:
> erzeugt der Mikrocontroller
> den Hash zuerst und arbeitet dann die restliche Source ab oder wird mit
> jedem neuen Durchgang ein bisschen mehr vom Hash errechnet?

Das hängt vom Algorithmus ab, den du als Programmierer verwendet / 
welche Anforderung du hast.

a) Du rechnest alles in einem Schritt, weil dein Programm eh nichts 
dazwischen machen kann. (lang lebe die Warteschleife)
b) Du zerlegst die Aufgabe in kleine Schritte/Funktionen mit begrenzter 
Laufzeit und rechnest Periodisch exakt einen Teilschritt (kooperatives 
Multitasking). Eine/mehrere Funktionen werden mehrfach aufgerufen, bis 
ein Ergebnis fertig ist.
c) Du nutzt Interrupts/OS, welches deine Funktion nach Zeit oder 
Ereignissen unterbricht und später die Aufgabe fortsetzt.
(preemptive Multitasking)

a) ist einfach zu verstehen und zu programmieren. Wird deshalb gerne 
gemacht, auch an Stellen wo es eigentlich unangebracht ist.
b) Braucht eine Schleife, die periodisch aufgerufen wird.
c) setzt Threads / ein OS voraus.

Alle 3 haben Ihre Berechtigung. Informationen sollten in der 
Dokumentation der Bibliothek stehen. Bei Arduino rate ich auf a)

von Postkunde (Gast)


Lesenswert?

Kausalitaet bitte. Ein Controller macht nicht einfach etwas. Sondern was 
es machen soll. In der Abfolge wie vorgesehen.

von Jonas G. (jstjst)


Lesenswert?

Hallo,

die c't hacks hatte mal einen Artikel zu Multitasking mit dem Arduino.

http://www.heise.de/artikel-archiv/ch/2013/04/152_Multitasking-mit-Arduino

Ohne das es böse gemeint ist:
Du hättest auch einfach googeln können.

Jst

von Rolf M. (rmagnus)


Lesenswert?

Postkunde schrieb:
> Kausalitaet bitte. Ein Controller macht nicht einfach etwas. Sondern was
> es machen soll. In der Abfolge wie vorgesehen.

Korrektur: Er macht das, was man programmiert hat. In der Abfolge, wie's 
im Programm steht (zumindest grob).

von Wolfgang (Gast)


Lesenswert?

Rolf Magnus schrieb:
> Korrektur: Er macht das, was man programmiert hat. In der Abfolge, wie's
> im Programm steht (zumindest grob).

Woher soll das Programm wissen, wann ein äußeres Ereignis eintritt. Er 
macht nicht "was man programmiert hat", sondern er verhält sich so, wie 
man es programmiert hat. Das ist ein riesen Unterschied. Sonst könnte er 
nicht, abhängig von irgendwelchen Bedingungen, unterschiedlich 
reagieren.

von Paul B. (paul_baumann)


Lesenswert?

>Wie arbeiten Mikrocontroller?

Meist lautlos.

MfG Paul

von Marian (phiarc) Benutzerseite


Lesenswert?

Paul Baumann schrieb:
>>Wie arbeiten Mikrocontroller?
>
> Meist lautlos.

Falsch, unterm Mindestlohn!

von Rolf M. (rmagnus)


Lesenswert?

Wolfgang schrieb:
> Rolf Magnus schrieb:
>> Korrektur: Er macht das, was man programmiert hat. In der Abfolge, wie's
>> im Programm steht (zumindest grob).
>
> Woher soll das Programm wissen, wann ein äußeres Ereignis eintritt. Er
> macht nicht "was man programmiert hat", sondern er verhält sich so, wie
> man es programmiert hat. Das ist ein riesen Unterschied. Sonst könnte er
> nicht, abhängig von irgendwelchen Bedingungen, unterschiedlich
> reagieren.

Wenn man programmiert hat, daß er auf ein Ergebnis reagieren soll, dann 
reagiert er auf ein Ergebnis, weil das das ist, was man programmiert 
hat.

von Blaurock (Gast)


Lesenswert?

Quatsch, ein Controller macht immer Dinge, die man gar nicht so 
geschrieben hat. Zumindest geschieht das bei den meisten 
Forenteilnehmern. Das berühmte Abstürzen oder einfach wieder von Vorne 
anfangen, sind solche Dinge.

Wenn er einen MD5 Hash berechnen soll, kommen immer nur wilde 
Zahlenreihen heraus, die nur so aussehen, als sei es MD5.

Und das passiert, weil der Controller immer genau das macht, was in 
seinem Programmspeicher steht.

von Rolf M. (rmagnus)


Lesenswert?

Blaurock schrieb:
> Quatsch, ein Controller macht immer Dinge, die man gar nicht so
> geschrieben hat.

Kann passieren, ist dann ausgelöst durch einen Bug im Compiler oder im 
Controller selber.

> Und das passiert, weil der Controller immer genau das macht, was in
> seinem Programmspeicher steht.

Und das ist das, was man programmiert hat. Wie sollte es denn sonst in 
den Programmspeicher kommen? Es ist eben nur nicht immer das, was man 
eigentlich beabsichtigt hat.

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.