Einsteig in Microcontroller und Programmierung

Apr 07, 2009 445 Replies

Das Beispiel ist leider ein sinnloses Fragment. Immerhin ist erkennbar, daß der optimierte Objektcode OK ist. SwiftX kann also compilieren und wird daher etwa so schnell wie C sein. Leider ist damit der Interpretervorteil verloren. Zudem ist SwiftX closed Source und kostet Geld. C gibts in professioneller Qualität für umsonst - siehe GCC.

Vollkommen richtig. Wenn compiliert wird ist der Unterschied zwischen Sprachen gering. C ist da traditionell sogar eher schwach wegen Aliasing. Dieser Bug ist zum Glück inzwischen behoben.

Forth ist traditionell Performance-schwach wegen Interpreteransatz. Hat aber auch seine Vorteile. Nur solltest Du darauf nicht zu sehr rumreiten. Mit einem OS in C geschrieben gehts genausogut.

Hab ich eingebaut. Wenn ein Programm auf einen Fehler aufläuft kann eine Shell gestartet werden und dann ists einfach die Hardware, auch IIC, auszulesen und rumzuprobieren. Ich bevorzug aber die harte Methode: Testausgaben einbauen und dann neu übersetzen und starten.

Man kann sich so einiges vorstellen. Bei meinem System ist sowas prinzipiell möglich. Ich seh nicht, daß Forth dazu nötig wäre.

Nö, Dank :). Ich bin mit C ausgesprochen zufrieden. Sorry, Du magst das Zeug halt. Ist wohl Geschmackssache.

[...]

Ok, bisher hatte ich alles noch in C und Assembler hinbekommen. Assembler ist denn schon sehr hardware-nah.

Nein, das war am Lehrstuhl fuer Messtechnik an der RWTH Aachen.

Geht nicht, die Q-Tips werden alle zum Putzen von dicken Relais und so gebraucht.

In San Francisco findet man sicher welche. Da gibt es allerdings ein paar wirklich merkwuerdige Leute.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Forth ohne Datenstrukturen, langsam...

Du hast kaum Ahnung von Forth. Forth hat zB. zwei Interpreter, der Outer-Interpreter ist vergleichbar mit der Kommando-Konsole und läuft praktisch nur, wenn er auf eine Eingabe wartet. Der Inner-Interpreter ist extrem schnell und handelt nur die gefädelten Listen ab.

Für eine geschlossene Anwendung kann man den Outer-Interpreter auch völlig rauswerfen.

Und wenn Du auf Geschwindigkeit rumhackst: Ich habe in den 80ern Utraschall-Prüfanlagen gebaut, die mit >20kHz IR-Folgefrequenz und mit

16/32 Kanälen parallel arbeiteten. Für jeden Schuss wurden 3 Byte verarbeitet. Ach so, die Dinger waren in Forth programmiert (RTX2000 als CPU) Die Anlagen wurden fast 20 Jahre gebaut, der Wettbewerb hat nichts vergleichbares auf die Beine bekommen. Der Nachfolger hat locker 5 Jahre Entwicklung verbraucht und lange nicht richtig funktioniert. Man wollte mit Gewalt C :-)

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Das ist der Zwischencode-Trick. Trotzdem ists interpretiert, auch wenn eine Compilerstufe dabei ist. Reine Interpretation ist dumm weil extrem langsam.

Computer sind immer zu langsam. Wenn die CPU schnell genug sein sollte ist sie zu teuer für den Job. Oder frißt zuviel Energie.

Die Bitzahl ist kein gutes Kriterium für Speed. Der Compiler egalisiert das sowieso. Ein AVR kann das Gleiche wie ein X86-64. Einziger Unterschied ist Speed und Adressraum. Das liegt aber nur zum kleinsten Teil an den "Bits". Hast aber Recht was die "alten Controller" angeht.

8052 und HC11 sind überholt weil verkorkste Architektur.

Ich hatte mich vor langer Zeit da auch aus Spass registriert. Nicht eine Anfrage in Jahren. Eine eigene Web Site bringt da ganz andere Ergebnisse. Manchmal frage ich mich, wovon solche Portale leben (bis auf LinkedIn, die machen wohl einiges richtig).

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

er

en

n wie

ar

Klar doch. was sollen denn die Werkst=E4tten reparieren, wenn 9 Jahre alt= e Autos verschrottet werden? Um den Kaufpreis aufzubringen, wird oft =FCber Kredite finanziert werden m=FCssen. Es gibt doch Autobanken. Die werden dann an den Staat herantreten m=FCssen usw ;-)

--=20 mfg hdw

Latürnich. Wer genug Zeit und Nerven hat kann auf Assembler ausweichen. Man könnte auch C fürs ganze Programm benutzen.

Lustig find ich, daß Du mir unwillentlich recht gibst. Forth *ist* langsam (mit Ausnahme der exotischen Forth-Compiler), weshalb der hilflose Vorschlag kommt man könne ja auch Assembler nehmen.

In Forth wird sogar während der Eingabe compiliert und wenige T-cyclen nach der Eingabe des letzten Zeichens der Definition ist diese bereits kompiliert!

