Fragen und Antworten zu RN-Boards (Roboternetz-Boards) und AVR-Grundfragen Dieser Artikel soll immer wiederkehrende Fragen zu RN-Boards beantworten und Einsteigern etwas die ersten Schritte erleichtern. Dieser Beitrag wird ständig ergänzt, also ab und zu mal reinschauen. Ich fasse hier wichtige Einsteiger-Infos, die in verschiedenen Beiträgen hier im Forum gesagt wurden, kurz und knapp zusammen.
Inhaltsverzeichnis
- 1 Allgemeine Fragen zu allen RN-Boards
- 1.1 Wie werden RN-Boards wie RN-Control, RN-Mega, RNBFRA und ähnliche programmiert?
- 1.2 Was braucht man für den Start mit einem RN-Board?
- 1.3 Wie muss Bascom eingestellt werden, damit der ISP-Programmierdongle richtig funktioniert?
- 1.4 Mit welcher Programmiersprache werden die RN-Controllerboards programmiert?
- 1.5 Mein Programm wird nicht mit Parallel ISP übertragen bzw. der Controller wird nicht erkannt! Welche Ursachen kann das haben?
- 1.5.1 Stimmen die Einstellungen z.B. in Bascom Einstellungen unter Bascom?
- 1.5.2 Ist ISP-Stecker richtig rum aufgesteckt?
- 1.5.3 Nicht die I2C-Buchse mit der ISP-Buchse verwechseln
- 1.5.4 Kabel mal etwas anders verlegen und Störquellen wie Handy etc. entfernen
- 1.5.5 Einfach prüfen, ob auch Spannung am Board anliegt
- 1.5.6 Wackelkontakt in irgendeiner Steckverbindung
- 1.5.7 Aktuelle Bascom Version?
- 1.5.8 Quarz ok?
- 1.5.9 Binary File eingestellt?
- 1.5.10 Störungen durch andere Programme?
- 1.5.11 Störungen durch Drucker oder Druckertreiber?
- 1.5.12 Im PC Bios Bidirectional auf ECP umstellen
- 1.5.13 Kabel defekt?
- 1.5.14 Programm zu lang?
- 1.6 Wie installiere ich Treiber für den neuen Bascom USB-Programmer?
- 1.7 Fusebits bequem im Quelltext festlegen
- 1.8 Wie sieht ein Grundprogramm in Basic aus, welche Angaben müssen im Code vorhanden sein??
- 1.9 Einige Portleitungen am Port C scheinen nicht zu funktionieren!
- 1.10 Ich bin Basic-Neueinsteiger! Wie kommt mein Programm in den Controller?
- 1.11 Board führt RESET aus, wenn ich ISP einstecke!
- 1.12 Board arbeitet nicht, wenn ich ISP einstecke!
- 2 Spezielle Fragen zu RN-Control
- 3 Fragen zum Board RN-Mega128Funk
- 4 Siehe auch
Allgemeine Fragen zu allen RN-Boards
Wie werden RN-Boards wie RN-Control, RN-Mega, RNBFRA und ähnliche programmiert?
Die Programmierung erfolgt über ein sogenanntes AVR-ISP Programmierkabel (auch ISP-Dongle genannt). Dieses Kabel wird in eine 10-polige Wannenbuchse (verpolungssicher) in das Board gesteckt. Das andere Ende wird in den normalen Druckerport des PCs eingesteckt. Programmiersprachen wie Basic (Bascom-Compiler) können dann per Knopfdruck ein compiliertes Programm direkt in den Chip übertragen. Anschließend kann das Kabel entfernt werden und das Board arbeitet unabhängig das Programm ab. Beim Test kann das Kabel auch eingesteckt bleiben. Hier wird es bei Verwendung von Bascom Basic und RN-Control gezeigt: Bascom - Erstes Programm in den AVR Controller übertragen
Was braucht man für den Start mit einem RN-Board?
Neben dem eigentlichen Board braucht man wie schon zuvor angesprochen ein AVR-ISP Programmierkabel. Da das Selbstbauen kaum billiger ist, ist zu empfehlen, ein solches mitzubestellen. Als zweites braucht man natürlich eine Stromversorgung. Ideal sind Gleichspannungsnetzgeräte, die zwischen 9 und 12V liefern. Man kann hier ein normales Steckernetzteil oder ein komfortables Labornetzteil nehmen. Um etwas Reserve zu haben wäre es gut, wenn das Netzteil einen Strom von mindestens 1 A liefern würde. Alternativ kann man auch Akkupacks oder Batterien nutzen, allerdings mindestens 7,2 V sollten die schon liefern, sicherer sind 8,4-, 9,6- oder 12-V-Akkus.Das wäre eigentlich schon das Wichtigste, um das Board in Betrieb zu nehmen. Allerdings ein RS232 Kabel ist ebenfalls noch sehr empfehlenswert. Dieses erlaubt die Ausgabe von Texten, Variablen auf dem PC. Das ist sehr hilfreich, um ein Programm debuggen zu können. Dazu wird auf dem PC ein Terminalprogramm gestartet und über die RS232 Schnittstelle mit dem PC verbunden. Bei manchen Boards ist sowieso ein RS232 Kabel unerläßlich, wie z.B. RN-Motor, RN-Speak etc. Nützlich ist es überall. Man kann ein solches Kabel selbst bauen oder gleich beim Kauf eines Boardes mitbestellen. Also nochmal die Zusammenfassung für den Einstieg:
- Controllerboard
- AVR-ISP Programmierkabel oder anderer Programmer wie Bascom USBISP-Programmer
- RS-232 Kabel (mit 3 poligem Adapter)
- Netzgerät oder Akku (ideal 9 bis 12V notfalls auch etwas niedriger oder höher, Hauptsache zwischen 7,2 bis 20 V)
- Bascom Compiler Vollversion ist nur nötig, wenn man gleich größere Programme anstrebt, ansonsten reicht das Demo, das genauso wie ein vollwertigerAvr-gcc-Compiler beim Board- oder Platinenkauf sowieso mitgeliefert wird)
- Ein gutes Buch ist immer gut, siehe Buchvorstellungen
Wie muss Bascom eingestellt werden, damit der ISP-Programmierdongle richtig funktioniert?
Die üblichen Dongles (AVR-ISP Programmierkabel wie z.B. von Robotikhardware) arbeiten alle gleich. Hier sollte im Dialog von Bascom folgende Einstellung erfolgen:
http://www.roboternetz.de/phpBB2/album_pic.php?pic_id=194.gif
Weitere Infos dazu auch hier Einstellungen unter Bascom
Mit welcher Programmiersprache werden die RN-Controllerboards programmiert?
Bei den meisten RN-Boards handelt es sich um AVR-Boards. Diese können in Basic, C, Assembler und zum Teil in Pascal programmiert werden. Am beliebtesten ist derzeit der Basic-Compiler Bascom und der C-Compiler Avr-gcc. Für den schnellen Einstieg aber durchaus auch für professionelle Programme empfehle ich Bascom. Zu dieser Programmiersprache gibt es auch mehrere deutschsprachige Bücher. Siehe auch unter Buchvorstellungen
Mein Programm wird nicht mit Parallel ISP übertragen bzw. der Controller wird nicht erkannt! Welche Ursachen kann das haben?
ISP-Kabel sind generell etwas empfindlich gegenüber Störungen. Das ISP-Kabel sollte möglichst nicht andere Kabel (Netzzuleitung usw.) kreuzen. Das kann manchmal auch zu unterschiedlichsten Fehlermeldungen führen.
Generell sollten folgende Dinge geprüft werden:
Stimmen die Einstellungen z.B. in Bascom Einstellungen unter Bascom?
Ist ISP-Stecker richtig rum aufgesteckt?
Bei den meisten Boards, wie auch RN-Control, kann man es nicht falschrum aufstecken. Aber beim RNBFRA-Board kann dies passieren, da dort aus Platzgründen kompatible Stiftleisten statt Wannenstecker genutzt wurden. Dort darauf achten, dass farbliche Markierung zum Boardrand zeigt
Nicht die I2C-Buchse mit der ISP-Buchse verwechseln
Beide haben den gleichen Stecker, also unbedingt auf die Platinenbeschriftung achten. Eine Verwechslung kann Dongle oder Port beschädigen, was dann auch zu Fehlermeldungen führt.
Kabel mal etwas anders verlegen und Störquellen wie Handy etc. entfernen
Einfach prüfen, ob auch Spannung am Board anliegt
Simpler Tipp, aber nicht selten wird es vergessen, wenn das Board keine LED hat :-)
Wackelkontakt in irgendeiner Steckverbindung
Stecker nochmal rein und rausziehen (am Dongle, am PC)
Aktuelle Bascom Version?
Im About-Window von Bascom nachschauen, ob ihr die aktuelle Bascom- Version habt. Bei älteren Versionen soll es insbesondere beim Mega 32 zu Problemen mit den Dongles (AVR-ISP Programmierkabel kommen. Also unbedingt prüfen ob die aktuelle Version installiert ist. Wenn nicht, unbedingt noch runterladen, dann geht's problemlos.
Quarz ok?
Es ist schon vorgekommen, dass ein Quarz diese Fehler verursacht. Tauscht den Quarz mal gegen einen anderen aus. Im Test waren einmal bei gleichem Quarz des gleichen Herstellers alle ISP-Probleme weg. Und das, obwohl beide Quarze im Betrieb funktionierten.
Binary File eingestellt?
Prüfe, ob in Bascom unter Optionen / Chip / Output auch das Binary File aktiviert ist. Dies ist wichtig, da sonst ebenfalls ein Fehler bei der Übertragung angezeigt wird.
Störungen durch andere Programme?
Schalte deinen Rechner mal komplett an und aus und starte, wenn möglich, keine anderen Anwendungen, sondern nur die Übertragungssoftware bzw. Bascom. Es ist schon vorgekommen, dass andere Programme die Übertragung behindert haben.
Störungen durch Drucker oder Druckertreiber?
Auch wenn es selten vorkommt, dennoch wurde schon von einigen Usern berichtet das auch bestimmmte Druckertreiber die ISP-Übertragung stören können. Also wenn alle anderen hier genannten Punkte nicht helfen, dann einfach mal den Druckertreiber deaktivieren oder einen anderen wählen.
Im PC Bios Bidirectional auf ECP umstellen
In sehr seltenen Fällen kann es notwendig sein das im PC Bios die Druckerport Einstellung geändert werden muss. Es hat sich gezeigt das es besser klappen kann wenn im PC-BIOS der Parallelport von bidirectional auf ECP umgestellt wird. Auch die LPT Adresse prüfen. Üblich ist 378, gegebenenfalls in Bascom beim Programmer eine andere eintragen (steht im Bios.
Kabel defekt?
Dongle-Kabel überprüfen. Es kommt zwar selten vor, dass ein Kabel defekt ist, aber es ist auch schonmal vorgekommen, dass ein Stecker nicht korrekt in die Adern geschnitten hat. Also möglichst mit Multimeter/Ohmmeter jeden Kontakt durchmessen. Auch mal benachbarte Kontakte auf Kurzschluss prüfen. Stecker müssen beim RN-ISP Dongle so montiert sein:
http://www.robotikhardware.de/bilder/isp/ispstecker.jpg
Programm zu lang?
Überprüfe mal, ob der Programmcode überhaupt in den Controller passt. Leider kommt da von Bascom auch keine eindeutige Fehlermeldung, so dass man oft lange nach Übertragungsfehlern sucht und in Wirklichkeit nur der Programmcode zu lang ist. Klicke mal auf das Symbol "Show Compile Result". Wenn der Code in den Chip passt, dann sollte dort folgender Satz zu finden sein:
ROMIMAGE : 1FD0 hex -> Will fit into ROM
Ein Defekt an Dongle oder Board ist wirklich sehr selten. Wenn man die Möglichkeit hat, sollte man durch CoController oder ein anderes Board/Dongle einen Test machen, um die Fehlerquelle einzukreisen.
Wie installiere ich Treiber für den neuen Bascom USB-Programmer?
Hierzu findet man auch in der Hilfe von Bascom selbst schon Tipps. Wichtig ist das man nei neuste Bascom version installiert, mindestens die Version 1.11.8.0. Also hier Schritt für Schritt:
- Schritt 1
- Stets die aktuellste Bascom Vollversion oder Demo installieren. Bascom installiert im Unterverzeichnis bereits den aktuellen Treiber für den "Bascom Programmer USB-ISP" mit. (in C:\Programme\MCS Electronics\BASCOM-AVR\usb)
- Schritt 2
- Programmer an USB anschließen / anstecken
- Schritt 3
- Wenn nach Treiberdatei gefragt wird, wählen Sie das Verzeichnis C:\Programme\MCS Electronics\BASCOM-AVR\usb an
- Schritt 4
- In den Bascom-Optionen Programmer wählen Sie "USB-ISP PROGRAMMER"
- Schritt 5
- Fertig - Sie können programmieren. Wenn das zu programmierende Board keine eigene Spannung besitzt, nur dann den Jumper am Programmer zur Stromversorgung des Boards einstecken (max. 100 mA)
Fusebits bequem im Quelltext festlegen
Wie die Einstellung der Fusebits im Dialog erfolgt, wurde ja zuvor schon für eine Boards aufgezeigt. Es gibt jedoch ab der Bascom Version 1.11.8.3 noch eine wesentlich einfachere Möglichkeit. Man nimmt einfach eine Programmzeile mit in den Quellcode auf. Wenn man diese an an den Anfang des Programmes schreibt, so werden beim programmieren (flashen) mit dem Bascom Programmer automatisch die Fusebits korrekt gesetzt. In den Fusebit Dialog muss man dann garnicht mehr wechseln, was für Einsteiger eine enorme Erleichterung ist. Diese neue Methode funktioniert jedoch nicht mit allen Programmern, unterstützt wird es von dem Standard ISP nach unserer Programmer-Bauanleitung und von dem "BASCOM USB ISP-Programmer".
Hier ein paar Beispiele für beliebte RN-Boards:
bei RN-Mega8, RN-Mega8Plus lautet die Zeile:
$prog &B111111 , 255 , &B11011001 , 'Quarz an / Kein Leseschutz
bei RN-Mega2560Modul lautet die Zeile:
$prog , 255 , &B11011001 , 'Quarz an / Taktteiler aus / Jtag aus
bei RN-MiniControl, RN-MotorControl mit Mega168 lautet die Zeile:
$prog &B111111 , 255 , &B11011111 , 'Quarz an / Taktteiler aus
bei RN-Speak, RN-KeyLCD, RN-Motor (falls man eigene Firmware schreibt) lautet die Zeile:
$prog &B111111 , 255 , &B11011001 , 'Quarz an / Kein Leseschutz
Wie sieht ein Grundprogramm in Basic aus, welche Angaben müssen im Code vorhanden sein??
Ein Basic-Programm, das mit Bascom geschrieben wird, muss in jeden Fall als erstes die Taktfrequenz über den Befehl $crystal festlegen, ansonsten funktionieren einige Funktionen nicht korrekt oder garnicht. Da man fast immer auch die RS232-Schnittstelle nutzt, um mit Print Infos auszugeben, sollte man sich angewöhnen auch den $baud Befehl zum Festlegen der Übertragungsrate zu nutzen. Möchte man den I2C-Bus nutzen, so müssen auch diese Ports mit Config definiert werden. Ein einfaches Grundprogramm sollte wie auf Seite Bascom - Erstes Programm in den AVR Controller übertragen beschrieben aussehen
Einige Portleitungen am Port C scheinen nicht zu funktionieren!
Das kann an den Fuse-Bits liegen. Bei der Auslieferung von Controllern ist normalerweise ein sogenanntes JTAG-Interface aktiviert. Dieses Interface wird von professionellen Programmierern mit zusätzlicher Hardware zur Fehlersuche genutzt. Dadurch sind allerdings einige Ports nicht verwendbar. In der Regel sollte man dieses JTAG-Interface deaktivieren, damit wieder alle Ports verfügbar sind. Dies erfolgt über die sogenannten Fusebits (Einstellungsparameter innerhalb des Controllers). Wird der Controller zusammen mit einem Roboternetz-Board erworben, so ist JTAG in den meisten Fällen bereits ausgeschaltet, so das nix weiter gemacht werden muss. Ansonsten kann man dies auch sehr einfach über die Tools PONY oder BASCOM erledigen. Besonders bequem ist es in Bascom. Hier sehen die Einstellungen so aus:
http://www.roboternetz.de/bilder/bascom/bascomquarz550_f.gif
Ich bin Basic-Neueinsteiger! Wie kommt mein Programm in den Controller?
Dies ist mit Bascom-Basic recht einfach, da dieser Compiler ein eingebautes Übertragungsprogramm besitzt. Eine genaue Beschreibung findest du hier ISP und Bascom Wo man Bascom, passende Bücher und Beispiele findet, steht unter Buchvorstellungen
Board führt RESET aus, wenn ich ISP einstecke!
Beim Einstecken des ISP-Steckers kann es durchaus zu einem RESET kommen, insbesondere, wenn das Programmierkabel noch nicht im PC steckt. In diesem Fall sind einige Leitungen noch nicht auf richtigem Potential, so dass es zu Störungen kommen kann. Dies ist weg, sobald das Kabel richtig angeschlossen ist.
Board arbeitet nicht, wenn ich ISP einstecke!
Über das ISP Kabel wird auch die RESET-Leitung gesteuert. Es gibt einige Programme auf dem PC, die diese RESET-Leitung dauerhaft auf LOW schalten, wodurch das Board nicht mehr reagiert. Auch beim ausgeschalteten PC kann diese Blockade eintreten. Wenn das richtige Programm geladen wird, zum Beispiel Bascom Compiler, wird der Druckerport entsprechend richtig konfiguriert und der Blockadeeffekt ist weg, wenn das richtige ISP-Programm in der Bascomkonfiguration eingetragen ist. Eine genaue Beschreibung findest du hier ISP und Bascom
Spezielle Fragen zu RN-Control
RN-Control: Der Spannungswandler wird schön warm, wenn ich Servos anschließe. Ist das normal?
Ja, ein Servo benötigt sehr viel Strom für die Motoren. Der Spannungsregler dürfte bei guter Kühlung (extra Kühlkörper) jedoch durchaus ein bis zwei Servos verkraften. Da ein Servo nicht unbedingt stabilisierte 5V benötigt, sondern durchaus auch mit ca. 4 bis 7V funktioniert, kann man auch einfach die Plusleitung des Servos direkt an das Batteriepack anschließen. Dadurch wird der Spannungsregler umgangen und man kann sogar viel mehr Servos anschließen.
Wie aktiviert man den Quarz beim Mega 16 / Mega 32 ?
Falls man das Board fertig bezieht ist dies bereits erledigt. Auch die Fusebits stimmen dann schon. Zumindest ist das bei rn-Control so der Fall. Ansonsten kann man den internen 1-Mhz-Takt jederzeit mit dem Bascomcompiler oder dem Programm Pony auf die Quarzfrequenz umschalten.
Unter Bascom geht dies so im Programmer-Dialogfenster:
http://www.roboternetz.de/bilder/bascom/bascomquarz550_f.gif
In Pony sieht die Einstellung der Fusebits bei Quarz-Aktivierung so aus:
http://www.roboternetz.de/phpBB2/album_pic.php?pic_id=152.gif
Siehe auch Einstellungen unter Bascom
Fragen zum Board RN-Mega128Funk
Wie muss man Fusebits beim Board RN_Mega128Funk (ATMEGA128) einstellen?
Auch hier muss der Quarz über eine Einstellung aktiviert werden. Gleichzeitig ist zu empfehlen den Kompatiblitätsmodus auf den Mega128 Modus zu stellen und JTAG zu deaktivieren. Um das alles zu ändern sollte man in Bascom Basic die EInstellungen so vornehmen wie Sie im unteren Bild zu sehen sind. In der Doku des Boardes wird´s auch beschrieben.