Grundkurs/Übersicht AVR-Programiersprachen?

Mar 29, 2005 53 Replies

Korrektheit ist nicht nur am Anfang wichtiger als Effizienz, sondern Korrektheit ist der heilige Gral. Mit der Korrektheit fängt alles an. Ein Programm welches irgendwie "effizient" ist, aber nur Müll rechnet, ist wertlos, ja unter Umständen sogar gefährlich.

Über Effizienz kann und soll man auch nachdenken, aber nicht im Sinne von "Soll ich da ein char, oder ein short nehmen?", oder: "Soll ich auf float verzichten und statt dessen zwei longs nehmen?" usw., sondern Effizienz hängt maßgeblich von den gewählten Algorithmen ab.

Der "Algorithmus" umfasst (meiner Meinung nach) bei Mikrocontrollern auch die Art der Hardware und die Anbindung dieser an den Controller für eine bestimmte Aufgabe.

Wie weiter oben, das Beispiel USB in Software auf irgendeinem PIC oder AVR. Natürlich kann man das machen, ist eine nette Spielerei. Aber wenn man USB benötigt, ist es viel vernüftiger, einen Mikrocontroller mit USB-Interface zu verwenden oder einen extern USB-Interface-Baustein anzubinden. Das funktioniert zuverlässiger und bereitet weniger Kopfzerbrechen und man hat Resourcen auf dem Mikrocontroller frei um in einer (naja) Hochsprache wie C zu programmieren.

Hallo Andreas!

Genau das habe ich geschrieben, nicht mehr. Das Hintergrundwissen bekommt man aber nicht durch abtippen von "Hello world" Apllikationen in C/C++/Java.

Das habe ich nie bestritten. Aber wenn du den Unterschied zwischen "Interupt" und "Signal" im AVR-GCC nicht kennst, wirst du auch mit C scheitern.

Im Übrigen ist C mehr oder weniger nur ein komfortabler Makroassembler. "Hochsprache" fängt wohl erst mit objektorientierter Programmierung an?!

Gruß Thorsten

Kunst kommt aber von 'können', nicht von 'kennst du schon den neuesten trick?' Gunther in oecher.computer zum Thema "Gutes Webdesign"

Georg Acher schrieb:

Wieso hast du was gegen "einwandfreies Benehme"? Das etwa wäre die Bedeutung von Korrektheit.

Na ja, universitäsbedingt ist sicher eine gewisse Schlampigkeit überlebensotwendig ;-)

gruss horst-dieter

Genau. Eine mythische Erfindung, der inzwischen alle hinterherhetzen und alles andere völlig aus den Augen verlieren.

Resourcenverschwendung, GHz-Manie und sogar extremste Heissluftproduktion von Professoren, die sich der formalen Verifikation verschrieben haben...

Ein Programm, dass völlig korrekt eine Antwort auf ein 10 Tage alte Problem berechnet, die aber nach 1s da sein hätte sollen, ist auch wertlos. Aber voll krass korrekt, daher kann sicher noch 50% der Auftragssumme einstreichen...

SCNR (auf das Wort Korrektheit reagiere ich universitätsbedingt etwas allergisch...)

Georg Acher, acher@in.tum.de http://wwwbode.in.tum.de/~acher "Oh no, not again !" The bowl of petunias

[X] Du möchtest ganz dringend deine C Kenntnisse auf den neuesten Stand bringen!

Tipp: such mal nach C99 und boolean.

Ach, um zu wissen wie gross die versch. C Datentypen sind muss man natürlich Assembler können??

Bertolt

Das ist ein schlechtes Beispiel. Natürlich nimmt man da einen Controller mit USB. Aber es spielt definitiv eine Rolle, ob ein häufig aufgerufene Interruptroutine 500us oder 3,5ms braucht.

Gruss, Florian

Am 3/29/2005 2:21 AM schrieb Jürgen Hüser:

Geht mir genauso.

Ich bin mit Bascom

