Вс янв 08, 2017 01:38:08
Она расчитывает контрольную сумму.unsigned char w1_crc8(void *p, unsigned char n)
Вс янв 08, 2017 01:49:45
Вс янв 08, 2017 20:19:51
Вс янв 08, 2017 20:29:53
внимательно изучите протокол обмена, а именно, тайм-слоты записи 1 и 0, а так же тайм-слоты чтения 1 и 0.ROMan2947 писал(а):if(bit==1)
{ LOW;
_delay_us(2);
HIGT;
_delay_us(75);
}
else
{
LOW;
_delay_us(75);
HIGT;
_delay_us(2);
}
Вс янв 08, 2017 20:38:06
ARV писал(а):внимательно изучите протокол обмена, а именно, тайм-слоты записи 1 и 0, а так же тайм-слоты чтения 1 и 0.ROMan2947 писал(а):if(bit==1)
{ LOW;
_delay_us(2);
HIGT;
_delay_us(75);
}
else
{
LOW;
_delay_us(75);
HIGT;
_delay_us(2);
}
Вс янв 08, 2017 21:41:33
а без этого никакROMan2947 писал(а):задолбался втыкать в эти графики
вот, например, старенькая моя статеечка, не самый лучший образец, но для начала пойдет. смотрим на картинкуROMan2947 писал(а):с записью что не так?
Вс янв 08, 2017 21:57:06
ARV писал(а):а без этого никакROMan2947 писал(а):задолбался втыкать в эти графикивот, например, старенькая моя статеечка, не самый лучший образец, но для начала пойдет. смотрим на картинкуROMan2947 писал(а):с записью что не так?
и пробуем сопоставить с вашим кодом.
откуда вы взяли 75 мкс задержки при записи или чтении? приведите все задержки к нужным значениям, и все заработает. а не хотите - берите готовую библиотеку 1-wire и тупо пользуйтесь чужими наработками.
Вс янв 08, 2017 22:49:07
Дак он сам и не будет отвечать. Нужно FF-ки ему посылать, после передачи команды. Протокол почитайте внимательнее.ROMan2947 писал(а):но в ответ тишина
init();
write_byt(0x33);
for(i=0;i<8;i++){ // Читаем 8 бат данных
write_byt(0xFF);
}
Пн янв 09, 2017 09:08:57
Аlex писал(а):Дак он сам и не будет отвечать. Нужно FF-ки ему посылать, после передачи команды. Протокол почитайте внимательнее.ROMan2947 писал(а):но в ответ тишина
- Код:
init();
write_byt(0x33);
for(i=0;i<8;i++){ // Читаем 8 бат данных
write_byt(0xFF);
}
С тайм-слотами, на первый взгляд, всё в порядке.
Пн янв 09, 2017 20:33:20
Аlex писал(а):Дак он сам и не будет отвечать. Нужно FF-ки ему посылать, после передачи команды. Протокол почитайте внимательнее.ROMan2947 писал(а):но в ответ тишина
- Код:
init();
write_byt(0x33);
for(i=0;i<8;i++){ // Читаем 8 бат данных
write_byt(0xFF);
}
С тайм-слотами, на первый взгляд, всё в порядке.
Ср янв 11, 2017 18:10:07
Ср янв 11, 2017 18:19:54
Ср янв 11, 2017 18:29:19
Zhuk72 писал(а):Может конфигурацию неправильно задаете.
Как выставляете 9-битный режим? Последовательность команд какая?
Zhuk72 писал(а):1. Может конфигурацию неправильно задаете.
Как выставляете 9-битный режим? Последовательность команд какая?
Смысл в том, что при приемлемом разрешении в 0.5*С на конвертацию затрачивается почти на порядок меньше времени, чем в случае 12-битного режима.
2. Имеете в виду старшие 5 бит старшего байта температуры? Они всегда определяют знак температуры.
Ср янв 11, 2017 18:37:11
send_ds(0xCC); // Skip ROM
send_ds(0x4E); // Write Scratchpad
send_ds(0x00); // TH alarm
send_ds(0x00); // TL alarm
send_ds(0x1F); // Config.
init_ds();
send_ds(0xCC); // Skip ROM
send_ds(0x48); // Copy Scratchpad
delay_ms(10); // Time required for writing to EEPROM.
Ср янв 11, 2017 18:48:27
send_ds(0xCC); // Skip ROM
send_ds(0x4E); // Write Scratchpad
send_ds(0x00); // TH alarm
send_ds(0x00); // TL alarm
send_ds(0x1F); // Config.
init_ds();
send_ds(0xCC); // Skip ROM
send_ds(0x48); // Copy Scratchpad
delay_ms(10); // Time required for writing to EEPROM.
Ср янв 11, 2017 19:13:57
ROMan2947 писал(а):инициализация;
write_byt(0xCC);пропуск ROM\
write_byt(0x1F); четвертый байт пишу 0x1F
write_byt(0x48); копирую
Ср янв 11, 2017 20:12:24
Zhuk72 писал(а):ROMan2947 писал(а):инициализация;
write_byt(0xCC);пропуск ROM\
write_byt(0x1F); четвертый байт пишу 0x1F
write_byt(0x48); копирую
Что вы выводите и как можете контролировать процессы ВНУТРИ датчика я не представляю.
Zhuk72 писал(а):ROMan2947 писал(а):инициализация;
write_byt(0xCC);пропуск ROM\
write_byt(0x1F); четвертый байт пишу 0x1F
write_byt(0x48); копирую
Что вы выводите и как можете контролировать процессы ВНУТРИ датчика я не представляю.
Я же не для красоты выложил свои команды. То, что вы делаете (в цитате выше) - неправильно.
Посмотрите ДШ, там есть диаграмма, по которой и надо прошагать. Ну и читать описание работы внимательнее.
Ср янв 11, 2017 20:31:20
ROMan2947 писал(а):я считываю регистр конфигурации и вывожу код на порт МК и с помощью лампочек смотрю, что там хранится. при 9 битном режиме мне выводит 00011111, а при 12 01111111, что тут не понятного!?
ROMan2947 писал(а):...главный вопрос остается в стороне... при одной и той же температуре меняется ли двоичный код температуры в зависимости от разрешения?
Ср янв 11, 2017 20:41:50
Zhuk72 писал(а):ROMan2947 писал(а):я считываю регистр конфигурации и вывожу код на порт МК и с помощью лампочек смотрю, что там хранится. при 9 битном режиме мне выводит 00011111, а при 12 01111111, что тут не понятного!?
Непонятно было первое описание процесса.ROMan2947 писал(а):...главный вопрос остается в стороне... при одной и той же температуре меняется ли двоичный код температуры в зависимости от разрешения?
Измеряйте, выводите сырые данные при разных режимах и сравнивайте.
Можете и в Протеусе проверить, он эти датчики нормально симулирует.
Ср янв 11, 2017 21:01:03