====== AVR Raven Board ======
Das AVR Raven Board ist eines der am Besten unterstützen Hardwareboards in
Contiki. Es existiert eine sehr gute Softwareunterstützung speziell für dieses Board.
Das Board besitzt 2 Mikrocontroller die über UART miteinander kommunizieren können:
* **ATmega1284P** auf dieser MCU läuft Contiki und wird die Netzkommunikation abgewickelt
* **ATmega3290P** für die Ansteuerung des Displays, Lautsprecher und der Joystick-Eingabe
Der ATmega3290P muss in der Regel nur einmalig programmiert werden. Nur bei größeren Versionssprüngen in des Contiki-Quellcodes ist eine Neuprogrammierung erforderlich.
Der Quellcode für diese MCU befindet sich in ''/platforms/avr-ravenlcd'' und ist selbst kein Contiki Projekt! \\
Der Code sollte am Besten mit einem einfachen ''make'' übersetzt und dann auf die MCU geflasht werden. Beim Flashen müssen die Fuses gesetzt werden (im Code enthalten), dies ist sonst in der Regel nicht notwendig.\\
Details zum Code und Vorgehen finden sich hier [[https://www.assembla.com/spaces/EmsProjectBuildingAutomation/wiki/AVR_Raven_LCD_sensor_application/history|Link1]] und hier [[https://github.com/contiki-os/contiki/blob/master/platform/avr-ravenlcd/raven3290.c|Link 2]].
Will man jetzt aus einem Contikiprojekt (läuft auf dem ATmega1284P) mit dem Display kommunizieren, so muss im Makefile des Projekts der entsprechende Kommunikationsprozess hinzugefügt werden:
APPS += raven-lcd-interface
# oder, wenn weitere Prozesse aktiv sind (Trennung per Leerzeichen)
APPS += raven-webserver raven-lcd-interface
Im eignen Code muss jetzt noch die entsprechende Header-Datei eingebunden werden und dann kann man z.B. kleinere Textnachrichten direkt auf dem Display ausgeben:
#include "raven-lcd.h"
...
/* Send some text to the LCD */
raven_lcd_show_text("Hello");
...
===== IPv6 Adresse =====
Wenn mehrere Raven-Boards mit der gleichen Source Datei programmiert werden haben alle die gleiche MAC Adresse. Da die IPv6 Adresse direkt aus der MAC Adresse abgeleitet wird kommt es zu Adresskonflikten. Die MAC Adresse wird im EEPROM gespeichert und kann daher ohne erneutes Übersetzen des Projekts geändert werden. Dazu kann ''raven_1284.eep'' modifiziert werden.
Anschließend kann die Datei mit
avrdude -p m1284p -c jtag2 -P usb -U flash:w:raven_1284.hex -U eeprom:w:raven_1284.eep
neu geschrieben werden.
:!: Der Vorgang wird fehlschlagen, weil die Prüfsumme in der Datei nach der Änderung falsch ist.
Avrdude wird aber die korrekte Prüfsumme mitteilen. Diese muss dann in die Datei geschrieben werden und
anschließend kann die Datei erfolgreich geflasht werden.
==== Editieren der EEPROM-Datei ====
Die eep Datei kann man sich mit ''xxd'', ''hexdump'' oder ''od'' anzeigen lassen.
Folgender Link erklärt, wie sich die Datei mit ''vi'' bearbeiten lässt.
http://www.kevssite.com/2009/04/21/using-vi-as-a-hex-editor/