formatting link
zufrieden. Gut gefaellt mir, wie LCD, I2C, etc. angesprochen werden. Ist leicht zu verstehen und liefert schnell Ergebnisse. Debugger, LCD-Character-Designer sind im Paket dabei. Der Preis ist mit EUR 69,-- IMHO auch nicht so arg. Programmieren geht inline (in der Schaltung) mit dem SPI-Adapter (Schaltung(en) kann ich Dir bei Bedarf mailen). Wenn die Probleme kniffliger werden kann man beim Bascom-Basic auch Assembler-Routinen einfuegen. Meine Prints mach' ich mit eagle 4.11(voriger Thread). Bei Bedarf kann ich Dir meine Atmel-lib gerne mailen.

hth fritz

Assembler ist schon Hochsprache ;-). Bei der PDP9 musste ich den Bootloader noch als Bitmuster "eintoggeln". Auf diese Stufe will heute niemand mehr zurück, daher Assembler als Sprache zweiter Generation. Da Projekte immer anspruchsvoller und umfangreicher werden und die Prozessoren immer leistungs- fähiger, wird wohl auch Assembler verschwinden. Hochsprachen ist alles darüber, auch Basic, Fortran, Focal und ähnliche Sachen aus der Steinzeit, als es noch nicht mal Strukturen gab. Oo als grossen Durchbruch zu feiern halt ich für übertrieben und C++ ist wohl auch schon vom Aufbau her nicht der optimale Ansatz. Vierte Generation wären dann Sprachen wie Matlab usw., hat angefangen mit APL und dergleichen.

mfg Rolf Bombach

In article , "horst-d.winzler" writes: |> Georg Acher schrieb: |> |> > SCNR (auf das Wort Korrektheit reagiere ich universitätsbedingt etwas |> > allergisch...) |> > |> |> Wieso hast du was gegen "einwandfreies Benehme"? Das etwa wäre |> die Bedeutung von Korrektheit.

An sich gar nichts, ich will ja auch, dass mein Zeug läuft... Das Wort Wort an sich oder der Glauben daran hilft aber nichts, es muss ein Korrektheitsbeweis her. Praktisch ist es nur fast unmöglich, das überhaupt nachzuweisen (ausser für Hello-World), das fängt schon mit der korrekten Spezifikation an (Achtung, Rekursion...). Die muss auch schon überprüft sein, sonst hilft es auch nichts. Viele Probleme lassen nur schwer formal festlegen/beschreiben, den Operator "gesunder Menschenverstand" gibt es da nicht. Und der Forschungsbereich, der sich mit sowas beschäftigt (formale Verifikation), produziert überwiegend eine ganze Menge Papier und für normale Programmentwickler untaugliche oder Praxis-ferne Regeln...

|> Na ja, universitäsbedingt ist sicher eine gewisse Schlampigkeit |> überlebensotwendig ;-)

Lies mal Papers zu formaler Verifikation, dann weisst du, was ich meine. Wenn man das nicht will, hat das noch nichts mit Schlampigkeit zu tun ;-)

Georg Acher, acher@in.tum.de http://wwwbode.in.tum.de/~acher "Oh no, not again !" The bowl of petunias

|> Strukturen gab. Oo als grossen Durchbruch zu feiern halt ich |> für übertrieben und C++ ist wohl auch schon vom Aufbau her |> nicht der optimale Ansatz. Vierte Generation wären dann

Das Problem bei Oo ist, dass es ohne Zusatztools nahezu unmöglich ist, die Funktion zu verstehen. Gerade bei C++, wo Eigenschaften von mehreren Klassen geerbt werden können, blickt man nach ein paar Vererbungshierarchien kaum mehr in fremden Code durch. Da darf man dann bei jeder Methode nachschauen, wo die eigentlich herkommt und was sie macht.

|> Sprachen wie Matlab usw., hat angefangen mit APL und dergleichen.

Hm, Matlab erinnert mich eigentlich eher an Basic :-)

Georg Acher, acher@in.tum.de http://wwwbode.in.tum.de/~acher "Oh no, not again !" The bowl of petunias

