Claus Kühnel 2011/09/06 18:58

Programmbeispiele für das M1280 Universal Board

Das M1280 Universal Board entspricht von der Hardware einem Arduino Mega 1280 mit einem speziellen Bootloader.


Test_M1280

Das folgende Programmbeispiel dient dem Test des Bootloaders, bewirkt das Blinken der On-Board LED und die Ausgabe eines Strings über das serielle USB-Interface. Programmdownload und UART-Kommunikation erfolgen also über die gleiche USB-Verbindung (resp. das gleiche COM-Port des PCs).

Die Screenshots zeigen die in BASCOM-AVR unter Options>Programmer vorzunehmenden Programmereinstellungen sowie die Terminalausgabe des gestarteten Programms:

'--------------------------------------------------------------------------------------
'name                     : Test_M1280.bas
'programmed by            : Claus Kuhnel
'date                     : 2011-09-05
'purpose                  : Test of M1280 Board
'micro                    : ATmega1280
'tested with              : V.2.0.7.1
'suited for demo          : yes
'commercial addon needed  : no
'--------------------------------------------------------------------------------------
$regfile = "m1280def.dat"                   ' specify the used micro
$crystal = 16000000                         ' used crystal frequency
$baud = 57600                               ' used baud rate

$programmer = 13                            ' MCS Bootloader

$hwstack = 40                               ' default use 32 for the hardware stack
$swstack = 40                               ' default use 10 for the SW stack
$framesize = 40                             ' default use 40 for the frame space

$include "Pins_M1280.inc"                   ' adaption to Arduino pin numbers

Config Io13 = Output                        ' Io13 is an alias to PortB.7

Print "Hello World from M1280"              ' UART is connected via USB to PC (Virtual COM Port)

Do
   Io13 = 1
   Waitms 50
   Io13 = 0
   Waitms 950
Loop

End



Temperaturmessung mit LM335

LM335

Der LM335 ist ein Präzisions-Temperatursensor für einen Temperaturbereich von -40 bis 100°C. Sein Ausgangssignal beträgt 10 mV/K. Bei einer Raumtemperatur von 25 °C beträgt die Ausgangsspannung 298,15 V. Um die Genauigkeit voll ausschöpfen zu können, kann der LM335 bei 25°C kalibriert weden. Alle weiteren Details sind dem Datenblatt zu entnehmen.

Der LM335 wird über einen Widerstand R1 von 4,7 kOhm mit der Spannung VCC (= V+) verbunden. Der Strom durch den LM335 beträgt damit ca. 1 mA, wodurch stabile Arbeitsbedingungen gesichert sind. Die Kathoden-Seite des LM335 wird einem Kanal des internen ADC des ATmega1280 zugeführt. Die weiteren Details sind im Code kommentiert.

'--------------------------------------------------------------------------------------
'name                     : Test_M1280.bas
'programmed by            : Claus Kuhnel
'date                     : 2011-08-25
'purpose                  : Test of M1280 Board
'micro                    : ATmega1280
'tested with              : V.1.12.0.0
'suited for demo          : yes
'commercial addon needed  : no
'--------------------------------------------------------------------------------------
$regfile = "m1280def.dat"                                   ' specify the used micro
$crystal = 16000000                                         ' used crystal frequency
$baud = 57600                                               ' used baud rate

$programmer = 13                                            ' MCS Bootloader

$hwstack = 40                                               ' default use 32 for the hardware stack
$swstack = 40                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

$include "Pins_M1280.inc"                                   ' adaption to Arduino pin numbers

Config Io13 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Const K0 = 273.15
Const K1 = 0.97

Dim Voltage As Single , Kelvin As Single , Celsius As Single
Dim Adc_value As Word , Channel As Byte
Channel = 0                                                 ' AIN0 used

Print "LM335 Temperature Measurement"

Do
   Io13 = 1
   Waitms 50
   Adc_value = Getadc(channel)
   Voltage = Adc_value * 5.
   Voltage = Voltage / 1024
   Voltage = Voltage * K1                              ' Voltage Divider for Calibration
   Kelvin = Voltage * 100
   Celsius = Kelvin - K0
   Print "ADC: " ; Adc_value ; Spc(3) ;
   Print "Voltage: " ; Fusing(voltage , "#.##") ; Spc(3) ;
   Print "Kelvin: " ; Fusing(kelvin , "#.##") ; Spc(3) ;
   Print "Celsius: " ; Fusing(celsius , "#.##")
   Io13 = 0
   Waitms 950
Loop

End