Weils in andere Sprachen praktisch nicht geht und sie kein (lebendes) Dictionary haben, in denen alle Worte verzeichnet sind.

Ich glaube Du verwechselts Forth mit Pascal. Forth hat keinen Zwischencode. Pascal hat zuerst diesen p-code benutzt.

C benutzt IIRC auch einen Zwischencode, einige andere Sprachen ebenfalls, aber Forth braucht den Krampf nicht. Es compiliert direkt ins Target.

Dann gibts auch noch Metacompiler in Forth, die Forth für x-beliebige Targets auf einem Host (meist PC unter Windoof oder Linux) erzeugen. Selbst die benutzen AFAIR keinen Zwischencode.

Ich vermute mal, das SwiftForth zu den schnellsten Systemen gehört. Such mal auf deren Seiten:

formatting link

Die leben seit 1973 mit der Entwicklung von und in Forth.

C in embedded controllern ohne ICE/Debugger? Du bist entweder ein Genie oder ein .....

Seit dem ich Forth einsetze, hab ich nie wieder einen ICE gebraucht, 1 oder 2 mal einen Logikanalysator, weil jemand an der HW rumgefrickelt hat und was verschlimmbesserte.

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Ich bin oft erstaunt, wieviel nicht-technisches Englisch als fester Begriff in europaeische Sprachen wandert. Mein erster sicherheitskritischer Job war in NL und die nannten es auch so, sie sagten mir dafuer gaebe es keinen gescheiten niederlaendischen Ausdruck.

Nachher muss ich was tuerkisches nachsehen. Bei denen scheint selbst die komplette schriftliche (technische) Doku in Englisch zu laufen. Auf den Philippines ist das schon lange so, ein Ingenieur dort sagte mir, sonst koennten sie sich aufgrund der vielen lokalen Sprachen ueberhaupt nicht verstaendigen.

Stimmt. Manchmal sehe ich mir Menues und so an, zu sehen wo das alles eingesetzt wird. Das hat schon Pannen verhindert, so nach dem Motto, was passiert denn, wenn einer am Stromgenerator mal vorschriftswidrigerweise "Gas gibt"? ... "Oh, wir hatten schon einige Male die spektakulaere Abrauche, hmm, war immer auf Inseln, das koennte tatsaechlich die Ursache sein".

Da kenne ich mich nicht mit aus. Nur dass mir bei .NET immer mulmig wird, zuviel Inkompatibilitaet und so.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Datenstrukturen sind zu elementar. Eine selbstgeschriebene Library für jede Datenstruktur ist zuviel Aufwand. Die Sprache sollte sowas unterstützen.

Das sind keine Freiheiten sondern ein Mangel. Man kann Mängel auch als Vorteil sehen weil so eine leichtgewichtige Sprache entsteht. Leider ist Forth als Leicht-Sprache nicht universell genug für komplexe Applikationen. Macht ja nix. Für kleine Programme ists ausreichend.

Seh ich nicht. Wieso sollte es keine optimale Sprache geben? C ist sicher nicht der Weisheit letzter Schluß, aber wenigstens ein Meilenstein auf dem Weg zur ultimativen Sprache. Java könnte der nächste sein. Mal sehen was danach kommt.

Ok, mag sein das Elemente des Protokolls uebriggeblieben sind. Ich meinte jetzt die alten fetten SCSI Schnittstellen.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Gegenueber DSL. Es hat einfach nicht den Aha-Effekt gegenueber Dial-up Modem gebracht und wurde (hier) erwartungsgemaess wenige Jahre nach Einfuehrung abgehaengt. Die meisten Konsumenten definieren "Aha" mit Faktor 10 oder mehr.

1990 war das teurer. Wieviel weiss ich nicht mehr, alles gleich weggeworfen, weil ich mir dachte "Die spinnen wohl".

Hier ist ISDN uebersprungen worden. Firmen sind gleich zu VoIP gegangen (ist manchmal echt aetzend), Privatleute zu Handys. War vorgestern wieder im Grossmarkt, neuen Akkuschrauber besorgen. Mal in der Telephone Aisle nachgesehen. Anzahl der ISDN Artikel: Null.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Wie, bei Euch jetzt auch schon?

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Brauchst Du in Forth nicht, solange Du das Dictionary und den Outer- Interpreter zur Verfügung hast (egal ob im Target oder Host), kannst Du jede beliebige Definition interaktiv starten. Also zB. das Wort (Funktion), die den aktuellen Datensatz irgendeines Chips ausliest. Wegen mir auch das Wort, was 1000 Samples aus eine ADC rauspuhlt und das Minima ermittelt. Und wenn Du das von 397 Samples haben willst, auch kein Problem.

Könnte so aussehen:

1000 ADCmin . ( . = print TOS in der aktuellen Zahlenbasis)

also 1000 Werte soll das Wort ADCmin lesen, das Ergebnis steht dann auf dem Stack und '.' gibt den Wert aus.

Die Rohdate sagt Dir nix, weil Fahrenheit? Und Du nur 197 Werte in Celsius willst?, geht auch