Deiner Kennung nach bist du scheinbar Amateurfunker. Die wollen doch immer genau wissen, wie das alles funktioniert. Deshalb wäre die optimale Methode um alles über MCU's zu erfahren Assembler. Da ist man näher an der Hardware. Und man kann laufzeittechnisch das letzte aus einem Controller rausholen. Auch einen DDS oder sonstigen modernen HF chip kann man so schnell mal eben zum Leben bringen.

Wenn man Erfahrung über die Leistungsfähigkeiten und Möglichkeiten eines Controllers sammeln möchte, hilft eigentlich nur Assembler. Da bekommt man schnell ein Gespür was an Ressourcen verbraucht wird, und was performancemaessig geht. Und ein AVR AT90S1200 ohne SRAM tut sich schwer in Hochsprache.

Falls du aber zusätzlich eine Bedienerführung mit LCD oder Ähnlichem programmieren möchtest, solltest du dir auch C oder Basic näher ansehen. An Programmiersprachen und Werkzeugen mitsamt ausgezeichneten Tutorials und Beispielprogrammen gibts ja heutzutage praktisch alles, sogar meist kostenlos. Nur ohne Englisch ists leider schwer...

MIKE

"M.Randelzhofer" schrieb:

Nein, Funkamateur.

Nein, sie wollen *irgendwas* auf diesem Gebiet machen. Manche wollen auch nur 'ne Taste schwingen oder ein paar Stunden am Wochenende mit dem Mikrofon in der Hand verbringen und haben gar keinen Bock, die Technik mehr als notwendig zu verstehen. -- Was sollen die Pauschalurteile?

Quark. Nicht der Assembler, sondern die Begründung. Wäre ungefähr so wie die Lobpreisung der Hand-Morsetaste als einzigen möglichen Weg zum Amateurfunk. (Versteh' mich recht: ich mache Amateurfunk so gut wie nur mit 'ner Handtaste -- aber ich würde das nicht jedem als das allein seligmachende Konzept überhelfen wollen.)

Never try to optimize something before you have profiled it.

Kann man ohne Assembler genauso. Ist typischerweise eine simple SPI oder Parallelausgabe. Für SPI muss man das entsprechende Datenblatt- Kapitel verstanden haben, für Parallelausgabe muss man fast nichts verstanden haben. ;-) (Die Herausforderung bei diesen Dingern dürfte eher im Platinendesign liegen sowie im Design des Antialias-Filters, danach dann für manch einen im Löten.)

Quatsch. Bei mehr als ein paar Kilobyte Programmcode hast du so schnell die Übersicht verloren, dass da kein schwein mehr durchblickt, das Ganze unwartbar geworden ist und es mehr als wahrscheinlich ist, dass es auch noch weniger effektiv als ein ordentliches Hochsprachprogramm ist.

Wenn du nicht glaubst, dass Compiler auch ordentlich optmieren können, kannst du dir z.B. den Thread hier angucken:

formatting link

Diese Optimierung ist *so* clever, dass man selbst als einigermaßen eingefleischter Assemblerprogrammierer erstmal eine Weile drüber nachdenkt, *wie* sie denn ganz genau funktioniert. Du meinst ernsthaft, ein Assembler-Anfänger würde sowas fabrizieren? (Zugegeben, dass ist eher ein meisterhaftes Beispiel, nicht überall ist der GCC so gut wie hier.)

Warum soll man sich den Krampf auch noch antun? Die Mehrkosten für einen ATmega8 gehen in den Versandkostenanteilen der üblichen Verdächtigen locker unter. Eigentlich sollte man wohl eher gleich an

nicht zu unterschätzender Vorteil. Der größte Teil des Aufwands für die Softwareentwicklung geht fürs Debuggen drauf.

Die billigen Controller braucht man in einer Massenfertigung ab 10000 Stück aufwärts, weil dort die eingesparten Cents wirklich den höheren Entwicklungsaufwand rechtfertigen. (Selbst dann gibt es noch Freaks, die den GCC dazu vergewaltigt haben, ihnen den Code für die RAM-losen AVRs zu generieren, da sie den C-Code wartbarer finden und gemeinsam mit ihren Scripts eine gewisse bessere Qualitätssicherung im Sinne von ISO900x haben.)

