Hallo ich hätte da mal einige Fragen bezüglich Umgang mit AVR´s. Ich habe vor ca 10 Jahren schon mal einige Projekte in Assembler mit AT90S1200 umgesetzt und bin dann zum 8051 gewechselt. Jetzt versuche ich nochmal den Schritt zurück zu AVR: Folgende Fragen stellen sich mir aktuell ich möchte auch Projekte mit ATMEGA und ATINY realisieren nur mein Programmer(unterstützt von AVRProg) zeigt mit nicht alle Prozessoren an mit denen ich arbeiten will. Bei meinen Nachforschungen(mittlerweile 3 Tage im Netz) bin ich auf einen Programmer am Parallelport gestoßen (mit ein paar Widerständen realisiert). Ist der jetzt für alle gängigen AVR`S geeignet oder gibt es da wieder Einschränkungen ? Nächste Frage was ist besser für die Programmierung Assembler oder doch lieber C ? Bei Durchsicht einiger Sourcecodes fällt mir immer wieder eine Art der Wertzuweisung auf die ich irgendwie gar nicht verstehe kann mir jemand das mal erklären // ldi r16, (1<<MUX1) | (1<<ADLAR)// was bedeutet : 1<< MUX1 oder 1<< ADLAR wobei mich MUX1 bzw ADLAR nicht Interrresiert ich weis das es sich hierbei um Register handelt ich verstehe nur nicht die Art der Zuweisung. Hat der Compiler hier die Wahl zwischen Register MUX1 bzw ADLAR ? Kann ich auch einen Wert größer 1 schreiben ? Wofür steht die 1 ? Kann ich auch 1 >> MUX1 schreiben ? Ich hoffe ich bekomme auf meine Fragen konstruktive Antworten auch wenn sich der eine oder andere denken sollte das muss Mann doch wissen !! Ich weis es aktuell nicht und hoffe auf Erleuchtung
> ldi r16, (1<<MUX1) | (1<<ADLAR)
in r16 werden die Bits MUX1 und ADLAR gesetzt.
Genauer:
die 1 wird um die Anzal Bits nach links geschoben, die für MUX1
definiert ist. Dazu wird das Ergebnis (1<<ADLAR) "geodert"
Otto
Wolfgang Hopperdietzel wrote: > Bei meinen Nachforschungen(mittlerweile 3 Tage im Netz) bin ich auf > einen Programmer am Parallelport gestoßen (mit ein paar Widerständen > realisiert). > Ist der jetzt für alle gängigen AVR`S geeignet oder gibt es da wieder > Einschränkungen ? Ist nicht geeignet. Kaufe Dir einen anstaendigen Programmer, z.B. den AVR MKII oder auch ein Projekt wie den USBProg hier im shop. > Nächste Frage was ist besser für die Programmierung Assembler oder doch > lieber C ? Ansichtssache. Aber meiner Meinung nach gibt es keine echten Argumente fuer Assembler auf einem AVR, man kann alles auch mit C in Verbindung mit der standard library machen, und das um einiges komfortabler (war mal Sinn und Zweck der Hochsprache). > Bei Durchsicht einiger Sourcecodes fällt mir immer wieder eine Art der > Wertzuweisung auf die ich irgendwie gar nicht verstehe kann mir jemand > das mal erklären > // ldi r16, (1<<MUX1) | (1<<ADLAR)// Laedt einen immediate Wert in das Register r16, (1 << n) heisst schiebe eins um n Stellen nach links. MUX1, ADLAR sind vordefinierte Zahlenkonstanten (benamte Registerbits), | ist die bitweise logische Veroderung. > Hat der Compiler hier die Wahl zwischen Register > MUX1 bzw ADLAR ? Hier kommt kein Compiler zum Einsatz, das ist eine Assembersprache.
Als programmer kann ich dir meinen ans herz legen ;) http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab Den kannst auch als experimentierplattform benutzen indem du deine eigenen Programme über USB/Bootloader reinspielen kannst zum start brauchst dann nichts weiter. Mit den STK200 proggern (Paralellport+Widerstände) kommst nicht weit die sind sehr langsam und es soll auch schonfter mal vorgekommen sein das man sich damit Controller verfust. Und an allen paralellports soll das wohl auch nicht gehn.
Der USB AVR-Lab sieht ganz gut aus nur wo finde ich die Platine, ich arbeite nur mit einseitig beschichteten Platinen. Kann mir jemand eine Bezugsquelle für den USB AVR-Lab nennen .Als Bausatz oder fertiges Gerät?
noch zum Programm,ich arbeite mit dem AVR Studio 4 kann mir jemand eine gute Quelle bezüglich Beschreibung der Register nennen bin mit dem AT90S1200 doch etwas hinterher. Noch eine andere Frage: wurde der AT90S2313 durch den ATiny2313 ersetzt?
Ich bekomme immer Tränen in die Augen wenn jemand nach Programmern fragt ohne sich über das Debuggen Gedanken zu machen. Assembler? Wenn man als Anfänger Assembler macht verbringt man 90 Prozent der Zeit mit rein formalem Nachdenken über Registernutzung und solcherart Unwichtigkeiten. Assembler ist was für extreme Spezialfälle oder Masochisten. Vertrödle nicht die Zeit mit ATinys und dem frustrierenden Nachdenken über Speicherplatz. ATmega168 ist das Minimum. Ein großer ATmega ist kein Stück komplizierter als ein ATiny.
> Assembler? Wenn man als Anfänger Assembler macht verbringt man 90 > Prozent der Zeit mit rein formalem Nachdenken über Registernutzung und > solcherart Unwichtigkeiten. Stimmt, Grundlagenwissen zu erlangen frisst nur unnötige Zeit. Das Studium der Datenblätter (die gibts übrigens i.d.R. von der Website des Herstellers) ist dann sicher genauso unnütz, schließlich gibt es für alles schon eine Lib und notfalls kann man es aus Tutorials und Opensource-Anwendungen zusammen kopieren, oder?
>Assembler? Wenn man als Anfänger Assembler macht verbringt man 90 >Prozent der Zeit mit rein formalem Nachdenken über Registernutzung und >solcherart Unwichtigkeiten. >Assembler ist was für extreme Spezialfälle oder Masochisten. Selten so einen Quatsch gelesen.
>Der USB AVR-Lab sieht ganz gut aus nur wo finde ich die Platine, ich >arbeite nur mit einseitig beschichteten Platinen. Kann mir jemand eine >Bezugsquelle für den USB AVR-Lab nennen .Als Bausatz oder fertiges >Gerät? http://www.ullihome.de/index.php/USBAVR-ISP/de#Beschaffung
Ich mache den Job seit über 30 Jahren und deshalb ist meine Ausführung über Assembler ganz bestimmt kein Quatsch. Ich will mich aber nicht weiter Streiten. Es tut mir nur weh zu sehen wie so viele Leute einen mühevollen, wenig produktiven, Weg einschlagen.
>Ich mache den Job seit über 30 Jahren und deshalb ist meine Ausführung >über Assembler ganz bestimmt kein Quatsch. Ist es auch nicht. >Ich will mich aber nicht weiter Streiten. Es tut mir nur weh zu sehen >wie so viele Leute einen mühevollen, wenig produktiven, Weg einschlagen. Also ich programmiere die AVR (fast) nur in C. Wenns brennt MUSS man auch mal ins ASM Listing schauen. Da führt kein Weg drum rum. Ein bißchen ASM sollte man können. Angefangen habe ich damit auch mal auf Z80. Geschadet hat es auf keinen Fall. Ganz im Gegenteil. Nur so versteht man die Maschine.
Wolfgang Hopperdietzel wrote: > AVR´s. Was fuer'n Ding? Was macht der Akzent da ueber dem Leerzeichen? Merke: der AVR (Nominativ singular) die AVRs (Nominativ plural) des AVRs (Genitiv singular, immer noch ohne ', und erst recht ohne ´) der AVRs (Genitiv plural, immer noch ohne ', und erst recht ohne ´) . . .
Hi >Vertrödle nicht die Zeit mit ATinys und dem frustrierenden Nachdenken >über Speicherplatz. ATmega168 ist das Minimum. Ein großer ATmega ist >kein Stück komplizierter als ein ATiny. Dein Chef freut sich bestimmt, wenn du u.U. 90% seines Geldes zum Fenster herauswirfst. >Ich mache den Job seit über 30 Jahren und deshalb ist meine Ausführung >über Assembler ganz bestimmt kein Quatsch. Ich Programmiere schon ähnlich lange. Und ich habe selbst bei PC-Programmen schon mehrfach Situationen gehabt, bei der alles andere als Assembler Quatsch gewesen wäre. MfG Spess
Wolfgang Hopperdietzel wrote: > Danke für den kurzen Deutschkurs,ich unterscheide halt AVR´s und 8051ér > wie schreibst du ?? Ernsthaft? Oder trollst Du jetzt? Wann will ich dich mal aufklaeren: Es gibt keinen Plural-Apostroph. Es heisst "AVRs", und niemals "AVR's" oder "AVR´s". Gruesse, Olli
@xenusion: Offensichtlich hast du nichts zum Thema zu sagen, dann lass es besser auch bleiben.
Da Pep wrote: > @xenusion: Offensichtlich hast du nichts zum Thema zu sagen, dann lass > es besser auch bleiben. Offensichtlich gilt das eher fuer dich, immerhin ist das dein erster Post in diesem Fred. Wie war das mit dem Glashaus? Gegen die schleichende Apostrophverdummung muss man aber einfach vorgehen.
tja, in der Tat völliger Blödsinn, immer gleich den grössten verfügbaren Typ zu nehmen. Wenn das alle Entwickler wüssten, müssten die Hersteller auch nicht mehr so viele verschiedene Typen entwickeln und Herstellen. Oder machen die das nur für die Bastler? Es geht immer darum, den passenden Typ zu finden. Das kann bei kleinen Serien durchaus ein überdimensionierter sein, da man dann die Software u.U. schneller fertig hat, Platz für noch nicht absehbare Erweiterungen hat und sich weniger Gedanken machen muss. Aber das Kriterium bleiben die Gesamtkosten. Und wenn es dann um 100.000er Produktionszahlen geht, zählt jeder Cent. Entwicklungskosten relativieren sich. Da lohnt es sich, die Software so zu optimieren, dass der nächstkleinere Typ auch noch eingesetzt werden kann. Aber wem erzähl ich das? Bist ja 30 Jahre im Geschäft... Beamter??
Leute, packt die Haar-Axt wieder ein! Hier geht es um einen Hobbybastler und nicht um Serienfertigung...
spess53 wrote: > Ich Programmiere schon ähnlich lange. Und ich habe selbst bei > PC-Programmen schon mehrfach Situationen gehabt, bei der alles andere > als Assembler Quatsch gewesen wäre. > > MfG Spess Lass mich raten: Ein 8088 unter DOS 2.0?
Hi
>Lass mich raten: Ein 8088 unter DOS 2.0?
Ne. Mein erstes PC-Programm (natürlich in Assembler) war auf einem 286er
unter DOS 3.xx. Unter Windows habe ich mir das etwas abgewöhnt. Aber
wenns mal ums 'Bitschubsen' geht, gibt es auch da nichts besseres.
Was hier igendwie viele nicht wahrhaben wollen: Viele Compiler-Librarys
sind in etlichen Teilen in Assembler geschrieben. Und wer die Arbeit von
Assemblerprogrammierern nutzt, aber gleichzeitig die Berechtigung dieser
Programmierung bestreitet, dessen Meinung ist für mich nicht sonderlich
relevant.
MfG Spess
AVR-Controller gehören in ASM programmiert. Punkt. C und Basic sind was für Weicheier, die nicht programmieren können und das Denken anderen Überlassen. ;-)
Im BWLer ;) Deutsch gilt nunmal: TimeToMarket != Assembler. Das sind dann meist Leute die ein extrem preisgünstige Lösung für einen RS485-Slave der nur eine Temperatur ausliest oder ein paar LEDs schaltet mit Linux laufen lassen wollen. ;) [Zynismus] Sollen sich doch die Chinesen mit dem fitzel-Assemblerkram und den seltsamen 8-Pinnern rumschlagen, die haben auch die Stückzahlen für... [/Zynismus]
Die chinesen müssen sich wohl nur mit Assembler rumschlagen, wenn alle westlichen Programmierer auf einmal nur noch in Assembler schreiben würden oO
Bei Produkten mit Stückzahl >100000 kann ich Assembler verstehen. Aber nur dann wenn dieses Produkt voraussichtlich nie wieder angefasst und erweitert wird. Erwartet man spätere Produktpflege und Firmwareanpassung so kann Assembler tödlich sein. Meist ist Assemblerkode, und das liegt in der Natur der Sache, so kryptisch geschrieben, dass nur ein Mitarbeiter ihn versteht. Soll etwas erweitert werden, und dieser Mitarbeiter ist nicht mehr da, so muss die Sache komplett neu geschrieben werden. Das habe ich nicht nur einmal erlebt.
Jap, hab ich auch schon erlebt. Allerdings muss Assembler nicht schwerer wartbar sein als ein C-Programm. Ein oder zwei Kilobyte Code (also die Größe wo Assenbler noch sinnvoll ist) können, wenn sie gut dokumentiert und strukturiert sind schon noch gelesen und auch erweitert werden. Habe da selber schon einige Erweiterungen Assembler-Code von anderen Entwicklern durchgeführt. Hundert Zeilen schlechter C-Code können wesentlich schwieriger erweiterbar sein als 500 Zeilen guter Assemblercode ;)
Halli Hallo, Ich wollte dir nurmal kurz sagen das nicht: #define DACOUT P1OUT #define DACIN P1IN schreiben darfst, sondern: #define analImplements P1OUT #define DACIN P1IN Okay alles liebe euer Engli küsschen :*
Ist es nicht sinnvoller, gleich AVRs zu nehmen mit integrierter USB-Schnittstelle (AT90USBxxx, AtmegaxxU4) ? Dann braucht man kein Programmiergerät mehr und hat zusätzlich die Möglichkeit, Daten mit dem PC auszutauschen ? Und wie einfach ist der Datenaustausch über diese integrierte USB-Schnittstelle in Bascom ?
Ich muß zugeben, daß ich C erst so richtig verstanden habe, nachdem ich aufm 8051 von Assembler auf C umgestiegen bin. Insbesondere alles mit Pointern, Array und Strings usw. Ich hab dann einfach immer ins Assemblerlisting geschaut, ob der Compiler auch das gemacht hat, was ich wollte. Damit lernt man dann sehr schnell, wie man was hinzuschreiben hat. Und man lernt auch, was dem Compiler Kofpschmerzen bereitet, d.h. große Codemonster produziert und was er effizient umsetzen kann. Natürlich kann jetzt ein nur-C-Programmierer sagen, Effizienz ist mir wurscht, ich nehme eh den MC mit dem größten Flash. Aber Effizienz bedeutet ja nicht nur geringe Codegröße, sondern auch mehr Geschwindigkeit. D.h. ich kann so effizient in C programmieren, daß oft ein 8Bit-MC schneller und besser die gleiche Aufgabe erledigt, wie ein nur-C-Programmierer auf nem 32Bit-Boliden. Daher haben die Assemblerkenntnisse doch ne ganze Menge Vorteile für mich. Der Grund, auf C umzusteigen war auch, daß ich bei nem Projekt ab etwa 8kB den Überblick verloren habe (die halb angefangene Leiche liegt noch irgendwo auf der Festplatte). Assembler macht nur bis etwa 1..2kB Spaß, darüber ist C sinnvoll. Also fange ruhig erst mit Assembler an, es ist keine rausgeschmissene Zeit, sondern ne gute Investition in ein schnelleres und besseres Lernen von C. Peter
Hallo Peter ich muss dir recht geben meiner Meinung nach ist es nie verkehrt sich mit Assembler auseinander zu setzem da ich hier mit wenig Zeilen viel ausrichten kann .C war mit bisher immer suspekt. Ich programmiere lieber in Pascal oder Delphi aber leider Hat sich C als Mutter aller Programmsprachen nun auch bei Micros durchgesetzt.Ich werde mich wohl wie du, durch Vergleich Assembler zu C an C herantasten müssen. Als dann besten Dank an alle für die schnelle und konstruktive Beantwortung meiner Fragen ( Abgesehen vom Deutschkurs nicht jeder ist Einstein) Wolfgang
Ich habs mit meinem Projekt in ASM Pur auf >30kb geschaft, inzwischen macht es auch keinen Spass mehr. Als ich mit AVR Anfing und hier im Forum fragte ob C oder ASM für den Einstieg besser wäre, riet man mir zu ASM. Und ich habe meine lange ASM Zeit nicht im geringsten bereut. Meiner Meinung nach war sie äußerst förderlich, weil sie mein Denken auf der Maschinennahen Ebene konditioniert hat. Wenn man aus der C/C++ oder Java für x86 Ecke kommt muss man sich selten Gedanken machen wieviel Bytes geschweige denn Clockcycles der Compiler hinterher daraus macht. C hat mich lange abgeschreckt, einmal wegen der umständlicheren gcc Umgebung, und zweitens der notwendigen Einarbeitung in die Eigenheiten der Verheiratung von C mit 8bit Micros, und drittens wegen aus meiner ASM Zeit stammenden gesunden Misstrauens meine knappen Resourcen dem Compiler zu überlassen. Deshalb würde ich jedem Einsteiger der nicht schon sowieso sehr fit in C ist auch wieder empfehlen zuerst mit ASM zur Einarbeitung anzufangen, da man viel schneller zu Ergebnissen kommt. ASM ist wesentlich simpler, direkter und daher leichter zu erlernen als C, inklusive des Aufsetzens der Entwicklungsumgebung. Auch schult sie das Denken zurück auf die prozedurale Ebene (und trennt sich von objekt-orientierten Denkweisen falls man von C++/Java kommt), und schärft den Blick für knappe Resourcen wie Stack, RAM, Interruptlatenz. Allerdings sollte man das auch nur als Einarbeitung verstehen, und nicht den Fehler wie ich begehen dann aus bequemlichkeit auch bei größeren Projekten bei ASM zu bleiben. Wenn man klein Anfängt, das Projekt aber ungeahnte Ausmaße annimmt, wird man sich dann nicht mehr neu in C Einarbeiten und anschließend das bestehende Programm in C neuschreiben können. Nachdem man die erste ASM SPielerei in Silikon gegossen hat sollte man sich für das nächst größere Vorhaben daher unbedingt mit C und GCC anfreunden, auch wenn man sich inzwischen in ASM wohlfühlt. Wenn ich mich jetzt in C befasse wird das erste sein mir das vom Compiler stammende ASM-Listing sehr kritisch anzusehen, mich schauderts immer noch beim Gedanken nicht jeden Clock-Cycle im Griff zu haben.
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.