197 ADCmin °F>C . und gibt dann 29 aus. Passt.

Die $100 Speicherstellen ab 0x1200 als HEX anzeigen?

Kein Problem

HEX 100 1200 dump

Wudiwusch flitzen die HEX chars raus...

Örks, Zahlenbasis soll 3 sein?

3 BASE !

$100 $1200 dump und ratz fatz kommt alles trinär raus.

Schnell wieder DECIMAL oder HEX eintippen, sonst verwirrt das.

Ich kann mir nie merken, ob bei der Divison zuerst ob zuerst der Quotient und dann der Remainder rauskommt. Auch egal

23 5 / .s ( .s = print stack )

zeigt es mir an, wenn 4 auf TOS und 3 darunter rauskommt, dann steht der Quotient oben und der Remainder drunter. Weiter im entwickeln oder testen.

Ich kann latürnich auch in der Quelle oder dem Help nachsehen, aber das dauert länger. Vielleicht 5-10 Sekunden lesen... zu langsam!

36 BASE ! ist auch eine nette Variante um Abkupferern das Leben zu vergällen :-)

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Ich bin auch seit längeren bei Gulp registriert und kam erst längere Zeit nichts. Bis ich dann die Vor-Ort Verfügbarkeit auf 100% gestellt hatte und dann nach ein paar Wochen einen guten Auftrag bekommen hatte. Kann aber auch Zufall sein, war auch noch zu Zeiten der IT-Hochkonjunktur, als ich gerade angefangen hatte, als selbständiger zu arbeiten. Mit ein Grund dafür, daß der Kunde sich dann für mich entschieden hat, war wohl auch mein Java-Buch (ISBN 3815813034), da er auch seine Mitarbeiter ausgebildet haben wollte. Hat sogar eine gute Bewertung bei Amazon, wobei man da nie sicher sein kann, ob die nicht vom Verlag stammt :-)

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

Pahh, alles Peanuts.

Wenn Du mal erleben willst, was Druck ist, dann mussu mal in einem KKW arbeiten, was wg. irgendwelchen Gründen (zumeist Revision) abgeschaltet ist. Der Onkel RWE erzählt Dir mal, was jede Stunde verpätetes Einschalten kostet, bloss weil Du immer noch an einem Fehler suchst...

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Das ist falsch, da das eine nicht das andere ausschliesst. Ein Klick auf die Seite mit den Features zeigt, daß das Target beides enthält: Interpreter und Compiler:

formatting link

Stimmt, kostet Geld, aber der Source des Cross-Compilers auf PC-Seite, als auch des gesamten Systems des Targets, wird mit ausgeliefert, wie auch auf der Produktseite zu lesen und bei Forth üblich.

Auch wenn du es noch so oft wiederholst wird diese Aussage nicht richtiger, wie bereits gezeigt. Bei vielen freien Forth-Implementierungen hast du allerdings recht. Allerdings machen die Kosten eines kommerziellen Forth-Systems nur ein Bruchteil der Projektkosten für ein kommerzielles Embedded-Projekt aus, sodaß der Preis keine so große Rolle spielt.

Ich nehme das, was die Aufgabe verlangt und der Kunde will. Habe auch nichts gegen C, Java, Lisp, VHDL usw. :-)

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

Bei WindowsCE ist das kein Problem, da das .NET mit in den Kernel, komplett mit Anwendung, alles in ein Image compiliert wird, was dann über Netzwerk oder USB-Stick geflasht werden kann. Und für Reproduzierbarkeit (da die verschiedenen Visual Studio Versionen und Patches aufzusetzen nicht immer ganz leicht ist), habe ich die Build-Umgebung des Kernels in einer Windows XP VM-Ware Installation laufen (man wills nicht glauben, aber bei Vista gibt's manchmal Probleme mit Visual Studio :-) , die auch komplett mit archiviert werden kann bei Releases.

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

In wieviel Sprachen hast du denn schon programmiert? Schonmal versucht, eine Webanwendung mit XML, SOAP und Datenbankanbindung in C zu programmieren? Oder einen kleinen Microcontroller für eine Echtzeitanwendung in Java? Oder einen FPGA für Echtzeit Multichannel Verarbeitung mit was anderem als VHDL?

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

Das kann ich schlecht, wegen der 10000km :-)

Irgendwie hatte ich frueher in Deutschland das Gefuehl, dass viele Firmen eine Zusammenarbeit ueber Cyber Space nicht so moegen. Weiss nicht wie es heutzutage ist, aber z.B. scheinen die Skandinavier damit kein Problem zu haben. Ich allerdings ein wenig mit der Sprache ...

Schoen! Ein Buch werde ich wohl nicht mehr schreiben, dafuer ist der Analogmarkt inzwischen zu klein.

Na ja, bei mir kommen die meisten Anfragen ueber meine Web Site. Ich versuche es anderen, die teilweise dauernd nach Freiberufler-Jobs suchen und mich um Hilfe bitten, immer zu verklickern wie wichtig eine Web Site ist. Mit gemischtem Erfolg. Oft tun sie dann nichts dran und deren Situation ist nach einem Jahr unveraendert.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required