Der einzige deiner Sätze, dem ich wirklich uneingeschränkt zustimme. Weniger wegen der Möglichkeiten zum Erlernen der Programmierung (da gibt's sicher in Deutsch auch einiges), mehr weil ich das Verständnis des jeweiligen Datenblatts als wesentliche Voraussetzung für eine erfolgreiche Controller-Programmierung empfinde. Und die sind nunmal in Englisch (gottseidank, in Norwegisch wären sie sicher weit weniger verständlich ;-).

cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)
  • Joerg [29.03.2005 03:26]:

Zu Yahoo: Viele solche Foren gibt es auch über news.gmane.org, bzw. man kann sie selber dort eintragen. Solange der Moderator/Gründer nichts dagegen hat, ist dies eine sehr gute Möglichkeit!

Man trägt sich dann bei Yahoo für die Liste ein, damit man auch posten darf, stellt aber das Verschicken von Mails ab. Dann kann man sowohl lesen als auch schreiben über news.gmane.org.

Gruß, Bernhard

Hallo Bernhard,

Lesen tue ich schon mal ueber gmane. Sonst wuerde man ja fast nichts wiederfinden. Doch schreiben hat einen Haken: gmane verlangt eine gueltige und nicht fuer Spammer unkenntlich gemachte Email Adresse. Das geht nicht. Dann wuerde der Werbemuell unertraeglich. Es ist nur eine Frage der Zeit, bis auch dieses Medium von Spambots gepluendert wird und dann will ich nicht dabei sein.

Gruesse, Joerg

formatting link

Joerg schrieb:

Ach, ich habe seit Jahren eine normale email-Adresse in den News. Seit meinem letzten Postfix-Aufpolieren ist das nun gar kein Problem mehr. (Allerdings lehne ich täglich einige 100...10000 Mails bereits im SMTP-Dialog ab jetzt.)

Nö. Usenet ist offenbar schon so weit weg vom Mainstream, dass das fast nicht mehr dafür benutzt wird. Der IQ derjenigen, die Usenet benutzen, ist wahrscheinlich schon zu hoch, um als spam target herhalten zu müssen. Vielleicht ist es den Spam-Trotteln auch zu umständlich, neben ihren Web-Robots noch was anderes zum Einsammeln der Adressen aufzusetzen.

In den wenigen Webforen, in denen ich mitmische, benutze ich eine separate Adresse, da kommt deutlich mehr Spam drüber rein (und wird via ASK in die Tonne gekloppt).

Nö, es gibt keine rechte Ausrede mehr für diesen "removethis" und "notforspam" Krempel in den Adressen, zumindest nicht im Usenet.

Jörg Wunsch "Verwende Perl. Shell will man können, dann aber nicht verwenden." Kristian Köhntopp, de.comp.os.unix.misc

"Joerg Wunsch" schrieb im Newsbeitrag news:d2dlto$2hkp$ snipped-for-privacy@innocence.interface-business.de...

Unglaublich.

Es ist nur eine Frage der Zeit, bis die Spammer eine Mailform haben, die auch durch deine Filter kommt. Ich habe hier immer wieder eine, die so geschickt gemacht ist, das deren Inhalt keine Analyse zulaesst.

Damals, als ich noch genau so dumm war wie du, hatte ich eine gueltige eMail-Adresse in den News, und mir schnell taeglich mehr als 100 Spam-Mails eingefangen, von denen immer ein paar durch den Filter durchkamen. Seit 2 Jahren verwende ih meine eMail nicht mehr, und der Spam ist auf wenige *pro* *Monat* zurueckgegangen.

Ein klarer Beweis, das News von Spammern durchsucht werden, und ein klarer Beweis, das es mehr als bloss dumm, naemlich saubloed ist, in den News eine gueltige Adresse zu hinterlassen, und ein klarer Beweis, das sonstige eMail-Quellen (wie einfaches rumraten oder uralte Listen) gar nicht verwendet werden.

