hehe, so schnell gehts, ist mir gar nicht aufgefallen, wir wissen ja was gemeint istDA Ausgang mit 256Bit Auflösung
8 Bit Auflösung, 256 Stufen.
hehe, so schnell gehts, ist mir gar nicht aufgefallen, wir wissen ja was gemeint istDA Ausgang mit 256Bit Auflösung
Code: Alles auswählen
'###############################################################
'Mai 2008 by KAKTUS
'Hardware:
'RoboterNetz Board RN-Mega2560 ab Version 1.0
'
'Aufgabe:
'Sammelt Daten der 16 A/D Wandler (10Bit) ein, bildet einen Mittwert
'zwecks Rauschunterdrückung der letzt 1-2Bits
'und gibt Daten über RS232 aus.
'
'##############################################################
'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" 'Controllertyp
$hwstack = 82 '
$framesize = 68 '
$swstack = 68 '
$crystal = 16000000 'Quarzfrequenz
$baud = 256000 'RS232 Baudrate
' *** Ausgänge ***
Config Pind.5 = Output 'LED zeigt Datenübertragung auf RS232 an
Led Alias Portd.5
Const An = 0
Const Aus = 1
' *** Variablen***
Dim Kanal As Byte 'AD Kanal der gemessen werden soll
Dim Adcakt(16) As Long 'Array mit 16 Bytes in dem die Messwerte aufaddiert werden
Dim Index As Byte 'Zeiger auf Array Speicherplatz
Dim Wert As Word
Dim Spannung As Single
Dim Loop_counter As Long
' *** ADC ***
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
' Referenzspannung intern 1,1 Volt
Const Referenzspannung = 1.133 'tatsächliche Referenzspannung mit gutem Voltmeter am Ref Pin messen!
Start Adc
'*** HAUPTSCHLEIFE ***
Do
' *** Diese Schleife liest die 16 AD Kanäle und bildet einen Mittelwert ***
For Loop_counter = 1 To 100 ' Anzahl der Messzyklen zur Bildung eines Mittlwertes auf dem µC
For Kanal = 0 To 15 ' Anzahl der ADC Kanäle
If Kanal > 7 Then Kanal = Kanal + 24 ' Die oberen 8 AD Eingänge erreicht ma nicht mit Getadc(8)..Getadc(15)
Wert = Getadc(kanal)
If Kanal > 7 Then Kanal = Kanal - 24 '
Kanal = Kanal + 1 '+1 weil ADC 0-15 aber Array ADCakt 1-16
Adcakt(kanal) = Adcakt(kanal) + Wert 'Arrays beginnen bei 1 , hier 1-16
Kanal = Kanal - 1
Next Kanal
Next Loop_counter
' *** Gesammelte Daten über Serielle Schnittstelle ausgeben ***
Led = An
For Index = 1 To 16
Spannung = Adcakt(index) / 100
Spannung = Spannung * Referenzspannung
Spannung = Spannung / 1024 'berechnen der Spannung am AD Eingang
Print Fusing(spannung , "#.###") ; "|"; 'Bitteschön mit einem Vorkomma und drei Nachkommastellen auf RS232 ausgeben
Adcakt(index) = 0
Next Index
Loop_counter = 0
Print
Led = Aus
Loop