— Claus Kühnel 2011/09/06 18:58
Das M1280 Universal Board entspricht von der Hardware einem Arduino Mega 1280 mit einem speziellen Bootloader.
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
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