mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Forth für den AVR Atmega


Autor: Matthias Trute (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

auf http://sourceforge.net/projects/amforth bastele ich an einem
kleinen Forthsystem für den Atmega(32) unter der GNU Public License 
(GPL).

Das System wird in Assembler (avra unter Linux und AVR Studio unter
Windows) programmiert und kommuniziert über die serielle Schnittstelle
mit dem Host-Rechner. Es ist kein Cross-Compiler, der PC wird nur
zur Erstellung der Hexfiles benötigt.

Forth-seitig strebe ich ein ANS94 Core mit einigen Extensions an. Dafür
fallen aber auch einige Core-Worte weg, die IMHO auf dem Atmega keinen
Sinn ergeben. Fernziel ist u.a. ein Forth für den Asuro (wenngleich der
Atmega8 etwas zu klein ist) und den ct-bot.

Gegenwärtig (Version 0.2) läuft der Interpreter und der Colon-Compiler.
Neue Worte werden über den self-programming Mechanismus direkt in den
Flash geschrieben. Voller Zugriff auf Flash (i@, i!), EEPROM (e@, e!)
und RAM (@, !, c@, c!) ist gegeben.

Wer Lust hat und sich nicht von einem frühen Entwicklungsstand
abschrecken läßt, kann es ja mal ausprobieren. Ach, Dokumentation
gibt es natürlich auch keine. Die Wortliste erhält man mit dem
Befehl words, was die Worte im Einzelnen machen, steht in jeder
Forth-Beschreibung.

Matthias

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spannende Sache!

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auch erstmal : respekt !

hab mir mal den quellcode angeschaut, bin aber nicht so fit in avr-asm, 
sieht aber witzig aus (erst befehlsnamen, daten, dann programmcode und 
am ende immer ein schöner rjmp DO_NEXT :-))

auch mal direkt eine frage dazu :
wie hast du das mit dem dictonary gemacht wenn du neue befehle 
hinzufügst ? hälst du die keywords im RAM (und den entsprechenden 
forth-code dazu) ?
ich bin im moment am überlegen wie man einen kleinen ByteCode 
interpreter selbst schreiben kann mit dem sich unterschiedlichste 
aufgaben programmieren und ausführen lassen kann. Java ist mir zu dick 
(->NanoVM) und forth kenne ich nicht so gut.

Autor: Matthias Trute (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Colon-Compiler schreibt direkt (via i!) ins Flash. Eine Zelle nach
der anderen. Der Algorithmus in i! führt aber nur dann ein Erase der
betreffenden Page durch, wenn sich ein Bit von 0 nach 1 ändert.

Im RAM liegt nichts vom Dictionary. Dort sind die diversen Buffer
(TIB, HLD etc). Im EEPROM liegen einige Dictionaryvariable, um einen
Reset zu überstehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.