-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: AVR ganz hardwarenah programmieren?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Jacob2
    Registriert seit
    26.05.2007
    Ort
    Berlin
    Beiträge
    345

    AVR ganz hardwarenah programmieren?

    Anzeige

    Hi,
    in der Schule programmieren wir einen Zilog Z80, indem wir direkt die Befehle (in diesem Fall hexadez.) hintereinander in den Programmspeicher schreiben (der Prozessor wird dort im Einzelschrittmodus betrieben).

    Ist sowas auch mit einem AVR möglich und wo gibt es dann die Befehle als die direkten Zahlenwerte?

    In dem Befehlssatz, den man hier bei Roboternetz downloaden kann ist zwar jeweils der Opcode angegeben, aber soviel mir Wikipedia sagen kann, ist das nur die Nummer eines Befehles! Wo finde ich diese Befehle?

    Eine weitere Frage ist: Kann man überhaupt direkt auf den Programmspeicher zugreifen, obwohl ein AVR ja sozusagen ein in sich geschlossenes Controllersystem ist? Wenn nicht, gibt es einen ebenso günstigen Mikrocontroller/-prozessor wie die AVRs? max. 1,50€ oder so? Der sollte dann aber so einfach wie möglich aufgebaut sein!

    Bestimmt hat hier jemand schonmal sowas ausprobiert oder weiß was darüber.
    Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Wenn du _noch_ hässlicher als ASM programmieren willst, solltest du dir das AVR 8-Bit Instruction Set noch einmal genauer ansehen (gibts bei Atmel zum Download).
    Dort ist u.a. zu sehen, wie die einzelnen Befehle auf Bytecode-Ebene aufgebaut sind.

    mfG
    Markus

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Also du kannst den Code rein theoretisch auch so schreiben, es gibt eine Befehlsübersicht bei Atmel als PDF, wo auch die Codes bei stehen.
    Den Programmspeicher direkt zuzugreifen ist nicht so einfach, du kannst aber glaube ich mit einem Programmieradapter den Programmspeicher auslesen, von hand manipulieren und zurück schreiben. Direkter geht es nicht, da die wenigsten Atmel über einen externen Programmspeicher/Speicherschnittstelle verfügen, wie du sie an dem Z80 scheinbar hast.
    Naja, und ausserdem finde ich es teilweise fraglich, ob es wirklich sinnvoll ist. auf die Art braucht man viel länger um überhaupt gedanklich alles zu bauen, dann in hexcodes zu übersetzen, dafür gibt es ja die assembler mnemonics. Aber wir haben das auch auch in einer Vorlesung mal so gemacht, das war ein 8051 Kern, und hatte halt nen debugger, der direkt in den Programmspeicher geschrieben hat. Auch die Klausurfrage war an einer Stelle so, dass man den Code in Assembler übersetzten musste. Wenn man dann einmal einen Fehler bei der länge des Befehls gemacht hat, war der Rest zwar noch immer sinnvoll aber halt falsch.

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    Re: AVR ganz hardwarenah programmieren?

    Zitat Zitat von Jacob2
    ... in der Schule programmieren wir einen Zilog Z80 ...
    Juchei - es gibt sie also noch, die guten alten Z80. Und das nicht nur bei mir im Keller.

    Zitat Zitat von Jacob2
    ... programmieren wir einen Zilog Z80, indem wir direkt die Befehle (in diesem Fall hexadez.) hintereinander in den Programmspeicher schreiben ...
    Mal nur so nebenbei: im Schreibunterricht habt ihr noch Tontäfelchen oder sind bei euch schon diese Holzdinger mit Wachsfüllung eingeführt (bei denen man einfach viel besser korrigieren kann als bei Ton) ? ?

    Ok, jetzt im Ernst. Natürlich könntest Du - theoretisch - auch hex schreiben - aber ich kenne leider keinen Editor, mit dem Du das kannst. Schade. ABER: AVRStudio hat etwas ganz feines: es hat einen Assembler, dort könntest Du so etwas ähnliches machen. Aber der Reihe nach.

    Kannst Du bei Dir AVRStudio (mit WINAVR) installieren? Wie ist Deine Rechnerausrüstung?

    Die Befehlsübersicht gibts z.B. hier (für den ATmega48PA/88PA/168PA/328P) - einfach downloaden (klick hier drauf) und auf Seite 427 anfangen. Da siehst Du aber leider nur die Mnemonics und nicht den Opcode in hex.

    Im AVRStudio könntest Du mit diesen Mnemonics so programmieren - wieder klick, dann kommt ein Beispiel eines einfachen Programmes. Die zugehörigen Opcodes siehst Du hier (was wohl - richtig - klicken *ggg*).

    Wenn Du nun ein passendes Programm geschrieben und assembliert hast, dann könntest Du etwas Feines machen: Du kannst den Programmablauf im Simulator (des AVRStudio) laufen lassen - auch im Einzelschritt - und dabei kannst Du Registerveränderungen, Auswirkung von Befehlen - z.B. Sprünge etc. sehen - ohne dass Du einen Mikrocontroller kaufen müsstest. Und AVRStudio gibt es - zusammen mit dem AVRGCC umsonst (na ja - wie heißt es: ausgenommen Verbindungskosten *ggg*).

    Zitat Zitat von Jacob2
    ... Eine weitere Frage ist: Kann man überhaupt direkt auf den Programmspeicher zugreifen ...
    Nein - der Programmspeicher kann nur unter bestimmten Voraussetzungen beschrieben werden. ABER: im Simulator (siehe oben) geht das. Wie gesagt: kostet (fast) nur Mühe.

    Wär das was für Dich?

    Gut - es bliebe noch die Frage nach dem Nutzen. Du könntest mal überlegen ob - und inwieweit - der RISC auch wirklich ein RISC und kein CISC ist. Und wozu ein so ein reduzierter Instruction Set gut sein könnte - das wird Dir vermutlich aus der Z80-Quälerei aber schon geläufig sein.

    Nachtrag: natürlich kannst Du in Hex auch bei At mels programmieren: Notepad öffnen und z.B. dies hier reinschreiben:
    Code:
    :020000020000FC
    :1000000009C031C0189539C01895189518951895DC
    :10001000189518957FE97DBF79E177BBC19A76E0A5
    :1000200076B971E077B973E073BF72E075BF70E4C1
    :100030007BBFF89474B771FD01C011C070E07BBF45
    :1000400045E0C49A4AD054171CF438D061FFFBCF66
    :10005000C49848D070E48AB786FD7ABF7BBF789495
    :100060000000FDCF08950FB729D0603011F00FD0F8
    :1000700002C02ED000C00FBF18951FB7222722BF85
    :100080003395303510F0332753951FBF189570E026
    :100090007BBF45E0C39A882720D0541724F40ED0A4
    :1000A000603011F0FACF80E1C3981CD084FF10D0EB
    :1000B00070E48AB786FD7ABF7BBF0895379A369A77
    :1000C0003699FECF369A3699FECF65B137980895A6
    :1000D00041E0C09A0AD0C0980895552772E079BFD0
    :1000E00078940895772779BF0895F7DF5417F0F3D0
    :0400F000F9DF089597
    :00000001FF
    Dies ist übrigens der Hexfile des oben erwähnten Programms . . . Gut was? DAS könnte man im AVRStudio im Assembler reinladen - und dann durchklickern. Und Fehler über Fehler sehen - es sei denn, das hatte der Assembler schon gemacht als er die Hexdatei erstellt hat.
    Ciao sagt der JoeamBerg

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    30.07.2006
    Ort
    Niederösterreich, nähe Wien
    Alter
    28
    Beiträge
    76
    Hi Jacob2!

    Ich glaub ich weiß worauf du hinauswillst: Ihr fangt gerade erst mit hardwarenaher Programmierung an und das erste was ihr in die Hand bekommen habt ist ein µPf stimmts? *beep* *beep* *beeep*
    Ganz im ernst es tut sich niemand an die Mnemonics tatsächlich händisch in die entsprechenden opcodes zu übersetzten. Als ich noch nicht wusste, dass es Assembler gibt und wir mit dem uPf "gequält" wurden hab ich mit dem Gedanken gespielt mir selbst ein Programm zu schreiben dass mir die Mnemonics übersetzt (einen Assembler halt). Zum Glück haben uns unsere Profs. dann doch gesagt dass es Programme die das tun schon gibt.
    Also lad dir AVR-Studio herunter, such dir ein AVR-Tutorial (im Wiki, auf mikrocontroller.net,...) und arbeite das durch.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Hach, das erinnert mich an die Zeiten, wo wir für den guten, alten Commodore die Hex-Codes aus dem 64er-Magazin abgetippt haben und hinterher suchen mussten, welche Ziffern denn nun falsch waren - denn beim ersten mal ist das nie gelaufen...

    Aber wirklich, ein Programm in Hex-Code schreiben macht heutzutage keinen Sinn. Assembler ist das hardwarenaheste, was geht. Alles andere darunter ist nur eine andere Schreibweise. Wenn Du natürlich wirklich Lust dazu hat, könntest Du anstatt Hex das ganze auch Binär schreiben - aber da wird man wahrscheinlich ziemlich schnell wahnsinnig dran.

    Gruß,
    askazo

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2009
    Beiträge
    22
    Als ich vor 22 Jahren eine Umschulung zum Informationselektroniker machte,
    hatten wir noch auf dem MFA die Befehle mit Schalter eingegeben

    Adresse über Thumbweels auswählen - Daten/Befehl über 8 Schalter eingeben Übernehmen-taste drücken
    Nächste Adresse......

    toll wars doch.

    Infos zum Computer:

    http://209.85.229.132/search?q=cache...&ct=clnk&gl=de

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Ich glaube, da muß ich für die mitlesenden Puristen und solche, die es sein müssen oder noch werden wollen, auf einen typischen Minimalcomputer verweisen. Hier gleich als virtuelle Maschine, aber ziemlich elmentar. Viel Vergüngen!
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von Pedder
    Als ich vor 22 Jahren eine Umschulung zum Informationselektroniker machte,
    hatten wir noch auf dem MFA die Befehle mit Schalter eingegeben

    Adresse über Thumbweels auswählen - Daten/Befehl über 8 Schalter eingeben Übernehmen-taste drücken
    Nächste Adresse......

    toll wars doch.

    Infos zum Computer:

    http://209.85.229.132/search?q=cache...&ct=clnk&gl=de
    Moin moin.

    Ich bin vor ca. 27 Jahren angefangen und da war das nicht anders.
    Ich halte diese "erste" Erfahrung auch heute noch für sehr wichtig!
    Denn genau SO lehrnt Mensch wie so ein Controller (denkt)/arbeitet,
    jedenfalls wenn es sich um eine von Neumann Maschine handelt.

    So hat/bekommt der Programmierer schnell und leidvoll die Strafe
    für Schlamperei und kann keinen Compiler die Schuld geben.

    Wirklich producktiv privat wie Beruflich kann man heute so natürlich nicht
    arbeiten, außer im Hochsicherheitsbereich wo Zeit und Kosten eine
    andere Relevanz besitzen.

    Aber jeder der wirklich ernsthaft Beruflich sein Leben mit Programmieren
    "verschwenden" will, sollte die Schritte binär, Hex, Assembler eine
    gewisse Zeit durchlaufen. Jedenfalls wen erSie letztendlich einmal echt
    ewin guter Profi werden will. Laufen lehrnen fäng ja auch mit Krabnbeln
    an!

    @ askazo Ich weis es nicht mehr, abe es waren etliche tausend Seiten
    abgetippter Hexcode....Immerhin, eine 6 x Torsteuerung Wegbeleuchtung
    Kamerasteuerung u.s.w. läufte seit ca. 24 Jahren 24 h/Tag auf einem
    in assembler programmierten C64. Natürlich mit Ausgabe auf Video.

    Guuute alte Zeiten. ich habe noch einen original neuwertigen
    C64 mit datasette, Floppy und Drucker.. (unverkäuflich).

    Gruß Richard

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von oberallgeier
    Ich glaube, da muß ich für die mitlesenden Puristen und solche, die es sein müssen oder noch werden wollen, auf einen typischen Minimalcomputer verweisen. Hier gleich als virtuelle Maschine, aber ziemlich elmentar. Viel Vergüngen!
    Danke, hat Spass gemacht.

    Gruß Richard

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •