Slacky
Member
Разобрался. У чипа есть так называемые Analog registers (0x35 ~ 0x3c) и этим можно воспользовать ...Добрый день.
А у tlsr8258 можно как-то отследить, что мы вышли из DEEP_SLEEP, а не просто перегрузились?
Разобрался. У чипа есть так называемые Analog registers (0x35 ~ 0x3c) и этим можно воспользовать ...Добрый день.
А у tlsr8258 можно как-то отследить, что мы вышли из DEEP_SLEEP, а не просто перегрузились?
Попробуйте так.У 8258 есть внутренний температурный сенсор.
The TLSR8258 integrates a temperature sensor and it’s used in combination with the SAR ADC to detect real-time temperature
Есть где-то пример, как его использовать?
Спасибо, нашел где поглядеть. Но не работает. Не могу понять вот здесь.Попробуйте так.
void adc_temp_init(void)
Могут быть не точности пример для 8278 но должно работать..
adc_set_ain_channel_differential_mode(ADC_MISC_CHN, gpio_num, GND);
adc_set_ain_channel_differential_mode(ADC_MISC_CHN, TEMSENSORP, TEMSENSORN);
Добился каких-то значений (до этого ноль adc_code всегда возвращал).Спасибо, нашел где поглядеть. Но не работает. Не могу понять вот здесь.
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 175, adc_code: 153
temperature: 564
Взял у жены фен. Вроде реагирует.Добился каких-то значений (до этого ноль adc_code всегда возвращал).
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 174, adc_code: 152
temperature: 564
adc_sample_and_get_result: 175, adc_code: 153
temperature: 564
adc_sample_and_get_result: 167, adc_code: 146
temperature: 565
adc_sample_and_get_result: 161, adc_code: 141
temperature: 565
adc_sample_and_get_result: 159, adc_code: 139
temperature: 565
adc_sample_and_get_result: 158, adc_code: 138
temperature: 565
adc_sample_and_get_result: 158, adc_code: 138
temperature: 565
adc_sample_and_get_result: 158, adc_code: 138
temperature: 565
adc_sample_and_get_result: 149, adc_code: 130
temperature: 566
adc_sample_and_get_result: 148, adc_code: 129
temperature: 566
adc_sample_and_get_result: 148, adc_code: 129
temperature: 566
adc_sample_and_get_result: 150, adc_code: 131
temperature: 566
adc_sample_and_get_result: 149, adc_code: 130
temperature: 566
adc_sample_and_get_result: 151, adc_code: 132
temperature: 566
adc_sample_and_get_result: 150, adc_code: 131
temperature: 566
adc_sample_and_get_result: 135, adc_code: 118
temperature: 567
adc_sample_and_get_result: 135, adc_code: 118
temperature: 567
adc_sample_and_get_result: 133, adc_code: 116
temperature: 568
adc_sample_and_get_result: 133, adc_code: 116
temperature: 568
adc_sample_and_get_result: 133, adc_code: 116
temperature: 568
adc_sample_and_get_result: 138, adc_code: 121
temperature: 567
adc_sample_and_get_result: 145, adc_code: 127
temperature: 566
adc_sample_and_get_result: 121, adc_code: 106
temperature: 569
adc_sample_and_get_result: 159, adc_code: 139
temperature: 565
adc_sample_and_get_result: 161, adc_code: 141
temperature: 565
adc_sample_and_get_result: 177, adc_code: 155
temperature: 564
adc_sample_and_get_result: 175, adc_code: 153
temperature: 564
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 122, adc_code: 107
temperature: 569
adc_sample_and_get_result: 122, adc_code: 107
temperature: 569
adc_sample_and_get_result: 121, adc_code: 106
temperature: 569
adc_sample_and_get_result: 122, adc_code: 107
temperature: 569
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
adc_sample_and_get_result: 176, adc_code: 154
temperature: 564
s32 getTemperatureCb(void *arg) {
u16 temperature = adc_temp_result();
printf("temperature: %d\r\n", temperature);
return 0;
}
void adc_temp_init() {
adc_init();
adc_power_on_sar_adc(1);
adc_set_vref_vbat_divider(ADC_VBAT_DIVIDER_OFF);//set Vbat divider select,
adc_set_ain_chn_misc(TEMSENSORP, TEMSENSORN);
adc_set_ain_pre_scaler(ADC_PRESCALER_1);//adc scaling factor is 1 or 1/8
//enable temperature sensor
analog_write(0x00, (analog_read(0x00)&0xef));
}
extern u8 adc_code;
static u16 adc_temp_result() {
u16 adc_temp_value = 0;
printf("adc_sample_and_get_result: %d, adc_code: %d\r\n", adc_sample_and_get_result(), adc_code);
adc_temp_value = 579-((adc_code * 840)>>13);
return adc_temp_value;
}
adc_sample_and_get_result: 54, adc_code: 122
temperature: 567
adc_sample_and_get_result: 54, adc_code: 124
temperature: 567
adc_sample_and_get_result: 54, adc_code: 125
temperature: 567
adc_sample_and_get_result: 54, adc_code: 125
temperature: 567
adc_sample_and_get_result: 54, adc_code: 127
temperature: 566
adc_sample_and_get_result: 56, adc_code: 136
temperature: 566
adc_sample_and_get_result: 58, adc_code: 153
temperature: 564
adc_sample_and_get_result: 59, adc_code: 159
temperature: 563
adc_sample_and_get_result: 60, adc_code: 164
temperature: 563
adc_sample_and_get_result: 60, adc_code: 167
temperature: 562
adc_sample_and_get_result: 60, adc_code: 168
temperature: 562
adc_sample_and_get_result: 61, adc_code: 171
temperature: 562
adc_sample_and_get_result: 61, adc_code: 170
temperature: 562
adc_sample_and_get_result: 61, adc_code: 171
temperature: 562
adc_sample_and_get_result: 60, adc_code: 168
temperature: 562
adc_sample_and_get_result: 61, adc_code: 172
temperature: 562
adc_sample_and_get_result: 61, adc_code: 172
temperature: 562
adc_sample_and_get_result: 61, adc_code: 172
temperature: 562
adc_sample_and_get_result: 60, adc_code: 168
temperature: 562
adc_sample_and_get_result: 58, adc_code: 154
temperature: 564
adc_sample_and_get_result: 57, adc_code: 145
temperature: 565
adc_sample_and_get_result: 56, adc_code: 141
temperature: 565
adc_sample_and_get_result: 56, adc_code: 137
temperature: 565
adc_sample_and_get_result: 56, adc_code: 135
temperature: 566
adc_sample_and_get_result: 55, adc_code: 134
temperature: 566
adc_sample_and_get_result: 56, adc_code: 135
temperature: 566
adc_sample_and_get_result: 55, adc_code: 134
temperature: 566
adc_sample_and_get_result: 55, adc_code: 133
temperature: 566
adc_sample_and_get_result: 55, adc_code: 134
temperature: 566
adc_sample_and_get_result: 55, adc_code: 132
temperature: 566
adc_sample_and_get_result: 55, adc_code: 134
temperature: 566
На форуме телинка кто-то интересовался, как на 825х использовать внутренний датчик температуры. Они его отправили в примеры driver_sdk_825x. Но! Там есть примеры только для B80 и B87. Для B85 примеров нет. В общем я по аналогии сделал, только немного поигрался в прескаллер, взял не 1, а 1F8, так как в других вариантах возвращалось число меньше 130. Ну и в процессе проверки с феном и нагревом немного подкорректировал коэффициент с 0.51 на 0.58. В таком варианте температура возвращается более менее с близким к реальныму значением. Большая точность не нужна, нужно отследить критичное повышение температуры, например возгорание.
void adc_temp_init() {
drv_adc_init();
adc_set_resolution(ADC_MISC_CHN, RES14);
adc_set_vref_chn_misc(ADC_VREF_1P2V);
adc_set_ain_channel_differential_mode(ADC_MISC_CHN, TEMSENSORP, TEMSENSORN);
adc_set_vref_vbat_divider(ADC_VBAT_DIVIDER_OFF);//set Vbat divider select,
adc_set_ain_pre_scaler(ADC_PRESCALER_1F8);
drv_adc_enable(ON);
//enable temperature sensor
// analog_write(0x00, (analog_read(0x00)&0xef));
analog_write(0x07, analog_read(0x07)&0xEF);
}
static u16 adc_temp_result() {
u16 adc_temp_value;
u32 adc_data = 0;
adc_data = drv_get_adc_data();
if (adc_data > 255) adc_data = 255;
adc_temp_value = ((adc_data*100 - 130*100)/58 - 40) * 100 ;
adc_temp_value |= (adc_data*100 - 130*100)%58;
return adc_temp_value;
}
Причины описаны ранее, но вы так и не понялиТак я не понял почему нету ещё этих плат в ArduinoIDE?
Arduino не поддерживает концепцию малопотребляющих устройств.Надо выкладывать, без поддержки на первом этапе.
Как раз "общественный разум" и прочие "сообщества" ничего и никогда не осилили. Это начинает работать только тогда, когда кто-то один или двое предоставят всё готовое за свой счет и смогут осилить массу негатива от лемингов.Общественный разум сам осилит. Всё остальное.
Надо двигать, надо развивать. Современные методы и технологии.
Ну что тут поделаешь, наш pvvx таков как есть, другого не имеемНегатив не берётся из ниоткуда у него есть причины. И некоторые причины в авторах.
На STM8 и ch55x тоже нет полноценного бесплатного компилятора но прилепили
Среда Arduino очень нравится таким "разработчикам", для описания способностей которых идеально подходит цитата из анекдота: "Чукча не читатель, Чукча - писатель!"Вот проект Arduino поэтому и вырос, там начали как раз с грамотного описания самостоятельного старта.