Bitte um Empfehlung uC

Loading thread data ...

Frank Buss schrieb:

[random() Sourcecode]

Ja, auf jeden Fall. Aber einen Überblick über den tatsächlich ablaufenden Code wird ein Anfänger damit nicht bekommen.

Im random-Beispiel hat man es mit drei (!) verschiedenen Funktionen, die alle "random" heißen, zu tun, nicht etwa mit Rekursion:

long random(long howbig) { if (howbig == 0) { return 0; } return random() % howbig; }

long random(long howsmall, long howbig) { if (howsmall >= howbig) { return howsmall; } long diff = howbig - howsmall; return random(diff) + howsmall; }

(Erläuterung: das ist C++, wir sehen eine Version mit 2 Parametern, eine mit einem Parameter, und es gibt irgendwo in der Library noch eine ohne Paramter.)

P.

Reply to
Peter Schneider

Wundert mich immer wieder, wie die das in China so preiswert herstellen können und dann auch noch kostenloser Versand.

Und wenn wenig Platz ist:

formatting link

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Das stimmt, aber dem typischen Anfänger interessiert der Sourcecode der Library auch herzlich wenig :-)

Wobei in C++ normalerweise üblich ist, zur besseren Verständlichkeit beim Aufruf der Libraryfunktion ::random zu schreiben.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Am 14.08.2013 09:41, schrieb Frank Buss:

Wenn wenig Platz ist nehm ich was in SOT-23/6.

Auf dem Platz dieses Arduino kann man da eine ganze Rolle von unterbringen. ;-)

Gruß Dieter

Reply to
Dieter Wiedmann

Am Tue, 13 Aug 2013 13:12:52 +0200, meinte M.Dinsch :

Vielen, vielen Dank, daß ihr euch so eine Mühe macht, mir zu helfen. Wirklich toll!

Ich habe mir gestern Abend BASCOM und ein paar ATtiny13-Sources etwas näher angeschaut und in besagten "wenigen zehn Minuten" (sagen wir mal eine Stunde) anhand dieser Beispiele einen Code "geschrieben" (ich will nicht übertreiben, das Progrämmchen verdient den Namen eigentlich nicht, der größte Aufwand war die Syntaxregeln zu erfassen und die richtige "Einleitung" zu finden), der die beschriebene Funktionalität abbilden sollte. Um hier nicht unnötig Text zu produzieren habe ich den Code bei

formatting link
hinterlegt. Der Code sollte so seine Richtigkeit haben, vielleicht nicht absolut elegant und effizient/optimiert, aber funktionierend. Allein bei der rnd()-Funktion zweifele ich etwas, ob es nicht besser wäre, den vollen Bereich bis 65535 auszuschöpfen und mit "shift, right, 4" sowie dem Addieren von 1024 auf den Bereich von ca. 1 bis 5 sec. einzustellen, um evtl. die "Zufälligkeit" zu verbessern. Zu dem rnd()-Befehle finde ich leider keine weitere Erklärung, um beurteilen zu können, welche Anwendung die "zufälligsten" Ergebnisse liefert.

Eure Diskussion um den C-Code zeigt deutlich, warum ich vor "Neuland" zurückschrecke. C etc. (wie auch Pascal) habe ich nie gelernt; ich bin Autodidakt und kam aufgrund meiner "Problemstellungen" mit BASIC und Clipper einerseits und, wenn es an die Hardware ging und/oder zeitkritisch war, 8088-Assembler andererseits hin. Vor allem mit Assembler kann man so tolle Sachen machen, da brauchte ich weder C noch Pascal. Natürlich könnte ich mich mit diesem Hintergrund auch in C und Pascal und die uC-Assembler einarbeiten, aber dies würde ungleich sehr viel mehr Zeit, Tage und Wochen, erfordern als ich jetzt für das Progrämmchen aufwenden mußte. Zwar kann ich den freundlicherweise geposteten C-Code grob "verstehen", nicht zuletzt natürlich auch weil ich weiß, was er bewirken soll, aber bis ich den bar aller Kenntnisse in C selbst hätte hingschreiben können würden Tage vergehen - auch selbst wenn ich ihn übernehmen würde, würde jede Änderung wegen der Notwendigkeit des Einarbeitens eine erheblichen Einarbeitungsaufwand erfordern. Mir ist natürlich klar, daß ich so nur eine ad-hoc-Lösung gefunden habe und damit auf Dauer, sollte ich wirklich mal in die uC-Programmierung einsteigen, nicht hinkommen werde. Aber das ist derzeit nicht in Sicht und wer weiß was dann, wenn ich wirklich Zeit dafür haben werde, aktuell ist. Und nicht vergessen: Ich nur Hobbyelektroniker, weder vom Fach noch gar Profi.

Reply to
M.Dinsch

Das ist eine komische Definition von wenig Platz :)

Ein ATTiny10 im SOT23-6 wäre da eher das was ich erwarte. Der kostet auch weniger als einen Euro. Oder wenn es komfortabler sein soll: ATTiny25. Da geht dann auch C drauf und es gibt ihn als DIP8 und SO8. Preis knapp über (DIP) bzw. unter (SO) einem Euro.

