BMP180 barometer

TI LaunchPad specifieke Software.
Gebruikers-avatar
Berichten: 136
Geregistreerd: 06 Jun 2012, 15:45

BMP180 barometer

Berichtdoor hmjswt » 31 Dec 2016, 13:20

Hallo,

BMP180 code geplaatst op mijn website : http://www.swtcomp.com

Groet,
Henk Siewert

Afbeelding

Afbeelding

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: BMP180 barometer

Berichtdoor Koepel » 31 Dec 2016, 15:55

Het is niet nodig om te wachten na een Wire.requestFrom().

Je code heb ik bekeken en in readBytes() zag ik een wacht-lus na de Wire.requestFrom().

De Wire.requestFrom() doet een volledige I2C transaction en wacht tot de I2C transaction helemaal voorbij en afgerond is. De ontvangen data zit dan in een buffer in de Wire library. De return waarde is het aantal ontvangen bytes.

De hardware van de I2C bus hoort natuurlijk altijd goed te zijn, maar als er iets mis gaat op de bus, dan kun je een kleinere waarde terug krijgen (op dit moment is de waarde nul bij een bus error). Ook Wire.available() geeft dan datzelfde getal terug. Met jouw while-loop zou de sketch daar altijd in blijven hangen.

Je zou dit kunnen doen:
Code: Alles selecteren
  Wire.beginTransmission(BMP180_ADDR);
  Wire.write(values[0]);
  _error = Wire.endTransmission();
  if (_error == 0)
  {
    int n = Wire.requestFrom(BMP180_ADDR,length);
    if (n==length)
    {
      // goed ontvangen
      Wire.readBytes( values, n);
    }
    else
    {
      // niet goed ontvangen
    }
    ....


Of je kunt toch Wire.available() gebruiken:
Code: Alles selecteren
    Wire.requestFrom(BMP180_ADDR,length);
    int n = Wire.available();
    if (n==length)


In de Stream class zit ook een readBytes(). Die gebruik ik om I2C data te lezen. Dat is toevallig dezelfde naam als jij hebt voor die functie. Misschien is die Wire.readBytes() toch niet zo handig, daar zit een timeout in met millis(), terwijl die voor de Wire library niet nodig is. Een paar apart Wire.read() is misschien beter.
Stream::readBytes() : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Stream.cpp
Laatst gewijzigd door Koepel op 31 Dec 2016, 16:00, in totaal 1 keer gewijzigd.

Gebruikers-avatar
Berichten: 136
Geregistreerd: 06 Jun 2012, 15:45

Re: BMP180 barometer

Berichtdoor hmjswt » 31 Dec 2016, 16:00

Hallo,

Ach, zoals gewoonlijk zijn er altijd meerdere wegen die naar Rome leiden...

Groet,
Henk Siewert
Laatst gewijzigd door hmjswt op 31 Dec 2016, 16:08, in totaal 1 keer gewijzigd.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: BMP180 barometer

Berichtdoor Koepel » 31 Dec 2016, 16:02

Ik probeer alleen maar de helpen om je code te verbeteren hoor. Die while-loop is totaal overbodig en kan je sketch stoppen. Maar het staat je vrij om foute code te schrijven.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: BMP180 barometer

Berichtdoor Koepel » 04 Jan 2017, 20:07

@hmjswt, Sorry, als je door mij niet meer reageert :oops:
De website http://www.swtcomp.com is ook weer leeg :(
De bedoeling van dit forum lijkt me om samen iets moois te maken.
hmjswt, come back ! https://www.youtube.com/watch?v=z8l-ERmiQjY&start=49

Soms lijkt het wel alsof ik een missie heb om de Wire library goed te gebruiken. Google maar op: github koepel
Doordat het vaak van elkaar wordt overgeschreven worden de fouten ook overgeschreven. Als ik er iets van zeg, dan zijn sommigen blij dat een onnodige I2C transactie op de bus verdwijnt of dat een onnodige wachtlus verwijdert kan worden.

En dat terwijl ik de Wire library helemaal geen goede library vind. De Wire library voor de Teensy gaat gelukkig wel in de goede richting op met non-blocking functies.

Het wachten na een Wire.requestFrom() ziet er voor mij hetzelfde uit als dit:
Code: Alles selecteren
void myFunction()
{
  char buffer[10];
  while( sizeof( buffer) < 10);  // wait until buffer is created on the stack.
  ...
}
Misschien geen 'fout' in de betekenis van een 'bug', maar het staat zo raar.

Gebruikers-avatar
Berichten: 136
Geregistreerd: 06 Jun 2012, 15:45

Re: BMP180 barometer

Berichtdoor hmjswt » 11 Jan 2017, 14:14


Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: BMP180 barometer

Berichtdoor shooter » 11 Jan 2017, 20:41

kenny says i kill you.
wel leuk ja die jeff.
en ach jullie allebei hebben een punt, ik zou zeggen ga eens bij elkaar koffie drinken in rome.

geintje,
hou de lol erin het is maar een hobby hoor,
paul deelen
shooter@home.nl

Terug naar Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten