Подключение DS18b20 к STM32
11.03.2013, 20:26
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от wellcom
|
|
void Issuing_ROM_code_1Wire (unsigned char (*Serial_Num)[DS1822_SERIAL_NUM_SIZE])
|
Насколько я понимаю - в подпрограмму передается массив указателей. И этих указателей ровно DS1822_SERIAL_NUM_SIZE штук - что немного удивляет.
|
|
|
|
11.03.2013, 21:38
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
целиком: Компилятор -Keil, проц STM32F103
|
Код:
|
#define _11_BIT_RESOLUTION 0xDF
#define DS1822_STRATCHPAD_SIZE 0x09
#define DS1822_SERIAL_NUM_SIZE 0x08
unsigned char ROM_SN[One_Wire_Device_Number_MAX][DS1822_SERIAL_NUM_SIZE];
void Issuing_ROM_code_1Wire (unsigned char (*Serial_Num)[DS1822_SERIAL_NUM_SIZE]);
//======================================== ВЫДАЧА ROM кода!
void Issuing_ROM_code_1Wire (unsigned char (*Serial_Num)[DS1822_SERIAL_NUM_SIZE])
{
unsigned char cnt;
_w1_write_byte(MATCH_ROM); //
for (cnt=0;cnt!=8;cnt++) _w1_write_byte((*Serial_Num)[cnt]);
}
//================== Установка разрешения и T ALARM по адресу
int8_t DS18x20_SET_RESOLUTION_by_Rom (int8_t _TH, int8_t _TL, int8_t _RES, unsigned char (*Serial_Num)[DS1822_SERIAL_NUM_SIZE])
{
unsigned char cnt;
unsigned char inbuff[DS1822_STRATCHPAD_SIZE]; //0x09
cnt=_w1_reset(); //сброс датчика, вернет 1 если датчик обнаружился
if (cnt==0x0) return cnt;
Issuing_ROM_code_1Wire ((*Serial_Num)[DS1822_SERIAL_NUM_SIZE]);
// _w1_write_byte(MATCH_ROM); //MATCH_ROM с кем работаем
// for (cnt=0;cnt!=8;cnt++) _w1_write_byte((*Serial_Num)[cnt]); //ROM
_w1_write_byte(WRITE_SCRATCHPAD);
_w1_write_byte(_TH); //пишем в регистр TH
_w1_write_byte(_TL); //пишем в регистр TL
_w1_write_byte(_RES); //пишем в регистр конфигурации
_w1_write_byte(COPY_SCRATCHPAD); //save in eeprom
} |
Использование
|
Код:
|
error_handle = DS18x20_SET_RESOLUTION_by_Rom (0x00, 0x00, _11_BIT_RESOLUTION, &ROM_SN[cnt]); |
Это немного переделанный код Easyrider83, если убрать коментарии и ф-цию Issuing_ROM_code_1Wire то все работает на ура, в противном случае выдает ошибки
|
Код:
|
PERIF\18B20\ds18x20.c(154): warning: #175-D: subscript out of range
PERIF\18B20\ds18x20.c(154): error: #167: argument of type "unsigned char" is incompatible with parameter of type "unsigned char (*)[8]" |
указывая на ф-цию Issuing_ROM_code_1Wire. В программировании я пока не силен, поэтому и прошу помощи здесь. K&R книга есть, и не только она, правда ел. вариант. Иногда в нее заглядываю, однако читать с экрана монитора не очень удобно - после нескольких страниц глаза вылазят, как говорят "смотрю в книгу - вижу фи..".
Последний раз редактировалось wellcom; 11.03.2013 в 21:41.
|
|
|
|
11.03.2013, 21:47
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
wellcom, Специально для вас , все те же K&R :
__________________
Осторожно , злой кот
|
|
|
|
Сказали "Спасибо" dosikus
|
|
|
11.03.2013, 21:55
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
нашел у себя, стр.147 - учу....
|
|
|
|
11.03.2013, 22:05
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
|
Код:
|
void Issuing_ROM_code_1Wire (unsigned char (*Serial_Num)[DS1822_SERIAL_NUM_SIZE]); |
Ощущается рука Паши_райдера ... 
В прототипах достаточно типы указывать .
Вариант , не прокатывает ?
|
Код:
|
void Issuing_ROM_code_1Wire (unsigned char Serial_Num[][DS1822_SERIAL_NUM_SIZE]){
..
} |
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 11.03.2013 в 22:07.
|
|
|
|
11.03.2013, 22:21
|
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
все те же K&R : судя из книги
void Issuing_ROM_code_1Wire (unsigned char (*Serial_Num)[ DS1822_SERIAL_NUM_SIZE]);
и
void Issuing_ROM_code_1Wire (unsigned char Serial_Num[][DS1822_SERIAL_NUM_SIZE]);
одинаковы, и по идее должны работать как в первом так и во втором вариантах. Однако
|
Код:
|
Issuing_ROM_code_1Wire (Serial_Num[][DS1822_SERIAL_NUM_SIZE]); |
имею ошибку
|
Код:
|
PERIF\18B20\ds18x20.c(154): error: #29: expected an expression |
не хватает & ?
Последний раз редактировалось wellcom; 11.03.2013 в 22:28.
|
|
|
|
11.03.2013, 22:39
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
У меня все и с Пашиной интепретацией работает.
Естественно если использовать правильно.
|
Код:
|
Issuing_ROM_code_1Wire (ROM_SN); |
Передаем первую строку массива.
|
Код:
|
Issuing_ROM_code_1Wire (&ROM_SN[x]); |
передаем нужную строку.
__________________
Осторожно , злой кот
|
|
|
|
11.03.2013, 22:47
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Это кто-то мои коды перелопатил ))) Я к этому отношения не имею ))))
|
|
|
|
11.03.2013, 23:27
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от Easyrider83
|
|
Это кто-то мои коды перелопатил )))
|
Ну вот , Паша напугал просящего ...
__________________
Осторожно , злой кот
|
|
|
|
22.07.2013, 16:23
|
|
|
Временная регистрация
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Подключение DS18b20 к STM32
а где в Coocox в Peripheral нужно поставить галочку, чтоб в проекте появился хидер "stm32f10x_systick.h"? Насколько я понимаю для моего контроллера он должен будет называться "stm32f4хx_systick.h"
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:39.
|
|