Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 14.12.2011, 19:51  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Сообщение от CMaxx22 Посмотреть сообщение
Попробовал инкрементировать 0xF800 получилось немного не то, что я хотел.
RGB 565... 5 бит красного, 6 бит зелёного и 5 бит синего...
Код:
#define RED   0xF800 // максимум красного

#define BLACK 0x0000  // отсутствие красного
11111 (0x001F) сдвигаете 11 раз влево... получаете 11111000 00000000 (0xF800)...
11110 (0x001Е) - 11110000 00000000 (0xF000)...
11101 (0x001D) - 11101000 00000000 (0xE800)...
и т. д. ..
Т.е. ... каждый раз уменьшаем значение на 0x0800...
Реклама:
st_1 вне форума  
Сказали "Спасибо" st_1
CMaxx22 (14.12.2011)
Непрочитано 15.12.2011, 13:36  
ДДН
Временная регистрация
 
Регистрация: 20.01.2011
Адрес: Витебск
Сообщений: 38
Сказал спасибо: 6
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
ДДН на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Извините если не в тему, Вопрос по отладочной плате STM32VLDISCOVERY. В плате есть встроенный ST-Link - внутрисхемный отладчик, можно ли с STM отладчика считать прошивку?? Нету возможности купить платку отладочную, вот думаю повторить.
ДДН вне форума  
Непрочитано 15.12.2011, 13:47  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Нет... нельзя...
st_1 вне форума  
Непрочитано 20.12.2011, 11:24  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Для CMaxx22 рабочий проект с несколькими сенсорами. Номера датчиков лежат в RAM.
Вот еще один. На 10 датчиков.

Последний раз редактировалось Easyrider83; 20.12.2011 в 13:44.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
CMaxx22 (23.12.2011)
Непрочитано 22.12.2011, 15:01  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Спешу обрадовать. Процедура Search Rom заработала!
Основываясь на коде из комментария к статье:
http://www.maxim-ic.com/app-notes/index.mvp/id/187
Получилась такая вот процедурка. Пишет в локальный массив серийные номера и возвращает количество найденных устройств в переменную devices_found.
Проверено на 10 x DS18B20
Код:
unsigned char DS1822_Search_Rom (unsigned char * devices_found, GPIO_TypeDef * GPIOx, unsigned long PINx)
{
	unsigned long path,next,pos;                          /* decision markers */                              
 	unsigned char bit,chk;                                /* bit values */
	unsigned char cnt_bit, cnt_byte, cnt_num,tmp;
 	path=0;                                     /* initial path to follow */
 	cnt_num=0;
	do
	{                                         /* each ROM search pass */
		//(initialize the bus with a reset pulse)
 		tmp=One_Wire_Reset(GPIOx, PINx);
 			if (tmp!=One_Wire_Success) return tmp;
		//(issue the 'ROM search' command)
		One_Wire_Write_Byte(One_Wire_Search_ROM,GPIOx, PINx);
     	next=0;                                 /* next path to follow */
     	pos=1;                                  /* path bit pointer */                              
  		for (cnt_byte=0;cnt_byte!=8;cnt_byte++)
		{
			Search_Rom_SN[cnt_num][cnt_byte]=0;
			for (cnt_bit=0;cnt_bit!=8;cnt_bit++)
  			{                                     /* each bit of the ROM value */
 				//(read two bits, 'bit' and 'chk', from the 1-wire bus)
				bit=One_Wire_Read_Bit(GPIOx, PINx);
				chk=One_Wire_Read_Bit(GPIOx, PINx);
        		if(!bit && !chk)
					{                   /* collision, both are zero */
             			if(pos&path) bit=1;             /* if we've been here before */
             			else next=(path&(pos-1))|pos;   /* else, new branch for next */
             			pos‹‹=1;
          			}
 				//(write 'bit' to the 1-wire bus)
 				One_Wire_Write_Bit(bit, GPIOx, PINx);
	 
 				//(save this bit as part of the current ROM value)
				if (bit!=0) Search_Rom_SN[cnt_num][cnt_byte]|=(1‹‹cnt_bit);
     		}
		}
 		//(output the just-completed ROM value)
     	path=next;
		cnt_num++;
 	}while(path);
	* devices_found = cnt_num;
	return One_Wire_Success;
}
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
CMaxx22 (23.12.2011)
Непрочитано 22.12.2011, 16:10  
bishop020
Частый гость
 
Регистрация: 05.12.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
bishop020 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Здравствуйте,Easyrider83.
Нужно реализовать часы с термометром.
Пытаюсь подключить датчик ds18b20 к stm32vldiscovery.
Прочитал ваше обсуждение с CMaxx22.Сделал как у вас ,но почему-то ничего не вышло. Разрабатывал в CooCox.
Так подключаю датчик:

Так инициализирую порт
Код:
	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);
Буду рад любым советам.
bishop020 вне форума  
Непрочитано 22.12.2011, 16:26  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

