#define true ('/'/'/')
#define false ('-'-'-')
Wenn du die RP6Control_I2CMasterLib verändern willst, könntest du die Funktion getAllSensors() so ändern:Aber wie genau meinst du das mit "allein in ein Byte"? Meinst du sowas wie "InOut=sensorBuf[29]"?
Dann stehen die I/Os in der Variablen leds (global als uint8_t definieren!).Code:void getAllSensors(void) { I2CTWI_readRegisters(I2C_RP6_BASE_ADR, I2C_REG_POWER_LEFT, sensorBuf, 27); mleft_power = sensorBuf[0]; mright_power = sensorBuf[1]; mleft_speed = sensorBuf[2]; mright_speed = sensorBuf[3]; mleft_des_speed = sensorBuf[4]; mright_des_speed = sensorBuf[5]; mleft_dist = sensorBuf[6] + (sensorBuf[7]<<8); mright_dist = sensorBuf[8] + (sensorBuf[9]<<8); adcLSL = sensorBuf[10] + (sensorBuf[11]<<8); adcLSR = sensorBuf[12] + (sensorBuf[13]<<8); adcMotorCurrentLeft = sensorBuf[14] + (sensorBuf[15]<<8); adcMotorCurrentRight = sensorBuf[16] + (sensorBuf[17]<<8); adcBat = sensorBuf[18] + (sensorBuf[19]<<8); adc0 = sensorBuf[20] + (sensorBuf[21]<<8); adc1 = sensorBuf[22] + (sensorBuf[23]<<8); leds = sensorBuf[26]; }
Genau.Dort steht ja dann so was wie 0100 (LED 2 an) !?
Gruß
Dirk
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
Lesezeichen