yController-Frage

  • Nochmal zu deiner Anfangsfrage....


    Ich habe mit diesem Board hier angefangen:
    Klick


    Ging soweit ganz gut, mein Rechner hat noch eine serielle Schnittstelle, die ist leider Pflicht mit dem Board.
    Habe mir aber ein anderes Programmiergerät gegönnt als ich auch mal auf meinem Läppi programmieren wollte weil ich weg war.
    Klick
    Ist ein AVRISP mkII-Klon...bin mit dem Ding sehr zufrieden, ist leider nicht mit dem AVR Studio 5 kompatibel, geht nur mit 4.
    Andererseits ist das AVR-Studio 5 nun auch wieder nicht so toll...sehr überfrachtet und braucht .NET Framework...pfui.
    Dafür brauch ich Ponyprog nicht mehr...und über USB zu programmieren geht viel schneller.:)


    Übrigens programmiere ich auch in Assembler. Es ist zwar ne Quälerei...aber ich find es lohnt sich. C will ich zwar auch mal irgendwann lernen, aber erst wenn ich Assembler kann. Man kann Probleme viel besser lösen, wenn man weiß, wie sie entstehen und du kannst sehr effizienten Code schreiben. Ich finde Assembler echt nicht verkehrt...




    EDIT:
    benkly:


    Wem Assembler zu kompliziert ist kann es ja mal mit Brainfuck probieren...oder Ook!.... :thumbup:

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

    2 Mal editiert, zuletzt von White_Fox ()

  • Übrigens programmiere ich auch in Assembler. Es ist zwar ne Quälerei...

    Versteh' mich nicht falsch, aber manche Probleme haben halt auch nix mit Assembler zu tun, das sind halt einfach so Sachen, an die man nicht denkt, wenn man zu programmieren anfängt...


    Beispiel hier: Wenn Du nen µC-Pin, an dem ein Taster hängt, auf Ausgang stellst, dann kannst Du den Taster halt nicht abfragen, der Port muss auf Eingang.


    Und dabei ist es eben *völlig egal*, ob Du den Port nun mit C, ASM oder Bascom auf Ausgang gestellt hast, falsch ist halt falsch... ;) - also liegt hier die Quälerei nun nicht an Assembler, sondern eher an grundlegenderen Sachen, bzw. halt einfach Flüchtigkeitsfehler, die immer mal passieren können.


    nicht falsch auffassen! - das "wirft" Dir keiner "vor", das ist ja ganz normal am Anfang - nur daran ändert eben auch die benutzte Sprache nix... ;)


    EDIT: wegen dem Programmierer: Der ist ja auch nicht original, da würde ich mir überlegen, entweder noch ein bisschen drauf zu legen und den originalen zu holen, oder nen billigeren kompatiblen, such mal bei ibääh nach "USB ISP Programmer"...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    Einmal editiert, zuletzt von Pesi ()

  • Pesi:


    Doch Pesi...schau mal in dieses Buch:
    Klick
    Da sind fast alle Programme sowohl in Assembler als auch in C geschrieben, und der Code in C ist nicht selten um ein Drittel kürzer als das Assembler-Derivat. Das, was du da meinst, hat nix mit der Sprache zu tun-das meinte ich aber auch nicht.


    Und sicher ist der Programmer nicht original den ich verlinkt habe...aber dafür kann er neben ISP auch TPI und PDI...sofern man die entsprechenden Controller damit mal verwenden möchte. Den originalen mkII schaff ich mir vllt irgendwann mal an wenn ich den brauche...der, den ich hab, tut es aber ganz gut.


    loefel:
    Meinst du mich, wann ich angefangen habe?
    Ich hab eigt mal vor zwei Jahren angefangen mich in dieThematik einzulesen, hab aber immer wieder schnell damit aufgehört zu experimentieren und dann immer mnal wieder zwischendurch angefangen...steck noch tief in den Anfängen, momentan schlag ich mich mit PWM herum und lerne die Timer etwas kennen, demnächst probier ich dann mal ein Display anzusteuern...

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Prima...ich werde darauf zurückkommen bei Gelegenheit...:)


    Werd hier sowieso noch ne Menge fragen haben im Laufe der Zeit... 8o

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Doch Pesi...schau mal in dieses Buch:
    Klick

    Den Satz verstehe ich nicht.. ?( - worauf bezieht sich das "doch"...?!? - im übrigen kann ich da ausser dem Inhaltsverzeichnis nix ansehen... ;)

    Da sind fast alle Programme sowohl in Assembler als auch in C geschrieben, und der Code in C ist nicht selten um ein Drittel kürzer als das Assembler-Derivat.

    Wie meinst Du das...? C-Quelltext um ein Drittel kürzer als ASM-Quelltext...? - das ist ja klar, weil eben C-Befehle dann in mehrere Assembler-Befehle übersetzt werden. Drum ist der C-text natürlich kürzer, wenn Du da da einen Befehl wie X = Array [y] hin schreibst, dann muss er in Assembler nen Pointer laden, Index dazu addieren, Byte aus dem SRAM holen, das sind dann gleich ein paar Zeilen, die aus dem einen Befehl entstanden sind...

    Das, was du da meinst, hat nix mit der Sprache zu tun-das meinte ich aber auch nicht.

    Was meinst Du nun mit "was ich da meine", sorry, ich kann den Zusammenhang nicht herstellen, bezieht sich das auf nen früheren Post...?

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Na..genau das, was du da selber beschrieben hast...das meinte ich. Die Tatsache, dass man in C nur einen Befehl für etwas braucht und in Assembler jeden kleinen Einzelschritt selber machen muß.


    Vllt "Quälerei" war etwas übertrieben von mir.

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Achso, ja das ist natürlich klar!


    aber wie schon gesagt, man muss viele (also eigentlich die meisten) Sachen nicht immer und immer wieder tippen, so wie das oft dargestellt wurde - Beipiel eben die Multiplikation: Entweder hat der µC (ATmega) eh' ne HW-Multiplikation, oder man muss die in SW machen (sind ca. 12 Zeilen).


    man tippt nun *natürlich* nicht *jedes mal* diese 12 Zeilen, wenn man irgendwo ne Multiplikation braucht, sondern man macht das ein Mal, speichert das in ne eigene Datei, die man mit .include einbindet, wenn man überhaupt ne Mutliplikation braucht (sonst natürlich nicht).


    Da steht dann oben drin (für den Fall, dass man's vergessen hat) welche Register benutzt werden (bei mir z.B. temp0 und temp1, Ergebnis in R0 und R1 wie bei der HW-Multiplikation), und wenn man ne Multiplikation braucht, dann lädt man die Operanden in temp0 und temp1, ruft die Routine mit rcall auf, und das Ergebnis ist in R1:R0...


    bestimmte Sachen, die man immer wieder braucht, schüttelt man einfach aus dem Handgelenk, z.B. ne Schleife soll 15x durchlaufen:


    Code
    1. ldi temp0, 15
    2. loop:
    3. (Inhalt der Schleife)
    4. dec temp0
    5. brne loop


    dafür habe ich nun genauso lange gebraucht, wie ich zum tippen von


    Code
    1. for (i=0, i<15, i++) ;
    2. (Inhalt der Schleife)
    3. next i;


    (oder wie man das genau schreibt) brauche... ;)


    Nur so als Beispiel... klar, wenn's über 255 geht, dann sind's 2 Zeilen mehr...


    aber bei so was muss man nicht mehr groß überlegen, wenn man mal Übung hat - anderes, oft gebrauchtes Beispiel: Du speicherst Bytes in nem Array (z.B. empfangene Daten), willst einen Wert an ner bestimmten Stelle rausholen - in Bascom/C wäre das wohl (z.B.):


    temp1 = Array [temp0]


    in Assembler macht man das mit nem Pointer ("Array" ist die RAM-Adresse, ab der die Bytes im RAM liegen):


    Code
    1. ldi ZL, low(Array) ; Pointer laden
    2. ldi ZH, high (Array)
    3. clr temp1
    4. add ZL, temp0 ; Index addieren
    5. adc ZH, temp1 ; in 16 Bit
    6. ld temp1, Z ; Byte holen


    klar, ist mehr zu tippen, aber wenn das öfter vorkommt, macht man halt auch C&P... ;)


    Und wenn Du mehrere Bytes der Reihe nach rausholst, dann musst Du den Pointer nur ein mal setzen, und mit ld temp1, Z+ wird er jedes mal eins erhöht - das braucht man auch recht oft...


    Und da habe ich z.B. Bascom (und auch C) in Verdacht, dass es bei so Konstrukten, Du holst mit ner Schleife ne Reihe Bytes nacheinander aus nem Array, *jedes Mal* wie oben beschrieben den Pointer auf den Index setzt, deswegen dauert das da auch länger und wird mehr Code... ;) - und mehrere solche Sachen...


    ääh, ja, laberlaber, ich bin ja eigentlich gerade beim Programmieren.... :D

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!