Viel Spass noch mit deinen 10000 Spams / Tag.

Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage: http://www.geocities.com/mwinterhoff/ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/ Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Und was nützt ein Filter der so streng ist dass er neben den 10000 Spams auch die eine echte email mit ausfiltert. Selbst wenn dein Filter so gut ist dass er das (wahrscheinlich) nicht tut, du kannst dir nicht sicher sein. Ich schaue immer alle mails durch, die gmx in den Spamverdacht-Ordner schiebt, zwei oder drei wirkliche mails hab ich da schon rausgeholt.(1)

Ich habe eine Adresse, die antispam.... lautet, aber so wie sie ist ist sie gültig. Anscheinend filtern die Spammer auf solche Adressen, weil über die ist bis jetzt keine einzige Spam reingekommen ;-)

Georg

(1) Das war aber eine andere Geschichte. Wenn jemand ein halbes Duzend Ausrufezeichen im Subject verwendet, ist er eigentlich selbst schuld wenn seine mail vorschnell als Spam eingestuft wird :-)

Die Reply-To Adresse ist reply-fähig ;-)

"MaWin" schrieb:

Siehste, bei mir genau umgekehrt. Ich könnte die News-Adresse immer noch auf eine mit ASK davor umändern (wenn mir dann jemand schreiben will, muss er halt erst eine Rückfrage beantworten), aber aufgrund des geringen Spamaufkommens, das auf meinen in den News benutzten Adressen noch durchkommt habe ich davon bislang abgesehen.

Deine Beobachtung von vor zwei Jahren muss übrigens nichts mehr mit der gegenwärtigen Realität gemein haben. Früher hatte ich in der Tat sehr stark den Eindruck, dass Adressen in den News gesammelt worden sind, während ich das mittlerweile nicht mehr feststellen kann.

Der Spam kommt mittlerweile (zumindest bei mir) vollständig aus anderen Ecken.

Jörg Wunsch "Verwende Perl. Shell will man können, dann aber nicht verwenden." Kristian Köhntopp, de.comp.os.unix.misc

Um nochmals eins draufzusetzen: Nach vielen Jahren 6502 und Z80/180 Assembler, 8080 und PIC-Assembler habe ich diese Verschwendung von Gehirnkapazität aufgegeben:-)) Ich will damit sagen: ein sehr wichtiger Aspekt für die Verwendung von C als Programmiersprache ist die Zukunftssicherheit und Wiederverwendbarkeit. Ich verwende C-Codefragmente für bestimmte Zwecke schon seit Jahren, weil der Algorithmus immer der gleiche ist. Meinen in mühsamer Arbeit erstellten Assemblercode ( Tausende von Codezeilen!) warf ich jedesmal weg beim Hardwarewechsel. C kann ich ggf. sogar auf dem PC unter Windows XP unter Visual.NET oder Linux mit GUI-Debugger entwickeln und auf den AVR portieren ( mit gewissen Einschränkungen !). Performance und Speicherplatz sind für den Normalbastler ( da kann ich mich nur anschließen ) fast kein Thema mehr, die Kostenunterschiede kann man auch vergessen. Ich würde in jeden Fall den WinAVR empfehlen, Prototypboard mit JTAG für ATMega16/32( wg. JTAG) selbst bauen ( Schaltungen dazu gibts en masse im Web ), ein JTAG-ICE gibts dazu für 50?, AVR-Studio ist kostenlos. Das einzige Problem ist wirklich die Sache mit dem Englisch, denn außer den Datenbättern, oder den "avr-freaks" ist m.E. eines der besten Bücher als Einstieg "Embedded C Programming and the Atmel Avr", das ist quasi eine komplette Vorlesung mit Beispielen und Übungen, sehr gut gemacht und gut zu lesen, aber Übersetzung gibts leider keine ..... Gruß Thomas Mundhenke

Jupp, full ACK. Ich hab auch ein nospam in der gültigen Adresse, scheint die Bots mächtig zu verwirren. Ich erhalte ungefähr eine Spam-Mail pro Woche, maximum, ohne jedes Filter. Und die sind üblicherweise "handverlesen", also Nigeriamail oder dergleichen, keine Werbung für was auch immer.

mfg Rolf Bombach

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required