Mini Controllerboard mit Atmel ATmega2560 und USB

Dieses Board wurde für semiprofessionelle Bastler und professionelle Entwickler konzipiert die bereits Erfahrungen mit AVR-Controllern haben und eine Mikrocontroller suchen, der einen geringen Energiebedarf hat, aber dennoch sehr viele Ports und Resourcen bietet.
Dieses Modul nutzt den leistungsstarken Mikrocontroller ATMega2560. Er dürfte derzeit ohne Frage einer der leistungsfähigsten 8 Bit AVR Controller überhaupt sein. Der Controller ist quasi genauso einfach zu programmieren wie ein Atmega 328 oder ATMega 644, bietet aber weitaus mehr programmierbare Ports. Daher stellt das Board eine interessante Alternative zu einigen Arduino Boards oder unserem RN-Control dar. 

Ein Umstieg von einem der genannten Controllerboards oder AVRs ist demnach problemlos, Programme die in einer Hochsprachen wie Basic  oder C geschrieben wurden, müssen kaum verändert werden.

Dieses Modul stellt nahezu alle 100 Pin´s dieses leistungsstarken Controllers über zwei Standardbuchsen (zwei mal 2×25 Buchsen=100 Pin) bereit. Der Kontaktabstand beträgt 2,54 mm, so das dieses Modul bequem in eigene Boards oder auf Lochrasterplatinen gesteckt werden kann, sogar manche Lochrasterplatinen sind passend.

Das Modul beinhaltet bereits einen RS232 Pegelwandler als auch einen USB-Baustein (Chip CP2101). Es kann somit direkt an die RS232 oder an den USB-Anschluss eines PCs angeschlossen werden, wahlweise auch beides gleichzeitig.
Ein ISP-Programmieranschluss ist bereits als 10 polige Standardbuchse (RN-Definition) auf dem Board. Eine Signal – Leuchtdiode und Stromsparfunktion wurde ebenfalls integriert.
Trotz all dieser Features, ist dieses Modul mit 63x43mm unglaublich klein, leicht und flach. Erreicht wurde dies durch modernste SMD-Bauteile.

Features des ATMega2560 Boards

