Проблема 1-wire ... РЕШЕНА
Здравствуйте!
Делаю "мозги" для блока питания carpc. Решил сэмулировать все в протеусе. Проблема возникла при опросе датчика температуры DS18B20. При пошаговой отладке, видно, что "Reset" проходит, а вот при передачи команды в DS18B20 видно, что когда процессор выставляет "1" - DS18B20 садит ее на "0". Хотелось бы разобраться в чем дело.....
Вопрос РЕШЕН. Просто в разрыв МК и DS18B20 поставил диод катодом к МК. Кому интересно выложил отлаженную схему мозгов для CARPC БП.
Алгоритм работы следующий:
1. При вкл зажигания проверяется а температура окружающей среды у нас в норме?
Если да, то вкл реле (которое вкл комп) и светодиод будет гореть.
Если нет, то мигает светодиод учащенно.
Когда температура придет в норму - вкл реле, светодиод горит.
2. Если во время работы компа температура воздуха снизилась - то светодиод будет учащенно мигать, но комп не откл.
3. При отключении зажигания начинает мигать светодиод в течении времени отключения и потом рэле откл и светодиод гаснет.
4. Если зажигание вкл в течении времени отключения, то светодиод опять начнет гореть - будет рабочий режим.
Время выключение и граница температуры запоминаются в ячейках Th и Tl DS18B20 соответственно.
1-ца в Th соответствует ~25сек времени. Tl - температура в градусах (число shortint).
Для программирования этих значений в DS18B20 сделал интерфейс у PIC12C509A - Входы GP0 (Data) и GP1 (CLK).
В рабочем режиме на GP0="0" а GP1="1". При подаче на GP1="0" активируется режим записи в DS18B20. GP0="1" - означает что мк готов принять команду. Команд для обмена с мк три штуки. Протокол обмена - подаем байт побитно на GP0 младший разряд первый. Бит подтверждаем импульсом 0-›1-›0 на GP1. Команды следующие:
00h + после подачи команды GP1="1" = переход в рабочий режим.
01h + Th + Tl = запись значений Th и Tl во внутренний буфер.
02h + Чтение(9 байт) = чтение 9 байт из DS18B20.
04h + ожидание на GP0="1" = запись буфера в DS18B20.
после каждой команды мк будет просить следующую команду.
Последний раз редактировалось Valentin8080; 20.07.2010 в 07:29.
|