bishop020, для одного датчика можно обойтись процедурой Skip ROM. В этом случае все на много проще.
Порт вы можете и вовсе не инитиалировать. Главное подключить его к генератору тактовых имульсов:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
Схема у вас верная. Посмотрите через дебаг, что возвращает процедура.
Процесс работы такой:
Резет
Команда Skip ROM
Команда Convert T
Пауза 750мс
Резет
Команда Skip ROM
Команда READ STRATCHPAD
Все. Результат у вас. Осталось разделить на 4 и будет вам температура.
Не очень правильно писать - ничего не получилось. Пишите конкретнее - что именно вызывает сложность.
Easyrider83 вне форума  
Непрочитано 22.12.2011, 16:47  
bishop020
Частый гость
 
Регистрация: 05.12.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
bishop020 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Код:
One_Wire_Reset(GPIOB,GPIO_Pin_1);
One_Wire_Write_Byte(One_Wire_Skip_ROM,GPIOB,GPIO_P  in_1);
One_Wire_Write_Byte(DS1822_CONVERT_T_CMD,GPIOB,GPI  O_Pin_1);
Delay(750);
One_Wire_Reset(GPIOB,GPIO_Pin_1);
One_Wire_Write_Byte(DS1822_READ_STRATCHPAD_CMD,GPI  OB,GPIO_Pin_1);
test = One_Wire_Read_Byte(GPIOB,GPIO_Pin_1);
Это мне следует вызвать в main ? В ответ пришло 255.
bishop020 вне форума  
Непрочитано 22.12.2011, 16:53  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Сообщение от bishop020 Посмотреть сообщение
Код:
One_Wire_Reset(GPIOB,GPIO_Pin_1);
One_Wire_Write_Byte(One_Wire_Skip_ROM,GPIOB,GPIO_P  in_1);
One_Wire_Write_Byte(DS1822_CONVERT_T_CMD,GPIOB,GPI  O_Pin_1);
Delay(750);
One_Wire_Reset(GPIOB,GPIO_Pin_1);
One_Wire_Write_Byte(DS1822_READ_STRATCHPAD_CMD,GPI  OB,GPIO_Pin_1);
test = One_Wire_Read_Byte(GPIOB,GPIO_Pin_1);
Это мне следует вызвать в main ? В ответ пришло 255.
Нет-нет. Вам нет нужды работать с файлом 1-Wire. Это стыковочный файл между процедурами работы с датчиком и процедурами работы с портом.
Смотрите файл DS1822. Там процедура DS1822_Start_Convert_Skip_ROM или как-то так, уже точно не помню. Она сама вызовет резет и вернет ошибку в случае неудачи. Потом ждите 750мс и забирайте результат. Сейчас постараюсь помочь кодом.
Код:
unsigned char DS1822_Start_Conversion_Skip_Rom (GPIO_TypeDef * GPIOx, unsigned long PINx)			 
{	
	unsigned char tmp; 											
	tmp=One_Wire_Reset(GPIOx, PINx);
	if (tmp!=One_Wire_Success) return tmp;												
	One_Wire_Write_Byte(One_Wire_Skip_ROM,GPIOx, PINx);
	One_Wire_Write_Byte(DS1822_CONVERT_T_CMD,GPIOx, PINx);
	if (One_Wire_Read_Byte(GPIOx, PINx)==0)	return One_Wire_Success;
		else	return One_Wire_Device_Busy;
}

unsigned char DS1822_Read_Temp_NoCRC_Skip_Rom (unsigned int * temperatura, GPIO_TypeDef * GPIOx, unsigned long PINx)				 
{
	unsigned char tmp; 											
	tmp=One_Wire_Reset(GPIOx, PINx);
	if (tmp!=One_Wire_Success) return tmp;
	One_Wire_Write_Byte(One_Wire_Skip_ROM,GPIOx, PINx);
	One_Wire_Write_Byte(DS1822_READ_STRATCHPAD_CMD,GPI  Ox, PINx);
	* temperatura = One_Wire_Read_Byte(GPIOx, PINx)|(One_Wire_Read_Byte(GPIOx, PINx)‹‹8);
	return One_Wire_Success;
}
Работаем так:
Код:
unsigned int temp=0xFF;
If (DS1822_Start_Conversion_Skip_Rom(GPIOB, GPIO_Pin_1)==One_Wire_Success)
{
 delay_ms(750);
 DS1822_Read_Temp_NoCRC_Skip_Rom(&temp,GPIOB, GPIO_Pin_1); 
}
Переменная temp в случае ошибки будет ровна 255 и в случае успеха в 4 раза будет превышать температуру датчика.

Последний раз редактировалось Easyrider83; 22.12.2011 в 17:07.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
bishop020 (22.12.2011)
Непрочитано 22.12.2011, 17:07  
bishop020
Частый гость
 
Регистрация: 05.12.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
bishop020 на пути к лучшему
Сообщение Re: Отладочные платы для STM32

Код:
int main(void){
 GPIO_Configuration();	
 while(1){
   DS1822_Start_Conversion_Skip_Rom(GPIOB,GPIO_Pin_1)  ;
   delay_ms(750);		
   test = DS1822_Read_Temp_NoCRC_Skip_Rom(GPIOB,GPIO_Pin_1);
   }
}
А если так?
bishop020 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Технология изготовления печатной платы Tungus55 Делимся опытом 1165 06.01.2017 19:19
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 03:04.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot