- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 23

Thema: RP6 Slave und M32 Slave

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Aber wie genau meinst du das mit "allein in ein Byte"? Meinst du sowas wie "InOut=sensorBuf[29]"?
    Wenn du die RP6Control_I2CMasterLib verändern willst, könntest du die Funktion getAllSensors() so ändern:
    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];
    }
    Dann stehen die I/Os in der Variablen leds (global als uint8_t definieren!).

    Dort steht ja dann so was wie 0100 (LED 2 an) !?
    Genau.
    Gruß
    Dirk

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    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

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    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!

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    ahh, klar. Danke !!!
    Das hab ich Vergessen

    Und die ADC-Sache?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi!
    Ich möchte gerade die ADCs der M128 via BT senden.
    Habe dafür folgendes im Manual gefunden:
    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)
    Ich mache das mit Fabian E.'s Code:
    Code:
                  print("Bat:");
                  printInteger(adcBat);
                  print("\n");
                  oldBat = adcBat;
    Daher, denke ich, muss es dann folgendermaßen aussehen:
    Code:
                  ADC_Set(ADC_VREF_VCC,0)
                  print("ADC0_M128:");
                  printInteger(ADC_Read(void));
                  print("\n");
    Leider kommt da nix bei mir an...

    Vg,
    Fabian

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Was ist "nix"? Null?
    Was hast du an PF0 (ADC-Stecker Pin 4) angeschlossen?
    Gruß
    Dirk

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Gar nix:
    Code:
    #*#*#
    [DATA]
    PowerL:3
    LightL:887
    LightR:875
    [/DATA]
    [DATA]
    PowerL:4
    LightL:886
    LightR:874
    Temp:2469
    [/DATA]
    Code ist wie oben, erst et, dann print(read).

Ähnliche Themen

  1. Slave Transmitter und Slave Receiver Mode
    Von masasibe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 26.02.2011, 19:55
  2. I2C Slave
    Von Jada im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 19.06.2010, 11:47
  3. Slave-Master-Slave übertragung geht nicht
    Von Dämmi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.11.2008, 00:08
  4. I2C-Slave
    Von liggi im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 02.01.2008, 16:02
  5. Pic als Slave am I2C
    Von kalletronic im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 04.08.2006, 19:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress