09.11.2011, 23:43
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
Пока что все процедуры возвращают One_Wire_Error_No_Echo ![Обижен](images/smilies/icon_beee.gif)
Датчик подключен к РВ1, правильно ли я её прописал?
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
Зачем два раза? Верно будет только последнее значение. А надо так:
Код:
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);[/QUOTE] |
One_Wire_Error_No_Echo говорит о том, что либо датчик не возвращает RESPONSE после RESET, либо нарушены временные интервалы.
|
|
|
|
10.11.2011, 08:33
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
А как же IPU? Ведь надо же ногу притягивать к плюсу? Или OUT_PP её сам притянет?
Сообщение от Easyrider83
|
что либо датчик не возвращает RESPONSE после RESET
|
Это верно и для того случая, когда датчика нет вообще?
Сообщение от Easyrider83
|
либо нарушены временные интервалы.
|
Какие? Я только одну функцию вызвал грубо говоря в таком виде LCD_WriteNm(Conversation_skip_rom(порт,нога));
|
|
|
|
10.11.2011, 10:41
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
А как же IPU? Ведь надо же ногу притягивать к плюсу? Или OUT_PP её сам притянет?
|
OUP_PP - это логика с двумя определенными состояниями - либо открыт верхний транзистор, либо нижний. Чтобы использовать внутренний PULL UP или PULL DOWN, надо установить порт в режим GPIO_Mode_IPU или GPIO_Mode_IPD и записать в регистр BSRR или BRR единичку соответственно для каждого пина. Например, для включения верхней подтяжки на ноге 5 порта А надо:
Цитата:
|
Это верно и для того случая, когда датчика нет вообще?
|
Да, эта ошибка звучит, как нет ответа 1-Wire устройства. На паузу 480мкс должен быть ответ. Причин может быть много. Одна из них - не правильно отрабатывает процедура delay_us. В header файле программных задержек требуется указать тактовую частоту процессора. Проверьте, возможно проблема в этом. Если программа генерит паузу не 480мкс, а, скажем, 240 - конечно, ответа не будет.
Ну и конечно всякие нюансы типа неисправного датчика, неправильно сконфигурированного порта, соплей на плате...
Сообщение от CMaxx22
|
Какие? Я только одну функцию вызвал грубо говоря в таком виде LCD_WriteNm(Conversation_skip_rom(порт,нога));
|
Не, что там вызывается в реалтайме, до лампочки. Проверьте тактовую частоту, как я сказал.
Замените вашу процедуру 1-Wire reset на эту:
Код:
|
unsigned int One_Wire_Reset(GPIO_TypeDef* GPIOx, unsigned long PIN)
{
unsigned int tmp;
PIN_FLOAT_INPUT(GPIOx, PIN);
if (PIN_IN(GPIOx,PIN)==0) return One_Wire_Bus_Low_Error;
PIN_OUT_PP(GPIOx,PIN);
PIN_OFF(GPIOx,PIN);
if (PIN_IN(GPIOx,PIN)==0) return One_Wire_Error_No_Low_Level;
delay_us(Time_Reset_Low);
PIN_ON(GPIOx,PIN);
PIN_FLOAT_INPUT(GPIOx,PIN);
delay_us(Time_Pulse_Delay_High);
if ((PIN_IN(GPIOx,PIN))==0) tmp=One_Wire_Success;
else tmp=One_Wire_Error_No_Echo;
delay_us(Time_After_Reset);
return tmp;
} |
Добавлена выделенная красным строка. В файле 1-Wire.h надо эту ошибку задефайнить:
Код:
|
#define One_Wire_Error_No_Low_Level 0xFFEF |
Это будет проверка, что пин нормально управляется.
Последний раз редактировалось Easyrider83; 10.11.2011 в 10:52.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
10.11.2011, 12:51
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от Easyrider83
|
Чтобы использовать внутренний PULL UP или PULL DOWN, надо установить порт в режим GPIO_Mode_IPU или GPIO_Mode_IPD и записать в регистр BSRR или BRR единичку соответственно для каждого пина. Например, для включения верхней подтяжки на ноге 5 порта А надо:
|
Тоесть если датчик питается отдельно и напрямую подключен через РВ1 то процедура инициализации для этой ноги чтобы датчик пахал будет:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIOB-›BSRR=(1‹‹1);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
Так?
Сообщение от Easyrider83
|
Да, эта ошибка звучит, как нет ответа 1-Wire устройства.
|
Когда вызываешь DS1822_Start_Conversion_Skip_Rom из DS1822.c то она возвращает One_Wire_Error_No_Echo. Если вызвать процедуру One_Wire_Reset из 1-Wre.c тогда возвращается One_Wire_Bus_Low_Error...
Такаяже картина при добавлении в код One_Wire_Error_No_Low_Level...
Сообщение от Easyrider83
|
Одна из них - не правильно отрабатывает процедура delay_us. В header файле программных задержек требуется указать тактовую частоту процессора. Проверьте, возможно проблема в этом.
|
Вроде указано 24мгц (в герцах), а какая частота у STM32? Кварц вроде на 8мгц стоит и ещё на 24, но он помоему к PL2303 относится.
|
|
|
|
10.11.2011, 15:25
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
CMaxx22, а физически на пине единичка висит?
|
|
|
|
10.11.2011, 16:00
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Я не понимаю... Физически ножка никуда не подключена, только к датчику... Ну ещё IPU вроде должно давать чтото.
Последний раз редактировалось CMaxx22; 10.11.2011 в 16:03.
|
|
|
|
10.11.2011, 16:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Вы тестером посмотрите.
|
|
|
|
10.11.2011, 20:15
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Тестера нету, но у меня на ногу к которой подключен датчик смотрит ADC1. Это считается? Используя показания ADC с ноги PB1 получаем такую картину:
1) Болтающаяся РВ1 с подтяжкой к питанию, никакие функции 1-Wire не вызываются. Результат замера с ноги: 3.3в
2) Болтающаяся РВ1 с подтяжкой к питанию, в цикле постоянно вызывается функция One_Wire_Reset и читается её результат. Результат замера с ноги: от 1.7 до 2.5в. Результат работы функции One_Wire_Reset: One_Wire_Error_No_Echo
3) Нога РВ1 подключена к Data датчика (датчик запитан от 5в отдельно) и подтянута к питанию, никакие функции 1-Wire не вызываются. Результат замера с ноги: 3.2в
4) Нога РВ1 подключена к Data датчика (датчик запитан от 5в отдельно) и подтянута к питанию, в цикле постоянно вызывается функция One_Wire_Reset и читается её результат. Результат замера с ноги: 0.3в. Результат работы функции One_Wire_Reset: One_Wire_Bus_Low_Error
Что это может означать?
|
|
|
|
11.11.2011, 11:47
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Может ногу дополнительно резистором к плюсу подтянуть?
|
|
|
|
11.11.2011, 12:55
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Нашел где задаётся тактовая частота МК, там установлено 72мгц. В задержках поменял с 24 на 72 мгц и ничего не изменилось. Так и оставил. Если в работе потрогать пальцем за питание датчика то результат работы функции 1-wire reset bus меняется на то, что вы мне посоветовали добавить: One_Wire_Error_No_Low_Level ![Улыбка](images/smilies/icon_smile.gif) Сейчас попробую сделать подтяжку к питанию физическую.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:48.
|
|