Hallo!
Ich hab da ein kleines Problem mit einer Function. Ich möchte, je nach dem was über die SPI-Schnittstelle angekommen ist, einen ADC auslesen.
Da ich 3 Werte des ADC auslesen möchte und einen Mittelwert daraus berechnen will, hab ich mir gedacht das ich dafür eine Funktion benutze (hab ich bisher noch nie gemacht).
In der Simulation klappt das aber nicht so recht, hier mal ein paar Code-Fetzen:
Laut dem Simulator von Bascom wird anstatt der Zahl "32" nur "186" übergeben, und das Bit im Register Adcsr.adsc (also ADC Starten) wird auch nicht gesetzt.Code:Declare Function Adcx(byval Adcnummer As Byte) As Byte . . Adcsr = &B10000101 'ADC konfigurieren . . Select Case A 'Je nachdem was über SPI gekommen ist... Case 0 : C = Adcx(32) Case 1 : C = Adcx(&B00100001) End Select . . Function Adcx(byval Adcnummer As Byte) As Byte Local B0 As Byte , B1 As Byte , B2 As Byte , B3 As Byte , B4 As Byte Local X0 As Byte Admux = Adcnummer X0 = 0 For B4 = 0 To 2 Adcsr.adsc = 1 While Adcsr.adif = 0 Wend Select Case B4 Case 0 : B1 = Adch Case 1 : B2 = Adch Case 2 : B3 = Adch End Select Next B0 = B1 + B2 B0 = B0 + B3 B0 = B0 / 3 Adcx = B0 End Function
In folge dessen kommt das Programm auch nicht mehr aus der While...Wend Schleife (wenn der ADC nicht läuft kann das Flat Adif auch nicht gesetzt werden).
Kann ich überhaupt Zahlen in eine Function übergeben und dort Register ändern?
MfG
Basti







Zitieren

Lesezeichen