uint8_t sensorBuf[24];
sensorBuf[] ist nicht groß genug für leds = sensorBuf[26];
Danke dir.
Er kompiliert zwar, bringt aber folgenden Fehler:
[code]Compiling: ../../Library/RP6control/RP6Control_I2CMasterLib.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../Library/RP6control/RP6Control_I2CMasterLib.lst -I../../Library -I../../Library/RP6control -I../../Library/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_I2CMasterLib.o.d ../../Library/RP6control/RP6Control_I2CMasterLib.c -o ../../Library/RP6control/RP6Control_I2CMasterLib.o
../../Library/RP6control/RP6Control_I2CMasterLib.c: In function 'getAllSensors':
../../Library/RP6control/RP6Control_I2CMasterLib.c:172: warning: array subscript is above array bounds[\code]
Was kann ich denn gegen das ADC-Problem auf der M32 machen?
Wie schreibe ich deren Werte in zwei Buffer?
Grüße
uint8_t sensorBuf[24];
sensorBuf[] ist nicht groß genug für leds = sensorBuf[26];
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
ahh, klar. Danke !!!
Das hab ich Vergessen
Und die ADC-Sache?
Hi!
Ich möchte gerade die ADCs der M128 via BT senden.
Habe dafür folgendes im Manual gefunden:
Ich mache das mit Fabian E.'s Code:Code:Syntax word ADC_Set(byte v_ref,byte channel); Sub ADC_Set(v_ref As Byte,channel As Byte) As Word Beschreibung Die Funktion ADC_Set initialisiert den Analog-Digital_Wandler. Die Referenzspannung und der Messkanal werden ausgewählt, und der A/D Wandler für die Messungen vorbereitet. Der Meßwert wird danach mit ADC_Read() ausgelesen. Parameter channel Portnummer (0..7) des ADC (Port A.0 bis A.7 bei Mega32, Port F.0 bis F.7 bei Mega128) v_ref Referenzspannung (siehe Tabelle)
Daher, denke ich, muss es dann folgendermaßen aussehen:Code:print("Bat:"); printInteger(adcBat); print("\n"); oldBat = adcBat;
Leider kommt da nix bei mir an...Code:ADC_Set(ADC_VREF_VCC,0) print("ADC0_M128:"); printInteger(ADC_Read(void)); print("\n");
Vg,
Fabian
Was ist "nix"? Null?
Was hast du an PF0 (ADC-Stecker Pin 4) angeschlossen?
Gruß
Dirk
Gar nix:Code ist wie oben, erst et, dann print(read).Code:#*#*# [DATA] PowerL:3 LightL:887 LightR:875 [/DATA] [DATA] PowerL:4 LightL:886 LightR:874 Temp:2469 [/DATA]
mit den Status LEDs der Base klappts auch nicht:
Code:print("LEDs_Base:"); printInteger(I2C_REG_LEDS); print("\n");
Also das mit den LEDs klappt! Doofer fehler.
Aber wie lese ich denn vernünftig die ganzen ADCs der M128 aus und sende sie?
Vg
> printInteger(ADC_Read(void));
void übergibt man i.d.R. nicht - das ist nur nen platzhalter bei der Deklaration von Funktionen und steht für NIX.
Aber das nur nebenbei.
Teste es doch einfach mal mit dem Beispielprogramm Example_03_IO_Threads
Da werden alle ADCs ausgelesen (den Start Taster paar mal drücken!).
MfG,
SlyD
Danke dir, hab das mal gemacht:
erste Frage: Was soll das tmp[16]?Code:char tmp[16]; word result; ADC_Set(ADC_VREF_VCC,0); // Kanal wählen... Thread_Delay(25); // ... warten ... result = ADC_Read(); // ... und auslesen. // Messwert ausgeben: print("ADC_M128(0): "); Str_WriteInt(result,tmp,0); Serial_WriteText(0,tmp); print("\n"); ADC_Set(ADC_VREF_VCC,7); // Kanal wählen... Thread_Delay(25); // ... warten ... result = ADC_Read(); // ... und auslesen. // Messwert ausgeben: print("ADC_M128(7): "); Str_WriteInt(result,tmp,0); Serial_WriteText(0,tmp); print("\n");
Zweite: Wo kann ich das Setzen des ADCs (ADC_Set(ADC_VREF_VCC,0) ) und das thread_delay sonst hintun?
Ich brauche ja nach dem ADC-anschalten etwas Zeit, um die Messung abzuwarten... oder kann man das einfach rauslassen?
Lesezeichen