Guten Morgen, ein mir nahestehender Bekannter bat mich um einen Rat bezüglich einer Programmiersprache die für ihn als Anfänger tauglich ist. Nun bin ich nicht unbedingt der Experte (ich programmiere ausschließlich in asm) was verfügbare Sprachen außerhalb von C betrifft (was er nicht möchte). Bekannt sind mir bascom, mbasic, mikroBasic, pascal und dieses neue luna. Ich möchte ihm helfen und suche nun eine Empfehlung. Aus meiner sicht fällt mbasic und mikroBasic aus dem Raster da z.T. kostenpflichtig. Bascom ist..nunja, ich habe da eine persönliche Abneigung. Bleibt noch pascal und luna. Gibt es andere Alternativen die ich übersehen habe? Ehrhardt
Processing - siehe Arduino-Plattform. Für Einsteiger extrem zu empfehlen glaube ich. Processing ist meinens Wissens an C angelehnt, aber viel einfacher. Siehe http://de.wikipedia.org/wiki/Processing und http://de.wikipedia.org/wiki/Arduino-Plattform Gruß Mario
Es wird doch schon an völlig grafischen Programmiersystemen zB für die arduino-Plattform gearbeitet - modkit, minibloq usw usw...
Hallo Mario, danke für den Tip. Arduino hatte ich jedoch schon in Betracht gezogen das hätte ich natürlich schreiben müssen. Problematisch ist dabei, er möchte gerne irgendwelche kleineren Steuerung für seine Modelle bauen und das auch mit eigenen Schaltungen (was er fachlich kann). Auf dem PC programmiert er auch mit Delphi oder Real Studio oder sowas in der Art und in dieser Richtung wäre sein Wunsch am größten (C ist ihm zu komplex). Die vereinfachte Ausführung von C in Arduino finde ich ebenfalls empfehlenswert. Ich versuche ja immernoch ihn zu überzeugen assembler zu nehmen, so schwer ist das ja nun auch nicht. Ich bin da insgesamt etwas überfragt und will ihm einfach helfen (er ist da etwas speziell), sonst hätte ich diesbezüglich kein Thread dafür gestartet. Gibt es Erfahrungen zu mikroPascal oder luna was ja jeweils dem delphi oder dem real studio recht ähnlich scheint? Ehrhardt
Ui dein Kumpel ist ja schon etwas speziell, das grenzt ja an Lernverweigerung... Er wird sich schon entscheiden müssen was er will. Er wird wohl oder übel etwas Neues lernen müssen. Ich würde doch die einfachste und am schnellsten zum Ziel führende Variante nehmen, und da bietet sich doch Arduino an - für den Einstieg. An die Platform ist doch schnell was drangestrickt und auf steigen auch "richtiges" C kann man immer noch. Meiner Meinung nach kommt kommt man da kaum an C vorbei. Wenn er schon in einer Hochsprache (Delphi/Pascal) programmiert hat wird doch auch der Umstieg nicht so schwer fallen (ich bin auch schonmal von Pascal auf C umgestiegen). Die Syntax ist halt ein bischen anders, aber sonst... Oder er nimmt halt das AVRStudio mit C. Er kann sich ja auch irgendein XMEGA-Modul holen und dann das ASF (Atmel Software Framework) nutzen, dann muß man sich nicht mal mehr um Register scheren...
Gerade als Anfänger würde ich das nehmen, was auch die breite Masse nimmt, da hier der Support (Tutorials, Hilfe bei Problemen, Zuverlässig- keit der Entwicklungstools) am besten ist. Beim AVR sind die Mainstream- Sprachen aber nun einmal nicht luna oder mikroPascal, sondern C, Bascom und Assembler. Luna scheint sich auch noch ziemlich tief im Entwicklungsstadium zu befinden, im Moment funktioniert nicht einmal der Download (ok, bei Interesse müsste man sich eben an den Autor wenden). Dann ist halt noch die Frage, was der Spaß kosten darf. Bei mikroPascal und Bascom sind nur die Demoversionen kostenlos.
Ehrhardt Balstein schrieb: > Bascom ist..nunja, ich habe da eine persönliche > Abneigung. Nun, das ist schade. Ist doch eigentlich recht gut, sowohl für Einsteiger als auch für Fortgeschrittene. Daneben gibt es einige deutschsprachige Foren, die sich damit beschäftigen und Hilfe anbieten können und viele viele Programmbeispiele im Netz. Und man kann sogar prima Assemblercode einfügen.
>ich schrieb: > aber lerne die Hardwarefunktionen !!!! Das ist grundsätzlich das A+O bei jeder Programmiersprache für den µC. Die meisten Probleme enstehen bei den Timern, I/O, Interrupt usw. Ein bisschen rechnen, Schleifen, Vergleiche und Bits setzen kann jede Sprache. Also zuerst das 'Handbuch' des Controllers 'runterladen und anschauen. (Ich finde den Ausdruck Datenblatt ziemlich untertrieben, das klingt immer so nach technischen Daten und weniger nach Anleitung) Ich habe mich mal kurz mit Bascom beschäftigt und finde es eigentlich ziemlich gut - alle Schleifen, Unterprogramme, Funktionen, es kennt alle Registernamen und Bitnamen, die man einzeln setzen kann. Man kann supereinfach Assemblerbefehle reinschreiben und nach ein bisschen Lesen und nach ein paar Minuten konnte ich eine Assemblerfunktion einbinden, die einen Wert aus Bascom übernimmt und einen Wert zurückgibt. Ein Simulator mit allen Registerwerten und I/O ist auch vorhanden. Das Problem mit Bascom ist meiner Meinung nach, dass es Anfängern mit Hilfe vieler 'Hardware'-Befehlen vortäuscht, sie könnten einfach was programmieren, ohne die Hardwarefunktionen zu kennen. Was nützt der tollste 'Config Timer' Befehl, wenn man nicht weiss, ob der Timer 8 oder 16 Bit hat, was die einzelnen Funktionen bewirken, oder ob es den gewählten Timer bei diesem µC überhaupt gibt. So entstehen jede Menge Anfängerprobleme, die dann nerven und schliessendlich auf Bascom zurückgeführt werden. Die Sprache ist relativ egal, für einen Grossteil des Programmes muss man den µC kennen. Ein hinkendes Beispiel: Wenn ich einem Engläder erklären will, wie er einen Ikea Schrank aufbauen soll, nützen mir die besten Englischkenntnisse nichts, wenn ich nicht selbst weiss, wie es geht. herrmueller (der nur Assembler kann und nch ein paar Minuten auch ein bisschen BASCOM)
Ehrhardt Balstein schrieb: > irgendwelche kleineren Steuerung für seine Modelle bauen Also hauptsächlich Bitschupserei, die aber recht genaues Timing erfordert und somit den Umgang mit Timern und Interrupts voraussetzt. Ehrhardt Balstein schrieb: > Ich versuche ja immernoch ihn zu überzeugen assembler zu nehmen, so > schwer ist das ja nun auch nicht. Das wäre der einfachste Weg. ASM ist nunmal eineindeutig. Da macht der Controller exakt das, was man programmiert hat, (fast) ohne jedes Missverständnis. ...
Ja, der gute Mann ist da recht speziell, was solls, was tut man nicht alles für Freunde. arduino habe ich ihm nun vorgeschlagen. Ich denke auch das ist für seinen Einstieg und zum Verständnis die beste Lösung. bascom sagt ihm nicht zu. mikroPascal als kommerzielles Produkt und nur als Demo fand er uninteressant. luna interessierte ihn wegen der Ähnlichkeit zum Real Studio (es war nicht delphi was er nutzt) und der Objektorientierung. Mal sehen für was er sich nun entscheidet, ob arduino oder luna. Der Download funktioniert, da gabs keine Probleme: http://avr.myluna.de/doku.php?id=de:download Aus meiner Sicht ist da Potential und syntaktisch/konzeptionell besser als bascom, auch wenn ich kein Freund von Basic-Dialekten bin. Jedoch habe ich ihm davon abgeraten. Das mag zwar interessant sein, aber wenn sich noch etwas in der Entwicklungsphase befindet und keine Tutorials existieren ist das aus meiner Sicht nur was für Experten. Wenn er das so interessant findet kann er ja immernoch später darauf wechseln wenn er Erfahrungen mit dem arduino gesammelt hat (wenn ihm denn die Ähnlichkeit zum real Studio so wichtig ist). Ich werde ihm also die Empfehlung zu arduino aussprechen. Ehrhardt
Autor: Yalu X. (yalu) (Moderator) Datum: 21.01.2012 21:14 >Gerade als Anfänger würde ich das nehmen, was auch die breite Masse >nimmt, Ja, und Blödzeitung lesen und Jungle-Camp gucken. Wenn Du geschrieben hättest: "Wenn man sich das Leben möglichst einfach machen will, ein eher schlichtes Gemüt hat und keine Herausforderungen sucht...", dann hätte ich vielleicht nichts gesagt. Wobei, dann kann man auch wieder Jungle-Camp gucken, denn ums Geld verdienen ging es hier ja wohl eh nicht. Und zum Thema: Für mich für uC (AVR) eindeutig C, weil Standard, avr-gcc, gute Tutorials, und Buchegger. Und nebenbei etwas Assembler, damit man weiß was der uC so tut. Ja, nicht sehr originell, aber ich wüsste keine ernsthafte Alternative. Für PC gibt es natürlich mehr Abwechslung, etwa Ruby, Vala. Aber auch nicht "was auch die breite Masse nimmt".
Salewski, Stefan schrieb: >>Gerade als Anfänger würde ich das nehmen, was auch die breite Masse >>nimmt, > > Ja, und Blödzeitung lesen und Jungle-Camp gucken. :D Wer weiß, wenn ich Lese- und Fernsehguckanfänger wäre, würde ich das vielleicht sogar tun (kann's leider nicht nachprüfen) ;-) Aber die Begründung, warum Mainstream in diesem Fall Vorteile hat, habe ich ja dazu geschrieben. > Und zum Thema: Für mich für uC (AVR) eindeutig C, weil Standard, Zitat aus Wikipedia: "Ein Standard ist eine vergleichsweise einheitliche oder vereinheitlichte, weithin anerkannte und meist auch angewandte (oder zumindest angestrebte) Art und Weise, etwas herzustellen oder durchzuführen, die sich gegenüber anderen Arten und Weisen durchgesetzt hat." ... also etwas so zu machen, wie es die breite Masse macht, womit sich der Kreis wieder schließt :)
Amforth sollte noch erwähnt werden. Forth ist ziemlich speziell, das muss aber kein Nachteil sein. Infos gibt es unter amforth.sf.net
Ehrhardt Balstein schrieb: > Der Download funktioniert, da gabs keine Probleme: > http://avr.myluna.de/doku.php?id=de:download Bei mir funktioniert er inzwischen auch. Wenn mich mein fotografisches Gedächtnis nicht täuscht, war da vorher noch eine Versionsnummer mit 0.7. Vielleicht bin ich ja zufälligerweise genau in den Update-Prozess geplatzt :) Auf den ersten Blick macht das Ding gar keinen schlechten Eindruck.
moin yalu Yalu X. schrieb: > Bei mir funktioniert er inzwischen auch. Wenn mich mein fotografisches > Gedächtnis nicht täuscht, war da vorher noch eine Versionsnummer mit > 0.7. Vielleicht bin ich ja zufälligerweise genau in den Update-Prozess > geplatzt :) unten steht: de/download.txt · Zuletzt geändert: 21.01.2012 17:05:16 (Externe Bearbeitung) vermutlich wars noch im cache? > Auf den ersten Blick macht das Ding gar keinen schlechten Eindruck. jetzt war ich auch neugierig. was mich natürlich interessiert ist dabei die assembler-listing-ausgabe des compilers. das helloworld:
1 | avr.device = attiny2313 |
2 | avr.clock = 8000000 ' Quarzfrequenz |
3 | avr.stack = 4 ' Bytes Programmstack (Vorgabe: 16) |
4 | |
5 | uart.baud = 19200 ' Baudrate |
6 | uart.Recv.enable ' Senden aktivieren |
7 | uart.Send.enable ' Empfangen aktivieren |
8 | |
9 | print "Hallo Welt" |
10 | |
11 | Do |
12 | Loop |
in der ausgabe des *.s files:
1 | ;lavra compatible assembler source |
2 | ;created by lavrc version 0.8.35 beta |
3 | |
4 | .importClass attiny2313 |
5 | .importObject Macro_Misc |
6 | .importObject Macro_Delay |
7 | |
8 | |
9 | .CSEG |
10 | flash: |
11 | ; ISR VECTORS |
12 | .org 0x0000 |
13 | rjmp _LUNA_MAIN |
14 | .org intVectorSize |
15 | |
16 | _LUNA_MAIN: |
17 | cli |
18 | ldi _RA0,LOW(sramEnd) |
19 | out SPL,_RA0 |
20 | rcall _SRAM_CLEAR |
21 | ldi ZL,low(_fnSP) |
22 | ldi ZH,high(_fnSP) |
23 | ldi _RA0,LOW(fnStack) |
24 | ldi _RA1,HIGH(fnStack) |
25 | st Z+,_RA0 |
26 | st Z,_RA1 |
27 | ;Line 4{ uart . baud =19200 } ----------------------------------------------- |
28 | ldi _RA0,HIGH(25) |
29 | out UBRRHI,_RA0 |
30 | ldi _RA0,LOW(25) |
31 | out UBRRL,_RA0 |
32 | ;Line 5{ uart . recv . enable } --------------------------------------------- |
33 | sbi UCR,4 |
34 | ;Line 6{ uart . send . enable } --------------------------------------------- |
35 | sbi UCR,3 |
36 | ;Line 8{ print _str0 } ------------------------------------------------------ |
37 | ldi _RA0,low(cVar_str0*2) |
38 | ldi _RA1,high(cVar_str0*2) |
39 | rcall _PRINT_STRING_DATA |
40 | rcall _PRINT_CRLF |
41 | ;Line 10{ do } -------------------------------------------------------------- |
42 | _do0: |
43 | ;Line 11{ loop } ------------------------------------------------------------ |
44 | rjmp _do0 |
45 | _do0next: |
46 | |
47 | .importUsedObjects |
48 | ;Line DATA{ } -------------------------------------------------------------- |
49 | _data: |
50 | cVar_str0: |
51 | .db 0x0A,"Hallo Welt",&h00 |
52 | .eseg |
53 | _eeprom: |
sind 162 bytes binary..ist ok. Wies es mit richtigen Programmen aussieht steht natürlich auf einem anderen Blatt. Lobenswert ist die Unterteilung der einzelnen Befehle und der dafür erzeugte asm-code. Es fehlt der "lavra"-Assembler stand-alone, das würde mich mehr reizen. Eine Dokumentation der aus der Datenbank importierten Objekte konnte ich aber nirgends finden. Ehrhardt
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.