Inhaltsverzeichnis
- 1 Fragen und Antworten zu RN-Boards (Roboternetz-Boards) und AVR-Grundfragen
- 1.1 Wie werden RN-Boards wie RN-Control, RN-Mega, RNBFRA und ähnlich programmiert?
- 1.2 Wie muß Bascom eingestellt werden damit der ISP-Programmierdongel richtig funktioniert?
- 1.3 Mit welcher Programmiersprache werden die RN-Controllerboards programmiert?
- 1.4 Mein Programm wird nicht übertragen bzw. der Controller wird nicht erkannt! Welche Ursachen kann das haben?
- 1.5 Wie aktiviert man den Quarz beim Mega 16 / Mega 32 ?
- 1.6 Wie sieht ein Grundprogramm in Basic aus, welche Angaben müssen im Code vorhanden sein??
- 1.7 Einige Portleitungen am Port C scheinen nicht zu funktionieren!
- 1.8 Ich bin Basic Neueinsteiger! Wie kommt mein Programm in den Controller?
- 1.9 Board führt RESET aus wenn ich ISP einstecke!
- 1.10 Board arbeitet nicht wenn ich ISP einstecke!
Fragen und Antworten zu RN-Boards (Roboternetz-Boards) und AVR-Grundfragen
Dieser Thread solle 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 rein schaun. Ich fasse hier wichtige Einsteiger-Infos, die in verschiedenen Beiträgen hier im Forum gesagt wurden kurz und knapp zusammen.
Wie werden RN-Boards wie RN-Control, RN-Mega, RNBFRA und ähnlich programmiert?
Die Programmierung erfolgt über ein sogenanntes ISP-Programmierkabel (auch ISP-Dongel genannt). Dieses Kabel wird in eine 10 polige Wannenbuchse (verpolungssicher) in das Baord gesteckt. Das andere Ende wird in den normalen Druckerport des PC´s 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: ISP und Bascom
Wie muß Bascom eingestellt werden damit der ISP-Programmierdongel richtig funktioniert?
Die üblichen Dongels (wie z.B. der von robotikhardware.de) arbeiten alle gleich. Hier sollte im Dialog von Bascom folgende Einstellungen erfolgen:
http://www.roboternetz.de/phpBB2/album_pic.php?pic_id=194.gif
Weiter Infos dazu auch hier Einstellungen unter Bascom
Mit welcher Programmiersprache werden die RN-Controllerboards programmiert?
Bei den meisten RB-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 GCC. Für den schnellen Einstieg aber durchaus auch für professionelle Programme empfehle ich Bascom. Zu dieser Programmiersprache gibt es auch mehrer deutsche Bücher. Siehe auch unter Buchvorstellungen
Mein Programm wird nicht ü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 Kabeln (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 bei RNBFRA kann dies passieren. Dort darauf achten das 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)
- Im About-Window von Bascom nachschaun ob ihr die aktuelle Bascom Version habt. Bei älteren Versionen soll es insbesondere beim Mega 32 zu Problemen mit den Dongels (ISP-Programmieradaptern kommen. Also unbedingt prüfen ob min. die aktuelle Version 1.11.4.7 oder höher installiert ist. Wenn nicht, unbedingt noch runterladen, dann gehts problemlos.
- Es ist schon vorgekommen das ein Quarz diese Fehler verursacht. Tauscht Quarz mal gegen einen anderen aus. Im Test waren einmal bei gleichen Quarz des gleichen Herstellers alle ISP Probleme weg. Und das obwohl beide Quarze im Betrieb funktionierten.
- Prüfe ob in Bascom unter Optionen / Chip / Output auch das Binary File aktiviert ist. Dies ist wichtig da sonst ebenfalls Fehler bei der Übertragung angezeigt wird.
- 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 das andere Programme die Übertragung behindert haben.
- Dongel Kabel überprüfen. Es kommt schwar selten vor das ein Kabel defekt ist, aber es ist auch schonmal vorgekommen das 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 Dongel so montiert sein: http://www.robotikhardware.de/bilder/isp/ispstecker.jpg
- Überprüfe mal ob der Programmcode überhaupt in den Controller paßt. leide rkommt da von Bascom auch keine eindeutige Fehlermeldung, so das man oft lange nach Übertragungsfehler 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 solte dort folgender Satz zu finden sein:
ROMIMAGE : 1FD0 hex -> Will fit into ROM
Ein defekter Dongle oder Board ist wirklich sehr selten. Wenn man die Möglichkeit hat, sollte man durch CoController oder ein anderes Board/Dongel einen Test machen um die Fehlerquelle einzukreisen.
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 da sbei rn-Control so der Fall. Ansonsten kann man den internen 1 Mhz Takt jederzeit mit dem Bascom_compiler 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
Wie sieht ein Grundprogramm in Basic aus, welche Angaben müssen im Code vorhanden sein??
Ein Basic Programm das mit Bascom geschrieben wird, muß 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 Einstieg mit RN-COntrol und Bascom 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 weite rgemacht 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-Steckern kann es duchaus zu einem RESET kommen, insbesondere wenn das Programmierkabel noch nicht im PC steckt. In diesemfall sind einige Leitungen noch nicht auf richtigem Potential so das es zu Störungen kommen kann. Dies ist weg sobald 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 ausgeschaltetet PC kann diese Blockade eintreten. Wenn das richtige Programm geladen wird, zum Beispiel Bascom Compiler wird der Druckerport entsprechend richtig konfiguriert und der Blockade Effekt ist weg, wenn der richtige ISP-Programme in der Bascom konfiguration eingetragen ist. Eine genaue Beschreibung findest du hier ISP und Bascom