Bauanleitung Mini Controllerboard mit Atmel ATmega2560 und USBAls hier die Leistungsmerkmale des Controllers und Moduls auf einen Blick:

  • Leistungsstarker Controller ATMega2560 (einer der wohl leistungsfähigsten 8 Bit AVR-Controller überhaupt), 100 Pins am Gehäuse,
  • 256.000 Bytes Flash Speicher
  • 8000 Byte RAM
  • 4000 Bytes EEPROM
  • RAM erweiterbar auf 64K
  • zwei 8 Bit Timer
  • vier 16 Bit Timer
  • vier 8 Bit PWM Kanäle
  • zwölf PWM Kanäle (programmierbar 2 bis 16 Bit)
  • 16 analoge Eingänge (Spannungsmessung)
  • 86 programmierbare I/O Leitungen
  • vier TTL UARTS (RX/TX) – 2 frei, einer für USB, einer für RS232)
  • RS232 Anschluss (PC-Pegel) PC kann direkt über das übliche dreipolige RS232 Kabel angeschlossen werden.
  • RS232 – Treiber auf dem Board schaltet automatisch in Stromsparmodus wenn keine Daten übertragen werden – aktiviert sich auch wieder bei Datenübertragung. Manuell kann RS232 Treiber auch ganz deaktiviert werden.
  • USB–Anschluss (Standard USB-Kabel mit MiniUSB-Stecker passt sofort).
  • ISP-Programmieranschluss – Standard Programmieradapter passen sofort.
  • I2C-Bus über Stiftleiste herausgeführt (zum Anschluss zahlreicher Erweiterungen, Sensoren etc.)
  • SPI-Bus über Stiftleiste herausgeführt
  • 16 Mhz Quarz auf dem Board integriert
  • Uhrenquarz ebenfalls auf dem Board integriert (für Echtzeituhr)
  • eine programmierbare Leuchtdiode
  • fast alle Portleitungen werden über die Stiftleisten herausgeführt
  • zwei Stiftleisten mit jeweils 2×25 Pin und 2 passende Buchsenleisten im Lieferumfang. Dadurch kann das Board bequem in eigene Schaltungen oder auf Experimentierplatinen / Lochraster gesteckt werden.
  • Betriebsspannung stabilisierte 5 V (nur ganz geringe Stromaufnahme von wenigen mA)
  • Sehr kompakt durch moderne Bauteile (nur ca. 43 x 63mm und nur 9mm hoch)
  • Programmierbar in zahlreichen Sprachen, z.B. Basic (BASCOM Compiler, C (C-Compiler GCC wird mitgeliefert), Assembler, Pascal, AVR-Studio
  • Eagle – Platinenlayout für eigene Veränderungen frei zum Download
  • Starter- oder Applicationsboard nicht unbedingt notwendig

 

Pinbelegung des ATMega2560 Boards

ISP

ISP – IN SYSTEM PROGRAMMING
Über diesen Anschluss kann der Controller auf dem Board mit einem Standard ISP-Kabel programmiert werden. Die Belegung des ISP-Anschlusses ist zu dem weit verbreitetet STK200 Programmier Dongle kompatibel.

Pin 1 MOSI
Pin 2 VCC
Pin 3 Nicht belegt
Pin 4 GND
Pin 5 RESET
Pin 6 GND
Pin 7 SCK
Pin 8 GND
Pin 9 MISO
Pin 10 GND

 

USB

USB-Anschluss für PC
Über ein Standard USB-Kabel mit Mini-USB Stecker kann das Board mit dem PC verbunden werden. Bevor die Kabel eingesteckt werden, muss bei einigen Windows Versionen ein Treiber installiert werden.

Anschließend steht beim PC ein weiterer virtuelller COM-Port zur Verfügung, bei dem ganz einfach Daten mit dem Controllerboard ausgetauscht werden können, ähnlich wie bei einer RS232 Verbindung. Jedes Terminalprogramm wäre dafür geeignet.

Wird ein Bootloader installiert, so kann das Board auch über USB programmiert werden

RS232

PC kompatible RS232 Schnittstelle
Über ein Adapterkabel kann die serielle Schnittstelle des PC direkt mit dem Board verbunden werden. Dies ist dann sinnvoll, wenn ein Fehler in einem Programmen gesucht wird. Einfache Bascom-PRINT Anweisungen werden von einem Terminalprogramm angezeigt.

Hier kann Hyperterminal von Windows oder das eingebaute Terminalprogramm von Bascom oder einer anderen Entwicklungsumgebung empfohlen werden.

Die Belegung:

Pin 1 RX
Pin 2 GND
Pin 3 TX

Ein geeignetes Anschlusskabel kann schnell selbst angefertigt werden.

JP3

RS232 aktivieren/deaktivieren
Je nach Jumperstellung kann die RS232-Schnittstelle des Modules aktiviert oder deaktiviert werden. Perbindet man Pin 2 und 3 dieser Stiftleiste, ist er aktiviert. Pin 1 und 2 deaktiviert die Schnittstelle..

Stiftleiste JP 1
Pin1  PG5 / OC0B
Pin2  PE0 / RXD0 / PCINT0 
      Wird für RS232 Treiber genutzt, falls dieser aktiviert ist.
Pin3  PE1 / TXD0
      Wird für RS232 Treiber genutzt, falls dieser aktiviert ist
Pin4  PE2 / XCK0 / AIN0
Pin5  PE3 / OC3A / AIN1
Pin6  PE4 / OC3B / INT4
Pin7  PE5 / OC3C / INT5 
      Mit USB verbunden und darf nur gelesen werden. Ist High wenn USB-Bus Host
      angeschlossen. Kann per Software abgefragt werden.
Pin8  PE6 / T3 / INT6
Pin9  PE7 / CLK0 / ICP3 / INT7
Pin10 VCC Spannungsversorgung +5V 
Pin11 GND
Pin12 PH0 / RXD2 (freie RS232 /TTL Pegel)
Pin13 PH1 / TXD2 (freie RS232 /TTL Pegel)
Pin14 PH2 / XCK2
Pin15 PH3 / OC4A
Pin16 PH4 / OC4B
Pin17 PH5 / OC4C
Pin18 PH6 / OC2B
Pin19 PB0 / SS / PCINT0 (SPI-Bus)
Pin20 PB1 / SCK / PCINT1 (SPI-Bus und ISP)
Pin21 PB2 / MOSI / PCINT2 (SPI-Bus und ISP)
Pin22 PB3 / MISO /PCINT3 (SPI-Bus und ISP)
Pin23 PB4 / OC2A / PCINT4
Pin24 PB5 / OC1A / PCINT5
Pin25 PB6 / OC1B / PCINT6
Pin26 PB7 / OC0A / OC1C / PCINT7
Pin27 PH7 / T4
Pin28 PG3 / TOSC2 / Uhrenquarz bereits auf Modul
Pin29 RESET (kurz mit GND verbinden um RESET auszulösen)
Pin30 VCC Spannungsversorgung +5V
Pin31 GND
Pin32 PL0 / ICP4
Pin33 PL1 / ICP5
Pin34 PL2 / T5
Pin35 PL3 / OC5A
Pin36 PL4 / OC5B
Pin37 PL5 / OC5C
Pin38 PL6
Pin39 PL7
Pin40 PD0 / SCL /INT0 (I2C-Bus)
Pin41 PD1 / SDA /INT1 (I2C-Bus)
Pin42 PD2 / RXD1 /INT2 (freie RS232 /TTL Pegel)
Pin43 PD3 / TXD1 /INT3 (freie RS232 /TTL Pegel)
Pin44 PD4 / ICP1
Pin45 PD5 / XCK1 (LED auf dem Modul, leuchtet bei Low)
Pin46 PD6 / T1
Pin47 PD7 / T0
Pin48 GND
Pin49 NC (nicht belegt)
Pin50 NC (nicht belegt)

Die Pin-Nummern in Klammern sind die Pinbezeichnungen die verwendet werden wenn das Modul mit der Cad-Software Eagle in eigene Projekte eingebunden wird.

Stiftleiste JP 2
Pin 1 (51)  PG0 / WR
Pin 2 (52)  PG1 / RD
Pin 3 (53)  PG1 / RD
Pin 4 (54)  PC1 / A9
Pin 5 (55)  PC2 / A10
Pin 6 (56)  PC3 / A11
Pin 7 (57)  PC4 / A12
Pin 8 (58)  PC5 / A13
Pin 9 (59)  PC6 / A14
Pin10 (60)  PC7 / A15
Pin11 (61)  VCC Spannungsversorgung +5V
Pin12 (62)  GND
Pin13 (63)  PJ2 / XCK3 / PCINT11
Pin14 (64)  PJ3 / PCINT12
Pin15 (65)  PJ4 / PCINT13
Pin16 (66)  PJ5 / PCINT14
Pin17 (67)  PJ6 / PCINT15
Pin18 (68)  PG2 / ALE
Pin19 (69)  PA7 / AD7
Pin20 (70)  PA6 / AD6
Pin21 (71)  PA5 / AD5
Pin22 (72)  PA4 / AD4
Pin23 (73)  PA3 / AD3
Pin24 (74)  PA2 / AD2
Pin25 (75)  PA1 / AD1
Pin26 (76)  PA0 / AD0
Pin27 (77)  PJ7
Pin28 (78)  VCC Spannungsversorgung +5V
Pin29 (79)  GND
Pin30 (80)  PK7 / ADC15 / PCINT23
Pin31 (81)  PK6 / ADC14 / PCINT22
Pin32 (82)  PK5 / ADC13 / PCINT21
Pin33 (83)  PK4 / ADC12 / PCINT20
Pin34 (84)  PK3 / ADC11 / PCINT19
Pin35 (85)  PK2 / ADC10 / PCINT18
Pin36 (86)  PK1 / ADC9 / PCINT17
Pin37 (87)  PK0 / ADC8 / PCINT16
Pin38 (88)  PF7 / ADC7 / TDI
Pin39 (89)  PF6 / ADC6 / TDO
Pin40 (90)  PF5 / ADC5 / TMS
Pin41 (91)  PF4 / ADC4 / TCK
Pin42 (92)  PF3 / ADC3
Pin43 (93)  PF2 / ADC2
Pin44 (94)  PF1 / ADC1
Pin45 (95)  PF0 / ADC0
Pin46 (96)  AREF (Referenzspannung für AD Wandlung)
Pin47 (97)  GND
Pin48 (98)  VCC Spannungsversorgung +5V
Pin49 (99)  NC (nicht belegt)
Pin50(100)  NC (nicht belegt)

Die Pin-Nummern in Klammern sind die Pinbezeichnungen die verwendet werden wenn das Modul mit der Cad-Software Eagle in eigene Projekte eingebunden wird.

 

USB-Schnittstelle des ATMega2560 Boards nutzen

Das ATMega2560 Modul verfügt insgesamt über vier RS232-Schnittstellen welche sogar gleichzeitig genutzt werden können. Zwei davon stehen mit TTL-Pegel (0 und 5V) und eine mit dem Standard PC Pegel (V24 +/–12V) bereit. Die vierte wird in der Regel für den USB-Treiber auf dem Board genutzt, kann jedoch ebenfalls freigeschaltet werden.
Über die USB-Schnittstelle kann somit das Board auch bequem an einen PC angeschlossen werden die keine freie RS232 Schnittstelle besitzen.
Die USB-Schnittstelle kann genutzt werden um Daten in beide Richtungen auszutauschen. Auch das Programmieren über die USB-Schnittstelle ohne ISP-Programmer ist möglich, wenn ein sogenannter “Bootloader” in den Controller geladen wird. Dazu benötigt man jedoch zumindest einmal ein herkömmliches ISP-Programmierkabel.

USB Treiber installieren

Um die USB-Schnittstelle überhaupt nutzen zu können, muss der PC das Board erkennen können. Um dies zu erreichen muss vor dem Anschluss ein Treiber unter Windows (oder anderes Betriebssystem) installiert werden. Den Download Link zu dem Treiber finden Sie etwas weiter unten in diesem Beitrag. Wie die Installation bei ihrem Betriebssystem erfolgt, wird in der jeweiligen README-Datei zum Treiber erläutert. Die unteren Bilder zeigen den üblichen Ablauf.

USB-Treiber installieren

 

Die Programmierung des ATmega2560 Boards

Das Testprogramm

Sobald das Board mit Spannung versorgt wird, prüft das Testprogramm ob eine USB-Verbindung mit dem PC besteht. Ist diese korrekt vorhanden, dann leuchtet die LED auf RN-Mega2560 ca. 10 Sekunden dauerhaft auf. Wenn das USB-Kabel dagegen nicht korrekt verbunden ist oder der Treiber nicht korrekt installiert wurde, dann blinkt die LED ca. 10 Sekunden. Somit können Sie sehr gut die USB-Verbindung testen. Beachten Sie das die USB-Verbindung nur dann als korrekt angezeigt wird, wenn diese Verbindung vor der Spannungsversorgung des ATMega2560 (RESET) Boards erfolgte.

Nachdem die LED wieder ausgeht, wird eine Meldung mit 9600 Baud über USB vom ATMega2560 Board ausgegeben. Wenn Sie also ein Terminalprogramm mit richtiger Baudrate (9600 Baud / 8 Bit) und dem neuen COM Port (gewöhnlich COM 3) gestartet haben, dann werden Sie in etwa folgende Meldung nach dem verlöschen der LED sehen. Die Portwerte sehen allerdings bei ihnen etwas anders aus. als abgebildet.

TestprogrammPortwerte

 

Im oberen Bild wurde das in Bascom integrierte Terminalprogramm genutzt. Ausgegeben werden die Portzustände. In der Regel entsprechen die den oberen Werten. Sie können aber auch abweichen, da an die Ports ja noch keine Dinge (Sensoren/Aktoren) angeschlossen wurden. Da auch keine Pullup Widerstände per Software aktiviert wurden, ist der Zustand der Werte nicht 100% definiert. Insbesondere wenn man das Board kurz hintereinander mehrfach startet, können noch andere Werte in den Registern stehen.
Die Ausgabe soll nur demonstrieren, das die USB-Verbindung perfekt funktioniert.
Nach dieser Ausgaben geht das Testprogramm in einen Porttest über. Dabei werden zunächst alle Ports auf Ausgang und High geschaltet. Danach werden 80 Ports geprüft indem 8 mal nacheinander immer 10 Ports auf LOW geschaltet werden.

Nach diesem Kurztest werden alle 80 Ports lauflichtartig kurz auf LOW geschaltet um die Funktion jedes einzelnen Ports zu testen.
Sie werden diesen Porttest kaum nachvollziehen können, da es recht aufwendig wäre so schnell hintereinander mit dem Multimeter alle Signale zu verfolgen. Wir haben dafür ein Testboard, das über 80 Leuchtdioden verfügt. Ein aufgestecktes Board ergibt bei einem solchen Testboard ein schönes Lauflicht:

Testboard für ATmega2560 Modul

Für das Testboard haben wir ebenfalls eine Eagle-Datei zum Download bereitgestellt, falls Sie sich ein solches anfertigen lassen möchten. Natürlich kann man das Modul auch ohne Testboard nutzen, denn außer 5V Spannungsreglung ist eigentlich alles wichtige bereits auf dem Modul vorhanden.

Hier der Quellcode des Bascom-Testpogramms (klick zum aufklappen)

Hier der Quellcode des Bascom-Testpogramms:

'###################################################
'mega2560modultest_2.bas Demo zu Modul RN-Mega2560
'für 
'ATMega2560 Modul https://www.mikrocontroller-elektronik.de
'
'Aufgabe:
'Testet nach dem STart (RESET) zunächst ob USB
'bereit ist. Ist dies der Fall, dann muss LED
'ca. 10 Sekunden mit Dauerlicht leuchten.
'Ist USB nicht eingesteckt oder defekt, dann
'blinkt die LED nach dem RESET ca. 10 Sekunden
'Nach dem USB Test wird über USB noch eine Meldung
'mit Portwerten ausgegeben (9600 Baud).
'Anschließend werden alle Ports getestet indem
'Sie als Ausgang nacheinander in Blöcken zu 10
'Stück eingeschaltet werden. Also 8 Blöcke im Lauflicht
'hintereinander.
'Anschließend werden noch einmal alle LED´s einzeln
'im Lauflicht durchgeschaltet.
'Autor: Frank
'unter www.mikrocontroller-elektronik.de
'##############################################################

'Diese Anweisung setzt die FUsebits automatisch korrekt
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 
$framesize = 68 
$swstack = 68 

$crystal = 16000000 'Quarzfrequenz
'$baud = 19200

'Config Scl = Portd.0 'Ports fuer IIC-Bus
'Config Sda = Portd.1

Sound Portg.5 , 400 , 450 'BEEP
Sound Portg.5 , 400 , 250 'BEEP
Sound Portg.5 , 400 , 450 'BEEP

Config Pind.5 = Output
Led Alias Portd.5
Config Pine.5 = Input
Usb Alias Pine.5

Dim I As Integer
Dim U As Integer

Led = 1 : 'Aus
Waitms 200
If Usb = 1 Then 'Wenn USB erkannt dann
 Led = 0
 Wait 10
Else
 For I = 1 To 40
 Led = 1
 Sound Portg.5 , 400 , 250 'BEEP
 Waitms 100
 Led = 0
 Waitms 100
 Next I
End If

Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 
Open "com4:" For Binary As #4
Print #4 , "ATMega2560 Board"
 Print #4 , ""
 Print #4 , "Portwerte bei Eingang:"
 Print #4 , "Port A: " ; Pina
 Print #4 , "Port B: " ; Pinb
 Print #4 , "Port C: " ; Pinc
 Print #4 , "Port D: " ; Pind
 Print #4 , "Port E: " ; Pine
 Print #4 , "Port F: " ; Pinf
 Print #4 , "Port G: " ; Ping
 Print #4 , "Port H: " ; Pinh
 Print #4 , "Port J: " ; Pinj
 Print #4 , "Port K: " ; Pink
 Print #4 , "Port L: " ; Pinl
 Print #4 , ""

 Config Porta = Output
 Config Portb = Output
 Config Portc = Output
 Config Portd = Output
 Config Porte = Output
 Config Portf = Output
 Config Portg = Output
 Config Porth = Output
 Config Portj = Output
 Config Portk = Output
 Config Portl = Output

Portg.0 = 1
Portg.1 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1

Portj.2 = 1
Portj.3 = 1
Portj.4 = 1
Portj.5 = 1
Portj.6 = 1
Portg.2 = 1
Porta.7 = 1
Porta.6 = 1
Porta.5 = 1
Porta.4 = 1

Porta.3 = 1
Porta.2 = 1
Porta.1 = 1
Porta.0 = 1
Portj.7 = 1
Portk.7 = 1
Portk.6 = 1
Portk.5 = 1
Portk.4 = 1
Portk.3 = 1

Portk.2 = 1
Portk.1 = 1
Portk.0 = 1
Portf.7 = 1
Portf.6 = 1
Portf.5 = 1
Portf.3 = 1
Portf.4 = 1
Portf.2 = 1
Portf.1 = 1
Portf.0 = 1

Portd.7 = 1
Portd.6 = 1
Portd.5 = 1
Portd.4 = 1
Portd.3 = 1
Portd.2 = 1
Portd.1 = 1
Portd.0 = 1
Portl.7 = 1
Portl.6 = 1

Portl.5 = 1
Portl.4 = 1
Portl.3 = 1
Portl.2 = 1
Portl.1 = 1
Portl.0 = 1
Porth.7 = 1
Portb.7 = 1
Portb.6 = 1
Portb.5 = 1

Portb.4 = 1
Portb.3 = 1
Portb.2 = 1
Portb.1 = 1
Portb.0 = 1
Porth.6 = 1
Porth.5 = 1
Porth.4 = 1
Porth.3 = 1
Porth.2 = 1

Porth.1 = 1
Porth.0 = 1
Porte.7 = 1
Porte.6 = 1
Porte.4 = 1
Porte.3 = 1
Porte.2 = 1
Porte.1 = 1
Porte.0 = 1

Do
'Blöcke einzeln
 Portg.0 = 0
 Portg.1 = 0
 Portc.0 = 0
 Portc.1 = 0
 Portc.2 = 0
 Portc.3 = 0
 Portc.4 = 0
 Portc.5 = 0
 Portc.6 = 0
 Portc.7 = 0
 Waitms 500
 Portg.0 = 1
 Portg.1 = 1
 Portc.0 = 1
 Portc.1 = 1
 Portc.2 = 1
 Portc.3 = 1
 Portc.4 = 1
 Portc.5 = 1
 Portc.6 = 1
 Portc.7 = 1

 Portj.2 = 0
 Portj.3 = 0
 Portj.4 = 0
 Portj.5 = 0
 Portj.6 = 0
 Portg.2 = 0
 Porta.7 = 0
 Porta.6 = 0
 Porta.5 = 0
 Porta.4 = 0
 Waitms 500
 Portj.2 = 1
 Portj.3 = 1
 Portj.4 = 1
 Portj.5 = 1
 Portj.6 = 1
 Portg.2 = 1
 Porta.7 = 1
 Porta.6 = 1
 Porta.5 = 1
 Porta.4 = 1

 Porta.3 = 0
 Porta.2 = 0
 Porta.1 = 0
 Porta.0 = 0
 Portj.7 = 0
 Portk.7 = 0
 Portk.6 = 0
 Portk.5 = 0
 Portk.4 = 0
 Portk.3 = 0
 Waitms 500
 Porta.3 = 1
 Porta.2 = 1
 Porta.1 = 1
 Porta.0 = 1
 Portj.7 = 1
 Portk.7 = 1
 Portk.6 = 1
 Portk.5 = 1
 Portk.4 = 1
 Portk.3 = 1

 Portk.2 = 0
 Portk.1 = 0
 Portk.0 = 0
 Portf.7 = 0
 Portf.6 = 0
 Portf.5 = 0
 Portf.4 = 0
 Portf.3 = 0
 Portf.2 = 0
 Portf.1 = 0
 Waitms 500
 Portk.2 = 1
 Portk.1 = 1
 Portk.0 = 1
 Portf.7 = 1
 Portf.6 = 1
 Portf.5 = 1
 Portf.4 = 1
 Portf.3 = 1
 Portf.2 = 1
 Portf.1 = 1

 Portd.7 = 0
 Portd.6 = 0
 Portd.5 = 0
 Portd.4 = 0
 Portd.3 = 0
 Portd.2 = 0
 Portd.1 = 0
 Portd.0 = 0
 Portl.7 = 0
 Portl.6 = 0
 Waitms 500
 Portd.7 = 1
 Portd.6 = 1
 Portd.5 = 1
 Portd.4 = 1
 Portd.3 = 1
 Portd.2 = 1
 Portd.1 = 1
 Portd.0 = 1
 Portl.7 = 1
 Portl.6 = 1

 Portl.5 = 0
 Portl.4 = 0
 Portl.3 = 0
 Portl.2 = 0
 Portl.1 = 0
 Portl.0 = 0
 Porth.7 = 0
 Portb.7 = 0
 Portb.6 = 0
 Portb.5 = 0
 Waitms 500
 Portl.5 = 1
 Portl.4 = 1
 Portl.3 = 1
 Portl.2 = 1
 Portl.1 = 1
 Portl.0 = 1
 Porth.7 = 1
 Portb.7 = 1
 Portb.6 = 1
 Portb.5 = 1

 Portb.4 = 0
 Portb.3 = 0
 Portb.2 = 0
 Portb.1 = 0
 Portb.0 = 0
 Porth.6 = 0
 Porth.5 = 0
 Porth.4 = 0
 Porth.3 = 0
 Porth.2 = 0
 Waitms 500
 Portb.4 = 1
 Portb.3 = 1
 Portb.2 = 1
 Portb.1 = 1
 Portb.0 = 1
 Porth.6 = 1
 Porth.5 = 1
 Porth.4 = 1
 Porth.3 = 1
 Porth.2 = 1

 Porth.1 = 0
 Porth.0 = 0
 Porte.7 = 0
 Porte.6 = 0
 Porte.4 = 0
 Porte.3 = 0
 Porte.2 = 0
 Porte.1 = 0
 Porte.0 = 0
 Portf.0 = 0
 Waitms 500
 Porth.1 = 1
 Porth.0 = 1
 Porte.7 = 1
 Porte.6 = 1
 Porte.4 = 1
 Porte.3 = 1
 Porte.2 = 1
 Porte.1 = 1
 Porte.0 = 1
 Portf.0 = 1

 Wait 1

'Alle Led´s nacheinander einzeln
 Portg.0 = 0 : Waitms 200 : Portg.0 = 1
 Portg.1 = 0 : Waitms 200 : Portg.1 = 1
 Portc.0 = 0 : Waitms 200 : Portc.0 = 1
 Portc.1 = 0 : Waitms 200 : Portc.1 = 1
 Portc.2 = 0 : Waitms 200 : Portc.2 = 1
 Portc.3 = 0 : Waitms 200 : Portc.3 = 1
 Portc.4 = 0 : Waitms 200 : Portc.4 = 1
 Portc.5 = 0 : Waitms 200 : Portc.5 = 1
 Portc.6 = 0 : Waitms 200 : Portc.6 = 1
 Portc.7 = 0 : Waitms 200 : Portc.7 = 1

 Portj.2 = 0 : Waitms 200 : Portj.2 = 1
 Portj.3 = 0 : Waitms 200 : Portj.3 = 1
 Portj.4 = 0 : Waitms 200 : Portj.4 = 1
 Portj.5 = 0 : Waitms 200 : Portj.5 = 1
 Portj.6 = 0 : Waitms 200 : Portj.6 = 1
 Portg.2 = 0 : Waitms 200 : Portg.2 = 1
 Porta.7 = 0 : Waitms 200 : Porta.7 = 1
 Porta.6 = 0 : Waitms 200 : Porta.6 = 1
 Porta.5 = 0 : Waitms 200 : Porta.5 = 1
 Porta.4 = 0 : Waitms 200 : Porta.4 = 1

 Porta.3 = 0 : Waitms 200 : Porta.3 = 1
 Porta.2 = 0 : Waitms 200 : Porta.2 = 1
 Porta.1 = 0 : Waitms 200 : Porta.1 = 1
 Porta.0 = 0 : Waitms 200 : Porta.0 = 1
 Portj.7 = 0 : Waitms 200 : Portj.7 = 1
 Portk.7 = 0 : Waitms 200 : Portk.7 = 1
 Portk.6 = 0 : Waitms 200 : Portk.6 = 1
 Portk.5 = 0 : Waitms 200 : Portk.5 = 1
 Portk.4 = 0 : Waitms 200 : Portk.4 = 1
 Portk.3 = 0 : Waitms 200 : Portk.3 = 1

 Portk.2 = 0 : Waitms 200 : Portk.2 = 1
 Portk.1 = 0 : Waitms 200 : Portk.1 = 1
 Portk.0 = 0 : Waitms 200 : Portk.0 = 1
 Portf.7 = 0 : Waitms 200 : Portf.7 = 1
 Portf.6 = 0 : Waitms 200 : Portf.6 = 1
 Portf.5 = 0 : Waitms 200 : Portf.5 = 1
 Portf.4 = 0 : Waitms 200 : Portf.4 = 1
 Portf.3 = 0 : Waitms 200 : Portf.3 = 1
 Portf.2 = 0 : Waitms 200 : Portf.2 = 1
 Portf.1 = 0 : Waitms 200 : Portf.1 = 1

 Portd.7 = 0 : Waitms 200 : Portd.7 = 1
 Portd.6 = 0 : Waitms 200 : Portd.6 = 1
 Portd.5 = 0 : Waitms 200 : Portd.5 = 1
 Portd.4 = 0 : Waitms 200 : Portd.4 = 1
 Portd.3 = 0 : Waitms 200 : Portd.3 = 1
 Portd.2 = 0 : Waitms 200 : Portd.2 = 1
 Portd.1 = 0 : Waitms 200 : Portd.1 = 1
 Portd.0 = 0 : Waitms 200 : Portd.0 = 1
 Portl.7 = 0 : Waitms 200 : Portl.7 = 1
 Portl.6 = 0 : Waitms 200 : Portl.6 = 1

 Portl.5 = 0 : Waitms 200 : Portl.5 = 1
 Portl.4 = 0 : Waitms 200 : Portl.4 = 1
 Portl.3 = 0 : Waitms 200 : Portl.3 = 1
 Portl.2 = 0 : Waitms 200 : Portl.2 = 1
 Portl.1 = 0 : Waitms 200 : Portl.1 = 1
 Portl.0 = 0 : Waitms 200 : Portl.0 = 1
 Porth.7 = 0 : Waitms 200 : Porth.7 = 1
 Portb.7 = 0 : Waitms 200 : Portb.7 = 1
 Portb.6 = 0 : Waitms 200 : Portb.6 = 1
 Portb.5 = 0 : Waitms 200 : Portb.5 = 1

 Portb.4 = 0 : Waitms 200 : Portb.4 = 1
 Portb.3 = 0 : Waitms 200 : Portb.3 = 1
 Portb.2 = 0 : Waitms 200 : Portb.2 = 1
 Portb.1 = 0 : Waitms 200 : Portb.1 = 1
 Portb.0 = 0 : Waitms 200 : Portb.0 = 1
 Porth.6 = 0 : Waitms 200 : Porth.6 = 1
 Porth.5 = 0 : Waitms 200 : Porth.5 = 1
 Porth.4 = 0 : Waitms 200 : Porth.4 = 1
 Porth.3 = 0 : Waitms 200 : Porth.3 = 1
 Porth.2 = 0 : Waitms 200 : Porth.2 = 1

 Porth.1 = 0 : Waitms 200 : Porth.1 = 1
 Porth.0 = 0 : Waitms 200 : Porth.0 = 1
 Porte.7 = 0 : Waitms 200 : Porte.7 = 1
 Porte.6 = 0 : Waitms 200 : Porte.6 = 1
 Porte.4 = 0 : Waitms 200 : Porte.4 = 1
 Porte.3 = 0 : Waitms 200 : Porte.3 = 1
 Porte.2 = 0 : Waitms 200 : Porte.2 = 1
 Porte.1 = 0 : Waitms 200 : Porte.1 = 1
 Porte.0 = 0 : Waitms 200 : Porte.0 = 1
 Portf.0 = 0 : Waitms 200 : Portf.0 = 1
Loop

End

 

Weitere Bascom-Programmbeispiele für den Einstieg mit dem ATMega2560 Modul

In dem Kapitel wollen wir noch einmal von vorne aufzeigen wie der Ablauf beim programmieren ist. Wir gehen davon aus, das Sie Bascom installiert und den Programmer korrekt eingestellt und angeschlossen haben.
Zunächst ruft man die Bascom Entwicklungsumgebung auf. Anschließend legt man über File/New ein neue Datei an und gibt das nachfolgenden Beispielprogramme. ein.

'###################################################
'erstebeispiel.bas Demo zu Modul RN-Mega2560
'
'Aufgabe:
'Laesst LED blinken
'Autor: Frank
'##############################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt 
'(Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68

$crystal = 16000000 'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5

Do
 Led = 1
 Waitms 100
 Led = 0
 Waitms 100
Loop

End

Dies ist ein recht einfaches Programm. Die Aufgabe besteht nur darin die Leuchtdiode auf dem Board RN-Mega2560 ständig blinken zu lassen. Der eigentlich dafür zuständige Code ist nur dieser

Do
  Led = 1
  Waitms 100
  Led = 0
  Waitms 100
Loop

Die anderen Zeilen sind Kommentare oder grundlegende Anweisungen die man gewöhnlich bei allen Programmen für das Modul immer wieder gleich übernehmen kann. Die Anweisungen für den Stack sind natürlich hier im Beispiel übertrieben hoch angesetzt, da das Modul aber genügt Speicher besitzt wollten wir nicht geizen .

Sehr hilfreich ist die Anweisung ganz oben:

$prog , 255 , &B11011001 ,

Diese Anweisung sorgt dafür das die Fusebits automatisch beim übertragen des Programmes richtig gesetzt werden. “Fusebits” nennt man bestimmte Konfigurationseinstellungen beim Controller. So müssen über diese zum Beispiel festgelegt werden ob der Controller mit einem internen Takt oder über den Quarz-Takt betrieben werden soll. Die obere Einstellung sorgt dafür das der Quarz aktiviert und das Modul mit vollen 16 Mhz getaktet wird. Zudem wird die JTAG-Schnittstelle deaktiviert, da diese oft nicht gebraucht wird und sonst unnötig Ports belegen würde. Beachten Sie das nicht alle Programmer diese automatische Fusebit-Programmierung mittels befehl unterstützen.

Man kann Fusebits in Bascom auch manuell über einen Dialog programmieren. Da müssten diese dann so aussehen:

fusebits_bascom

Beim manuellen Einstellen der Fusebits muss man allerdings etwas vorsichtig vorgehen. Falsche Einstellungen können den Controller quasi unbrauchbar machen, weil er dann nicht mehr über die üblichen ISP-Programmer programmierbar wäre. Insbesondere bei FUSEBIT 98DCB und FUSEBIT G muss man sehr vorsichtig sein.

 

Jetzt aber zurück zu unserem Vorhaben den Blink-Beispielprogramm. Haben Sie den Quellcode eingegeben oder geladen, so müssen Sie spätestens jetzt das Modul RN-Mega2560 mit dem PC verbinden. Auf dem unteren Bild wird dazu der USB-Programmer genutzt. Wie Sie erkennen ist links beim Programmer ein roter Jumper eingesteckt. Dadurch versorgt unser Programmer das Board gleichzeitig mit 5V, eine weitere Versorgungsspannung brauchen wir also nicht. Würden Sie statt dessen den parallelen Programmer nutzen, so müssten Sie das Board noch über die Stiftleisten mit 5V versorgen.

USB-Programmer

So oder so ähnlich könnte ihr Programmer aussehen

Zunächst compilieren wir das Programm indem wir das Symbol “schwarzes IC” anklicken. Sind im Quelltext noch Syntax Fehler enthalten, so werden diese nun unten aufgelistet, ansonsten wurde der Code korrekt erzeugt.
Um das Programm nun zu übertragen, muss rechts oben in der Toolbar von Bascom ein grünes Symbol angeklickt werden. Auf dem unteren Bild ist es markiert:

Bascom Programmer aufrufen

Jetzt meldet sich der eingebaute Programmer von Bascom. Wenn alles richtig angeschlossen wurde, dann sollte dies in etwa so aussehen:

Bascom Programmer

Wichtig ist das oben rechts bei dem Chip (im Bild blau markiert) ATMega2560 steht. Sollte hier etwas anderes stehen, dann haben Sie entweder noch einen veralteten Compiler oder aber irgend etwas stimmt mit der Programmer Verbindung oder Konfiguration nicht. Bevor Sie jedoch nach Fehlern suchen, sollte man das Programmerfenster nochmals schließen und es erneut versuchen. Auch das Abziehen und neu Anstecken des Boards sollte man zunächst probieren, denn aufgrund der komplexen Firmware der USB-Programmer kommt es schon auch mal zu fehlerhaften Interpretation die beim zweiten Anstecken weg sind.

Sollte das alles nicht hefen, so ist folgende Webseite zu empfehlen: RN-Board_FAQ-Seite
Auf dieser Seite werden viele denkbare Probleme und Lösungen aufgelistet.

Sollte der Chip korrekt angezeigt werden, so klickt man auch in diesem Dialog auf das grüne Symbol. Im oberen Bild ist dies ebenfalls durch einen Pfeil markiert. Nun wird das Programm in den Controller übertragen und anschließend automatisch verifiziert. Zudem werden automatisch, durch unsere schon genannte Anweisung, die Fusebits korrekt eingestellt. Das ganze dauert bei diesem kuirzen Programm nur wenige Sekunden.
Bei erfolgreicher Übertragung sollte anschließend links unten in der Statusleiste dieses Dialogfeldes “VERIFY OK” zu lesen sein. Sofort nach der Übertragung führen die Programmer ein RESET beim Board aus, dadurch wird das Programm gestartet und die LED sollte dauerhaft blinken.

Das war´s!
Wir haben ein erstes Programm geschrieben und übertragen. Das Controllerboard arbeitet nun völlig unabhängig vom PC. Der Programmer kann also jederzeit entfernt werden, sobald das Board mit 5V versorgt wird, beginnt es zu blinken.

Jetzt prüfen wir die serielle Ausgabe über RS232

Jetzt demonstrieren wir wie einfach sich durch eine kleine Programmergänzung auch Daten mit dem PC über die serielle Schnittstelle austauschen lassen. Dazu müssen wir zunächst noch ein RS232-Kabel an die 3 polige Stiftleiste von dem ATMega2560-Modul sowie an die 9 polige SUB-D Buchse vom PC anschließen (falls der PC noch so eine hat). Passende RS232 kabel gibt es im Handel. hat der PC keine RS232-Schnittstelle, so kann man sich auch mit einem RS232/USB Wandler (solche gibt es hier bei Amazon*) behelfen.

Zudem müssen wir noch die serielle Schnittstelle am Board durch einen Jumper aktivieren, siehe Markierung im unteren Bild:

USB-Programmer am ATMega2560 Modul

USB-Programmer am ATMega2560 Modul

Der Quellcode unseres Bascom Programmes sieht so aus:

'###################################################
'erstebeispiel2.bas Demo zu Modul RN-Mega2560
'
'Aufgabe:
'Laesst LED blinken
'Gibt Zahlen ueber RS232 aus
'Autor: Frank
'###################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz
Config Pind.5 = Output
Led Alias Portd.5
$baud = 9600
Dim I As Integer

Do
 Led = 1
 Waitms 100
 Led = 0
 Waitms 100
 Print "Hallo" ; I
 I = I + 1
Loop

End

Das Programm wird auf die gleiche Weise compiliert und übertragen wie unser erstes Programm, wir ersparen uns dazu deshalb die Wiederholungen.
Zunächst werden wir gar keinen Unterschied bemerken, die LED blinkt wie zuvor. Wir müssen also noch ein Terminalprogramm starten, welches uns die eingehenden Daten auch anzeigt. Am einfachsten starten wir dazu das in Bascom integrierte Terminalprogramm indem wir rechts oben in der Haupttoolbar das Modem-Symbol anklicken (sieht auch ein wenig wie eine liegende Ampel aus).

Jetzt sollte in etwa folgendes erscheinen:

terminalhallo

 

Sie müssten eine ständig aufsteigende Zahlenfolge sehen. Diese Daten werden ständig von ATmega2560 Modul übertragen.
Erscheint nichts oder wirre Zeichen, so kann dies zwei Ursachen haben. Prüfen Sie zunächst ob auch die korrekte Baudrate im Terminalfenster eingestellt ist. Da wir im Quellcode 9600 Baud programmiert haben, sollte dies auch in ihrem Fenster so eingestellt werden. Über den Menüpunkt Terminal/Settings sollten folgende Einstellungen gewählt werden:

Bascom Baudrate

Sollte trotz dieser Einstellungen immer noch nix erscheinen, dann wurde vermutlich der dreipolige RS232 Stecker falsch herrum aufgesteckt. Drehen Sie diesen einfach um, dadurch wird RX/TX vertauscht und es sollte spätestens dann klappen.

Jetzt tauschen wir Daten über USB aus

Wir haben eben gesehen wie leicht man Daten über RS232 austauschen kann. Jetzt werden wir das gleiche Programm geringfügig ändern um zu zeigen das es genausoleicht auch über USB möglich ist.
Wir entfernen zunächst das RS232 Kabel und verbinden statt dessen das Board über das beiliegende USB-Kabel mit dem PC.

Das Programm ändern wir soweit ab, das es so aussieht:

'###################################################
'erstebeispiel3.bas Demo zu Modul RN-Mega2560
'
'Aufgabe:
'Laesst LED blinken
'Gibt Zahlen ueber USB aus
'Autor: Frank
'###################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz
Config Pind.5 = Output
Led Alias Portd.5
Config Com4 =9600 , Synchrone =0 , Parity = None , Stopbits =1 , Databits =8 , Clockpol =0
Open "com4:" For Binary As #4 'USB Buchse

Dim I As Integer
Do
 Led = 1
 Waitms 100
 Led = 0
 Waitms 100
 Print #4 , "Hallo" ; I
 I = I + 1
Loop

End

Wenn Sie das Programm genau vergleicht, dann wird man erkennen das lediglich die zwei Zeilen

Config Com4 =9600 , Synchrone =0 , Parity = None , Stopbits =1 , Databits =8 , Clockpol =0
Open "com4:" For Binary As #4 'USB Buchse

hinzukamen und die Print-Anweisung etwas verändert wurde:

Print #4 , "Hallo" ; I

Da unser ATMega2560 Modul vier serielle Schnittstelen besitzt, wird für USB einfach die vierte Schnittstelle angewählt und die Baudrate festgelegt. Beim Print Befehl muss man lediglich noch angeben das über die vierte serielle Schnittstelle ausgegeben wird. Wer sagt jetzt noch das USB kompliziert ist , einfacher geht’s ja wohl kaum?

Empfangen können die Daten wie zuvor mit dem eingebauten Bascom Terminalprogramm. Nicht vergessen das Sie dort aber für USB einen anderen COM-Port anwählen müssen, gewöhnlich 3 weil der USB-Treiber COM 3 dort eingerichtet hat.

Natürlich geht auch beides

Selbstverständlich kann man auch in einem Programm gleichzeitig Daten über mehrer Schnittstellen ausgeben. Dies zeigt das untere Demoprogramm. Das Demo demonstriert auch wie man im Quellcode abfragen kann ob überhaupt eine USB-Verbindung besteht. Zudem wird bei diesem Demo noch ein Signalton über Port G5 ausgegeben. Dieser ist natürlich nur hörbar, wenn man ein Piezo-Lautsprecher an diesen Pin anschließt.

'#######################################################
'Mega2560modultest_rs232.bas Demo Zu atmega2560 Modul
'für RoboterNetz Board RN-Mega2560 ab Version 1.0 und
'Nicht vergessen vorher USB Driver zu installieren
'
'Aufgabe:
'Gibt eine Zeile über die 3 polige RS232
'als auch eine Zeile über die USB Schnittstelle aus
'Autor: Frank
'########################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Sound Portg.5 , 400 , 450 'BEEP
Sound Portg.5 , 400 , 250 'BEEP
Sound Portg.5 , 400 , 450 'BEEP

Config Pind.5 = Output
Led Alias Portd.5

Config Pine.5 = Input
Usb Alias Pine.5 'Ist 1 wenn USB angeschlossen
Config Com4= 9600 , Synchrone= 0 , Parity =None , Stopbits =1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4 'USB Buchse

Dim I As Integer
Dim U As Integer

For I = 1 To 10
 Led = 1
 Waitms 100
 Led = 0
 Waitms 100
Next I

I = 0
Do
 I = I + 1
 'Dies wird über herkömmliche RS232 ausgegeben
 Print "Hallo Seriell 1 (mit MAX) : " ; I
 If Usb = 1 Then Print "USB ist angeschlossen"
 Print

 'Dies wird über USB Schnittstelle ausgegeben
 Print #4 , "Hallo Seriell 4 (USB) : " ; I
 Wait 1
Loop

End

Daten per USB empfangen

Natürlich lassen sich Daten über RS232 oder USB nicht nur ausgeben sondern auch empfangen. Auch dazu ein kleines Beispiel das Eingaben per USB empfängt.

'############################################################
'mega2560modultest_usb_input.bas Demo Zu atmega2560 Modul
'
'Aufgabe:
'Empängt Zeichen über RS232 und gibt dieses als
'Zeichen und als ASCII-Zahlencode zurück
'Autor: Frank
'##############################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Pind.5 = Output
Led Alias Portd.5
Config Pine.5 = Input
Usb Alias Pine.5 'Ist 1 wenn USB angeschlossen

Config Com4 =9600 , Synchrone =0 , Parity =None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4 'USB Buchse

Dim I As Integer
Dim U As Integer
Dim B As Byte

For I = 1 To 10
 Led = 1
 Waitms 100
 Led = 0
 Waitms 100
Next I

 Wait 1
 Print #4 , "Hallo USB"
I = 0

Do
 B = Waitkey(#4)
 Waitms 500
 Print #4 , Chr(b )
 Print #4 , Chr(b) ; "(" ; B ; ")" ;
Loop

End

Dieses Testprogramm wartet stets auf ein Zeichen und gibt dieses dann als Zeichencode und als Zahlencode wieder zurück. Es lässt sich einfach testen indem man bei einem aktiviertem Bascom Terminalfenster auf eine Buchstabentaste drückt. Dieser Buchstabe wird dann vom Board RN-Mega2560 empfangen und wieder zurück wie geschildert zurückgesendet und im Terminalfenster angezeigt.

Achtung, in der derzeitigen neuen Bascom Version 1.11.8.3 gibt es bei einigen Bascom Versionen noch einen BUG bei dem CHR-Befehl, wenn diese in Zusammenhang mit COM4 benutzt wird. Sollten die Daten also nicht ganz so wie erwartet zurück kommen, liegt es an diesem Bascom Bug. Die aktuelle Version von Bascom sollte diesen Bug jedoch nicht mehr besitzen.

Damit haben Sie den Bascom Einstieg erfolgreich abgeschlossen.

Wenn Sie die Demoprogramme gründlich studieren werden Sie viele Sachen davon ableiten und in eigenen Programmen verwenden können. Der große Mikrocontroller auf dem ATMega2560 Modul bietet natürlich noch eine ganze Reihe weiterer Features, aber dies alles zu Beschreiben würde ganze Bücher füllen. Daher würde ich Ihnen für den tieferen Einstieg vor allem auch das Datenblatt zum ATMega2560 empfehlen. Dieses finden Sie auch unten unter den Downloads.

Auch finden Sie unter Bauanleitungen und auf der Seite RN-Wissen viele Quellcodebeispiele zu kleineren Boards wie RN-Control, RN-MiniControl oder RN-Mega8. Alle diese Bascom-Beispiele lassen sich mit geringen Änderungen auch an dieses ATMega2560 Modul anpassen. So werden Sie schnell sehen wie Sie Ultraschallsensoren, Infrarotsensoren, Temperatursensoren, einen Kompass, Drehgeber und viele mehr ganz einfach anschließen und programmieren können. RN-Wissen ist eine offene WIKI-Seite, jeder kann dort eigene Beiträge oder eigene Programme veröffentlichen, es wäre schön wenn auch Sie davon Gebrauch machen würden, es hilft allen.

 

Schaltplan des ATMega2560 Boards

Schaltbild Mini Controllerboard mit Atmel ATmega2560 und USB

Bestückungsplan des ATMega2560 Boards

Bestückungsplan Mini Controllerboard mit Atmel ATmega2560 und USB

 

Aufbauanleitung zum ATMega2560 Board

Für den Aufbau dieses Moduls ist unbedingt gute SMD-Löterfahrung notwendig. Es ist daher kein Projekt für Einsteiger mit wenig Lötpraxis, Einsteigern würden wir daher eher die Bauanleitung RN-Control empfehlen.

Bauanleitung Mini Controllerboard mit Atmel ATmega2560 und USBFür den Aufbau ist es in dem Fall notwendig das man sich eine vorgefertigte Leiterplatte bestellt. Damit das problemlos möglich ist, finden Sie etwas weite runten in diesem Beitrag wieder die Leiterplatten-Layout Dateien zum kostenfreien Download. Wenn Sie diese an einen Leiterplattenhersteller senden, liefern ihnen diese die passende Leiterplatte.

Die genaue Bestückung entnehmen Sie dem oberen Bestückungsplan in Verbindung mit der unteren Bauteile-Bestelliste. Bei Unklarkeiten kann man einfach den Schaltplan oder die Eagle-Datei zu Rate ziehen.
Die Platine kann wahlweise mit 2×25 poligen Stiftleisten oder Buchsenleisten bestückt werden, je nach Bedarf oder Verwendung.

Das Board kann danach über die Stiftleiste (oder über den ISP Wannenstecker) direkt mit 5V stabilisierter Gleichspannung versorgt werden. Achten Sie unbedingt darauf das die Spannung an den richtigen Pin gelegt wird (nachfolgende Pin-Beschreibung beachten). Ein Verpolen oder eine falsche Spannung zerstört das Modul.

Zum Programmieren kann der Standard-ISP Programmer verwendet werden. Etwas erfahrenere Anwender könnten natürlich auch einen Arduino Bootloader installieren und dann die Arduino Entwicklungsumgebung zur Programmierung nutzen.

 

Bauteile Bestückungsliste / Bestellliste

Platinenbezeichnung    Beschreibung                         Bestellnummer/Bezugsquelle
C1,C2,C3,C4,C5,C6,     100nF Keramik Kondensator            Reichelt Sortiment*
C10,C11,C12,C13,C14    100nF Keramik Kondensator            Reichelt Sortiment*        
C15,C16                100nF Keramik Kondensator            Reichelt Sortiment*
C7,C8                  22pF  Keramik Kondensator            Reichelt Sortiment*
C9                     47nF  Keramik Kondensator            Reichelt Sortiment* 
C17                    100uF / 6,3V Tantal                  Reichelt* 
D1                     Diode 1N4148                         Reichelt*
IC1                    ATMEGA2560P TQFP100                  Farnell*
IC2                    CP2101 MLP28 Single-Chip             Farnell*
                       USB to UART Bridge
IC3                    MAX3221EUE TSSOP16 RS-232            Farnell*
                       Transceivers
ISP1                   10 poliger Wannenstecker             Reichelt*
JP1,JP2                2x25 polige Stift- o. Buchsenleiste  Reichelt*
JP3                    Liegender Jumper                     Reichelt*
L1                     Induktividät 10uH                    Reichelt*
LED1                   Leuchtdiode (805 Gehäuse)            Reichelt*
Q1                     FC135 QUARZ; FC135QUARZ SMD Quarz    Farnell*
                       32.768 khz z.B. Epson FC135
Q2                     KS7QUARZ SMD-Quarz mit 16 Mhz         Bezug hier
                       Beispielsweise KS7  
R1,R5                  Widerstand 4,7k (805 Gehäuse)        Reichelt Sortiment*
R2                     Widerstand 1,5k (805 Gehäuse)        Reichelt Sortiment*
RS232                  Liegende dreipolige Stiftleiste      Reichelt*
USB                    Mini USB Buchse                      Reichelt*                


  
Alle Angaben ohne Gewähr

 

Downloads

  Eagle-Leiterplattenlayout ATMega2560 Modul (ZIP)
  Eagle-leiterplattenlayout für Testboard (ZIP)
  Bascom-Beispielprogramme für ATMega2560 Modul (ZIP)
  Datenblatt zum Atmega2560 von Atmel
  USB-Treiber für Windows / Linux Macintosh u.a. Betriebsysteme

 

Leiterplatte zum Projekt bestellen

Neu! Die Leiterplatte für dieses Projekt ist direkt über den Shop PlatinenCenter erhältlich. Da die Platinen dort vorgefertigt werden, sind diese sehr preiswert lieferbar.

Zum Platinen Shop

Individuelle Leiterplatten

Möchtest du keine vorgefertigte Leiterplatte, weil Du vielleicht vorher Änderungen an dem Layout vornehmen möchtest, dann empfehlen ich die Anbieter auf unserer Leiterplatten-Service Seite.

Leiterplatten Hersteller

Das Leiterplattenangebot  ist ein Service Angebot der jeweiligen Anbieter. Bei Fragen bezüglich Lieferung und Preis bitte dort nachfragen!

Weblinks zum Thema

Geeignete Programmer für die Programmierung

Einen Test von ISP-Programmern findest du hier

Letzte Aktualisierung am 26.07.2024 / * Affiliate Links 

Alternatives Boards  mit gleichem Mikrocontroller

Letzte Aktualisierung am 27.07.2024 / * Affiliate Links 

 

Weitere Hinweise

Vor dem Aufbau bitte nachfolgende Hinweise lesen:
Das Projekt unterliegt einer CC-Lizenz - Lizenzhinweis (zum Aufklappen anklicken)
Um ihnen weitgehende Möglichkeiten zum Nutzen der Schaltung einzuräumen, wurde dieses Projekt jetzt unter die CC-Lizenz gestellt. Sie haben So die Möglichkeit die Schaltung beliebig zu verändern oder weiterzugeben. Lediglich die kommerzielle Weitergaben ist nur mit Genehmigung möglich! Genauere Hinweise finden Sie im Lizenztext. Bei einer Veröffentlichung oder Weitergabe ist nachfolgender Text sichtbar zu übernehmen:
cc_logo310

Falls Dir der Beitrag gefallen oder geholfen hat kannst Du dem Autor aber gerne durch eine kleine Spende Danke sagen!

Projekt (Schaltung & Projektdateien) von Frank ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz. Über diese Lizenz hinausgehende Erlaubnisse können Sie unter https://www.mikrocontroller-elektronik.de/ erhalten. Lizenziert wurde das Projekt von: www.Roboternetz.de & www.Mikrocontroller-Elektronik.de  -  Autor/User Frank Dieser Name und diese Webseiten sind bei der Weitergabe stets deutlich sichtbar zu nennen!
Achtung: Es kann keinerlei Garantie für die Fehlerfreiheit der Schaltung oder anderer Projektdateien übernommen werden! Der Nachbau und Betrieb geschieht auf eigene Gefahr! Jegliche Haftung für Schäden oder Verletzungen wird ausgeschlossen! Schadensersatzansprüche, gleich aus welchem Rechtsgrund, sind ausgeschlossen.
Sicherheitshinweise und Haftungsausschluss (zum Aufklappen anklicken)
Dieses Projekt dient vornehmlich für Lehrzwecke und zum Experimentieren. Für den Aufbau sollten ausreichend Elektronik Grundkenntnisse und Kenntnisse bezüglich der Sicherheit (Experimentieren mit Strom und Handhabung gängiger Werkzeuge wie Lötkolben etc.) vorhanden sein. Unter dem Menüpunkt Buchvorstellungen als auch auf der Seite RN-Wissen.de empfehle ich diesbezüglich noch interessante Literatur mit der man sich dies erarbeiten kann. Für Fragen bezüglich Elektronik und Mikrocontroller empfehle ich das Forum: Roboternetz.de Sicherheitshinweise und Haftungsausschluss

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

scroll to top