Ein Programmieradapter kostet deutlich unter EUR 10,- (z.B.

formatting link

IDE, C-Compiler, Brennprogramm gibts alles zum Download. Und ob man sich ins AVR-Studio einarbeitet oder die Arduino-IDE ... dürfte kaum einen Unterschied machen.

(OK ich kann das nicht beurteilen, weil ich vorbelastet bin und gleich mit Editor, make und gcc losgelegt habe)

XL

Reply to
Axel Schwenke

Warum sollte man im C/C++ Quellcode etwas anderes verwenden? Ein guter Compiler sollte den für den jeweiligen passenden Prozessor optimalen Maschinencode erzeugen (können). Wenn schon im C-Quellcode "voroptimiert" wird, verbaut man sich u.U. diese Möglichkeit. Außerdem leidet meist die Lesbarkeit darunter.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Du kannst es ja auch nur zum Programmieren verwenden.

Ein 8088 ist verglichen mit z.B. 8031 für Steuerungszwecke IMO deutlich unübersichtlicher. Um z.B. das LSB in Port 3 zu setzen reicht in 8031 ein "SETB P3.0". In 8088: in al,port or al,1 out port,al

Auch das Interrupthandling finde ich ggü dem 8088 einfacher. Schon mal den 8259 am PC programmiert?

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Man kann dasselbe mit einer Multiplikation und einer Shift-Operation erreichen (angenommen, RAND_MAX=2^n-1, mit n=16 oder 32, was man aber per #ifdef und #error beim Compilieren sicherstellen könnte). Die Division wegen dem Modulo-Operator dagegen kann der Compiler nicht selbst wegoptimieren. Der Geschwindigkeitsvorteil ist für den Anwendungsfall hier nicht wichtig, aber für einen universell einsetzbaren Library Code kann das schon sinnvoll sein. Da zählt eher Performance als Lesbarkeit.

Schonmal den C++ STL-Code angesehen? Ist ziemlich schwer lesbar, zumindest für mich, auch wenn ich mich etwas in C++ auskenne, aber die Verwendung der STL-Templates ist einfach und wende ich gerne an, da ich weiß, daß die optimal programmiert sind.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Am 14.08.2013 12:33, schrieb Axel Schwenke:

Die Zeiten ändern sich halt. Ich hab mit PICAL (geschrieben in FORTRAN) auf PIC1650 angefangen, muss jetzt fast 40 Jahre her sein. Als Editor diente eine Lochkartenschreibmaschine und händisches Sortieren.

Gruß Dieter

Reply to
Dieter Wiedmann

Deine Methode ist allerdings nicht "dasselbe" wie die Modulo-Operation. Dafür dürfte Deine Methode statistisch korrekte Ergebnisse liefern (im Sinne von gleichverteilt), was ich bei der Modulo-Variante (für viele Werte von howbig) anzweifeln würde.

Markus

Reply to
Markus Faust

Die am COM-Port erfordert nur geringfügig mehr Hühnerfutter, funktioniert aber auch unter neueren Windows-Versionen problemlos, jedenfalls solange man einen "echten" COM-Port hat und kein USB-Geraffel. Und die Wahrscheinlichkeit für die Verfügbarkeit eines echten COM-Port ist immer noch erstaunlich hoch. Nur bei Consumer-Notebooks kann man praktisch sicher sein, daß keiner mehr verfügbar ist.

Reply to
Heiko Nocon

Heiko Nocon wrote on Wed, 13-08-14 17:02:

Sicher? Mein neuestes Notebook hat, warum auch immer, parallel aber kein seriell. Ich hätte auch das Gegenteil erwartet aber IBM sah es anders.

Reply to
Axel Berger

Bin kein Mathematiker, aber würde mal annehmen, wenn die Zufallszahl von random ohne Parameter statistisch von 0 bis RAND_MAX gleichverteilt ist, dann ist es auch das Ergebnis der Modulo-Operation, oder nicht?

Folgendes Gedankenexperiment: Angenommen random() liefert immer fortlaufende Zahlen: 0, 1, 2, 3, 4... 65535, 0, 1, 2. Jetzt Modulo 5 anwenden liefert dann 0, 1, 2, 3, 4, 0, 1, 2, 3, 4..., also auch wunderbar gleichverteilt.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Meine Gedanken waren wohl woanders :-) Die 0 kommt tatsächlich minimal häufiger vor. Wird schlimmer mit der Gleichverteilung, je größer "howbig" wird.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Echtes parallel oder ein USB-Adapter der intern verbaut wurde?

Gerrit

Reply to
Gerrit Heitsch

Axel Berger schrieb:

Port

Das ist dann so Baujahr 2005, oder? Etwa die Generation T43, R51.

Guido

Reply to
Guido Grohmann

Am 14.08.2013 09:13, schrieb Stefan:

Meine eBay-Nummer war nur wenig teurer, aber Versand aus DE und innerhalb 1-2 Tagen. BTDT.

Bernd

Reply to
Bernd Laengerich

Gerrit Heitsch wrote on Wed, 13-08-14 21:18:

Ich weiß es nicht, aber vermute ersteres.

Guido Grohmann wrote on Wed, 13-08-14 21:22:

Ja, T42.

Reply to
Axel Berger

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.