Arduino MKR1000 a I2C čidlo teploty a vlhkosti HIH8120 pauza

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Enkoder
Příspěvky: 12
Registrován: 29 bře 2016, 02:00

Arduino MKR1000 a I2C čidlo teploty a vlhkosti HIH8120 pauza

#1 Příspěvek od Enkoder »

Ahoj, chtěl bych číst teplotu a vlhkost I2C čidla HIH 8120 od Honeywellu arduinem MKR1000. Našel jsem knihovnu HIH61xx s , která mi hlásí při kompilaci v arduinu IDE chybu:
***
Documents\Arduino\libraries\SoftWire-1.0.4\src\SoftWire.cpp:1:25: fatal error: util/atomic.h: No such file or directory #include <util/atomic.h>
compilation terminated.
exit status 1
Nastala chyba při kompilaci u desky Arduino/Genuino MKR1000.
***
Problém je možná v tom, že ta knihovna není určená pro MKR1000...

Zkoušel jsem i následující kód, který chodí, ale je nějak nutno zajisti při komunikaci přes I2C pauzu asi 50ms mezi oslovením čidla masterem a čtením dat z čidla, jinak čidlo to hlásí/posílá "nepřipravená data v čidle"

***
#include <Wire.h>

void setup() {
Serial.begin(9600); // initialize serial communication
// Wire.setClock(100000);
Wire.begin(); // join i2c bus (address optional for master)
}

void loop() {

Wire.requestFrom(39,4,1); // request 4 bytes from slave device

while(Wire.available()) // slave may send less than requested
{
char c = Wire.read(); // receive a byte as character
Serial.println(c, HEX); // print
Serial.println(c, BIN);
Serial.println("----");
}
delay(2000);
}
***

Wire.requestFrom osloví čidlo adresou a data čte okamžitě. Tím nejsou data v čidle připravena. Proto jsem otevřel knihovnu wire.cpp a snažil se tam nasadit nějaký ten delay (asi špatně), což se nepodařilo.

Jak tedy postupovat, abych zajistil tu pauzu 50us?
Je nutno to programovat od základu? Je to uP SAMD21 v MKR1000

Díky

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“