Avise 4







'Avise'  =   AVR Virtual Stack Engine

is a very compact virtual stack engine designed for ATmega RISC microcontrollers. It is programmed postfix style, as a modified version of the "Forth" programming language.

As an essential new feature, in this version fast subroutine threaded code is directly programmed into the microcontroller flash memory. Versions are available now for ATmega8 (reduced command set), ATmega168, ATmega32 and ATmega162.

Das Avise 'Forth System' wird ausführlich zitiert im sehr interessanten Buch von
Horst Hübel: "Schülerversuche mit PC und Mikroprozessor - Wege zum forschenden Lernen", AULIS Verlag Deubner, Köln, 2005

Die Website von Herrn Hübel - "" - bietet neben vertiefenden Ausführungen zum Buch auch die Beschreibung eines Roboter-Projekts mit Schülern sowie Handreichungen zur Quantenmechanik für Physiklehrer.

Das Buch von Herrn Hübel bezieht sich hauptsächlich auf auf die bisher nur privat verteilte Version Avise4, für die es nun endlich gelungen ist, eine Dokumentation zu erstellen. Die älteren, ebenfalls im Buch erwähnten Versionen können aus dem "Museum" als Komplettpakete heruntergeladen werden.

Bei einigen im Buch beschriebenen Experimenten scheint der geringe Speicherplatz für eigene Programme ein Problem zu sein. Als Ersatz für den ATmega8535 sind nun Objektcodes für den ATmega32 verfügbar, der mit mehr Speicher ausgerüstet, aber vollständig pinkompatibel ist. Für zeitkritische Experimente empfiehlt sich vor allem die Version für ATmega168 mit 18,432 MHz Quarz.

ATmega168+ATmega8 board: RS232 and alternative MIDI control interface

Assembled with the MIDI interface, this board offers an attractive possibility to build your own interactive musical instruments or simply to connect sensors and actuators to a MIDI-based authoring system like "MAX" or "PD".

In contrast to similar approaches, 'Avise' does not only contain the runtime system, furthermore it integrates its own ASCII based programmer's frontend, compiler and interactive mini operating system.
ATmega32 board 

From known solutions with comparable hardware outfit ''Avise'' does differ in some way:

  • The programmer's ASCII interface, the "tokenizer", a compact ASCII style symbol table and a mini operating system is fully contained in the program memory of the controller. No frontend PC "tokenizer" program is necessary. Programming is possible from a PC, a Macintosh or from any standard terminal program, too. For optimum handling, we provide 'ATOOL.EXE' a specialized terminal program for Windows.

  • This way, Avise provides an 'open' operating and programming environment.

  • This programming method makes it handy for standalone running programs (like robot control, e.g.) as well as for interactive operations in connection with PC-running programs like Excel or Visual Basic. If an USB-to-Serial adaptor is added, Avise can be easily controlled from legacy-free notebooks and Macintosh computers, too.

  • Data word length of the virtual stack engine is 16 bit. This choice results - even for 8 bit controllers like the ATmega - in high speed, compact code and good accuracy for most control operations. For "rules of three" operations, some special commands with internal 32 bit resolution are provided.

  • User programs can be written in command language with postfix behaviour (very similar to the Forth programming language). So parameter transfer is essentially stack based.

  • Any user defined function can be made automatically starting at power on. Return to interactive control is always possible.

  • Most common I/O operations are conveniently precooked in highlevel commands. But all internal resources (except program memory and interrupt handlers) of the microcontroller are acessible by the user. This way more exotic direct access to the microcontroller resources can be programmed by the user.

  • Simple but efficient debug tools have been added: a simple single step debugger and the "SEE" function. Latter one displays any compiled function in postfix notation as it is executed at runtime.

  • Internally, 'Avise' is completely "hand" programmed in compact but high speed assembler code.

  • The ATmega8L, ATmega168 and the ATmega32L CPU versions are capable of "dual voltage operation" from 2.7 to 5.5 volt dc at 8MHz clock frequency. So, they may be economically powered from 3 battery cells without any loss of energy in voltage regulators. Of course, they can be powered with standard regulated 3.3 or 5 volt supply.

'Avise' Hardware Options:

In this context, two simple proposals for hardware construction are shown. Raw design of printed circuit boards has been chosen due to the fact that most people who are interested to check out the possibilities of microcontrollers dont have the tools to produce sophisticated PCBs. Nevertheless, the software packages are designed to work together with many individual variations of the hardware setup.

'Avise' Firmware Options:

Seven different versions are presented here and are available for download:

  • AV43808.HEX for ATmega8(L)
       -- 8MHz clock (19200 Baud and MIDI)
          (reduced command set due to limited CPU flash)

  • AV431608.HEX for ATmega168
        -- 8MHz clock. (19200 Baud and MIDI)

  • AV431618.HEX for ATmega168
        -- 18.432MHz clock. (19200 and 115200 Baud)

  • AV433208 for ATmega32(L)
        -- 8 MHz clock. (19200 Baud)

  • AV433214.HEX for ATmega32
        -- 14.7456MHz clock. (38400 Baud)
    This version is well usable together with the low-cost "Mega32 prototype board" from ""

  • AV433216 for ATmega32
        -- 16 MHz clock. (38400 Baud)

  • AV436208 for ATmega162
        -- 8 MHz clock. (19200 Baud. No PCB layout published).
           UART0 is the command interface,
           UART1 is free for user: special commands BAUD,RX?,RX,TX

Feedback, error messages und hints for refinement are welcome.

* All information within this text and the related ones is believed to be correct, but published without any warranty and under exclusion of any responsibility
* Trademarks and product names cited in this text and corresponding ones are property of their respective owners.