Fragen und Antworten zu RN-Boards (Roboternetz-Boards)
und AVR-Grundfragen


Sieh auch die aktuellere Seite:
https://www.roboternetz.de/wissen/in...oard_FAQ-Seite

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 10polige Wannenbuchse (verpolungssicher) in das Baord gesteckt. Adas 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 da sKabel auch eingesteckt bleiben.

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:

Bild hier  

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 hier https://www.roboternetz.de/phpBB2/viewtopic.php?t=884

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:

1. Stimmen die Einstellungen z.B. in Bascom

Bild hier  

2. 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

3. 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.

4. Kabel mal etwas anders verlegen und Störquellen wie Handy etc. entfernen

5. Einfach prüfen ob auch Spannung am Board anliegt. Simpler Tipp, aber nicht selten wird es vergessen wenn das Board keine LED hat

6. Wackelkontakt in irgendeiner Steckverbindung. Stecker nochmal rein und rausziehen (am Dongle, am PC)

7. 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 Version 1.11.4.7 installiert ist. Wenn nicht, unbedingt noch runterladen, dann gehts problemlos.

8. 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.

9. 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.

10. 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.

11. 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.

12. Ü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 da sBoard fertig bezieht, ist dies oft bereits schon erledigt. 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:


In Pony sieht die Einstellung der Fusebits bei Quarz-Aktivierung so aus:


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 also mindestens so aussehen:

Code:
'###################################
'Grundprogramm für Mega 8 / 16 oder Mega32
'in diesen Kommentarzeilen sollte das Programm
'beschrieben werden
'###################################

'Konfigurationsfile sollte man immer einbinden 
$regfile = "m16def.dat"  'Bei Mega16
' $regfile = "m8def.dat"  'Bei Mega8
' $regfile = "m32def.dat"  'Bei Mega32

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

'Falls I2C Port verwendet wird. Diese Ports sind z.B. beim
'Mega 16/32 zu empfehlen
Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1

' Hier kommen die Variablendeklerationen hin

'Hier kommt Ihr Code hin
Print "**** Mein Programm   V1.xx *****"
' ...

end

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:



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. Also zuerst installierst du Bascom, besorgst dir ein entsprechendes Programmierkabel (auch ISP-Dongel genannt) und stelltst die Optionen wie in den zuvor genannten Antworten ein. Danach drückst du die Taste zum compilieren des Programmes, das sieht wie folgt aus:


Ist das Programm fehlerfrei compiliert, dann rufst du den Programmer-Dialog wie folgt auf:


Nun bist du im Programmiermodus. Hie rbraust du eigentlich nur auf prgrammieren klicken, das notwendige Hexfile wurde automatisch geladen. Also wie folgt klicken:


Das wars! Wenn du einen neuen Controller gekauft hast, dann mußt du eventuell in diesem Programmierdialog noch die Fusebits einstellen. Wie diese einzustellen sind wird in den oberen Antworten schon beschrieben.
Wo man Bascom, passende Bücher und Beispiele findet, steht hier:
https://www.roboternetz.de/phpBB2/vi...hp?p=6314#6314