Как я побеждал I2C (STM8L)
Убил сегодня весь день на то, чтобы заставить дискавери читать датчик sht21 и выводить показания на LCD стекляшку.
В общем-то первые результаты, похожие на адекватные, появились довольно скоро. Но на то, чтобы заставить эту шляпу не зависать каждые пять минут, пришлось убить сотни времени.
На данный момент поделие работает уже 15 минут и даже ни разу не зависло (постучал по деревяшке, чтоб не сглазить :)). А зависало оно потому, что датчик внезапно взбыкивал и давал NACK. Поделие ожидало флага завершения передачи в бесконечном цикле — нормальная ситуация, казалось-бы. Но вэтих ваших (теперь уже моих) STM8, если нам не сказали ACK, поднимется флаг AF (Acknowledge Fail), а флаг готовности — нет. (Вообще i2c там укуреный чуть менее, чем совсем. В AVR был явно проще)
Но с фига ему <датчику>, спрашивается, не подавать ACK? Датчик исправен (проверял через FT232), скорость не велика — 10кГц. После долгих плясок выяснилось, что если уменьшить скорость до 1кГц, то глюк пропадает. Но блин, чо ему на 10к не работается-то?!11
Завтра буду пытаться осознать тот black magic, который сейчас крутится в процессоре и как-то его оптимизировать (4к4 байта кода на выходе!).
Алсо, ловите креативные держалки для платы:


За сим разрешите откланятся,
В общем-то первые результаты, похожие на адекватные, появились довольно скоро. Но на то, чтобы заставить эту шляпу не зависать каждые пять минут, пришлось убить сотни времени.
На данный момент поделие работает уже 15 минут и даже ни разу не зависло (постучал по деревяшке, чтоб не сглазить :)). А зависало оно потому, что датчик внезапно взбыкивал и давал NACK. Поделие ожидало флага завершения передачи в бесконечном цикле — нормальная ситуация, казалось-бы. Но в
Но с фига ему <датчику>, спрашивается, не подавать ACK? Датчик исправен (проверял через FT232), скорость не велика — 10кГц. После долгих плясок выяснилось, что если уменьшить скорость до 1кГц, то глюк пропадает. Но блин, чо ему на 10к не работается-то?!11
Завтра буду пытаться осознать тот black magic, который сейчас крутится в процессоре и как-то его оптимизировать (4к4 байта кода на выходе!).
Алсо, ловите креативные держалки для платы:


За сим разрешите откланятся,
sbi MCUCR, SE
sleep
- 0
- 23 июля 2011, 01:23
- dcoder
С датчика готовая влажность приходит, или ее надо считать?
Нужно ли приводить ее к текущей температуре?
ОМГ, что там за хаос на заднем фоне 0_0
Нужно ли приводить ее к текущей температуре?
ОМГ, что там за хаос на заднем фоне 0_0
К температуре приводить не надо,
а считать по такой формуле:
Влажность [%] = -6 + 125*(CODE/65536)
Упрощается до этого:
На заднем фоне балкон, куда складируется все то, что не получилось вывезти на дачу :) На самом деле хаос там не такой уж страшный.
а считать по такой формуле:
Влажность [%] = -6 + 125*(CODE/65536)
Упрощается до этого:
RH = -6 + raw_RH/524;
На заднем фоне балкон, куда складируется все то, что не получилось вывезти на дачу :) На самом деле хаос там не такой уж страшный.
Комментарии (12)
RSS свернуть / развернуть