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

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

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

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

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

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


 
Опции темы
Непрочитано 12.11.2011, 18:21  
CMaxx22
Временная регистрация
 
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
CMaxx22 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Посмотрел, есть вопросы.
Этот файл вместо какого будет работать?
Что именно он улучшает, меньше можно будет прописывать инициализационных команд по портам и переферии?
Как его конфигурировать, какой визард использовать и где он лежит?
Не нужен ли к нему .h ?
Реклама:
CMaxx22 вне форума  
Непрочитано 12.11.2011, 18:47  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Посмотрите пример работы часов реального времени. Думаю, станет понятно.
Вложения:
Тип файла: rar STM32_RTC.rar (28.4 Кб, 92 просмотров)
Easyrider83 вне форума  
Непрочитано 12.11.2011, 19:19  
CMaxx22
Временная регистрация
 
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
CMaxx22 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Нет, не очень понятно.
Вот это RTC-›CRL &= ~(1‹‹1); всякие спецсимволы для мня не имеют никакого смысла. Это что, ассемблер? Я к этому лучше позже вернусь, когда буду хотяб синтаксис понимать языка... Если я щас подключу эту библиотеку то никогда настроить не смогу. Кстати там почти всё закоменчено, там надо раскомментить нужные строки или как?
CMaxx22 вне форума  
Непрочитано 12.11.2011, 19:32  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

CMaxx22, там нет ничего сложного .
Вам расписать по пунктам ?
Сначала левая часть
RTC-›CRL указатель позиционируется на член структуры . Другими словами слева мы получаем адрес переменной с которой будем далее производить действия .

(1‹‹1) Эта запись лишь для наглядности . Реально вычисляется константа .
1 сдвигаем на 1 бит влево. 000 0010 0x02
Далее инвертируем . 1111101 0xFD
Далее производим побитовое AND полученой константы и содержимым переменной.
Результат заносим в переменную.

Опуская указатель
CRL = CRL & (~(1‹‹1)) или CRL=CRL & 0xFD

В итоге весь смысл этих магических манипуляций сводится к сбросу бита 1 CRL .

Намного наглядней будет расписать CRL битовые поля .
В итоге все сведется к :
Код:
RTC-›CRL_bit1 =0;
__________________
Осторожно , злой кот

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

CMaxx22,
я подправил библиотеки под ваши 5 датчиков. Количество датчиков можно указать в DS1822.h файле.
Считать уникальные номера сенсоров можно так:
Код:
for (cnt=0; cnt!='количество датчиков'; cnt++)
DS1822_Search_Rom(GPIOB, GPIO_Pin_1, cnt);
ЗЫ Возможны проблемы с пересчетом CRC. Когда проверите, дайте знать. Я мог направление счета перепутать.
Вложения:
Тип файла: rar 1-Wire.rar (1.8 Кб, 93 просмотров)
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
CMaxx22 (13.11.2011)
Непрочитано 13.11.2011, 09:30  
CMaxx22
Временная регистрация
 
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
CMaxx22 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Попробовал, написал в коде
u8 senum;
for (senum=0; senum!='5'; senum++)
{LCD_ShowNum(10,10,DS1822_Search_Rom(GPIOB,GPIO_Pi n_1,senum),8,16, RED);}
Постоянно кажет 3. Если на горячую отключить произвольно один из датчиков то может показать 1 или 2... И ещё программа тормозит как будто задержку секунды в 3 поставил. Похоже не работает. Я до сих пор не пойму, как функция должна распознавать кто там из датчиков ответил, они же все на одной ноге висят...

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

На счет того, как устройства понимают, кто есть кто - очень просто. Единичка на шине имеет преимущество. Все устройства делают одинаковую функцию - дергают резет, отвечают битами. Но как только один бит отпустят все, кроме одного - другие поймут, что на шине они не одни и тот, кто до конца выполнил Search Rom на следующую команду уже не отвечает. Так по одному они выпадают из списка опрашиваемых датчиков, пока не ответят все.

А возвращает она вам количество ошибок на шине. Вероятно потому, что подтяжка к плюсу слабовата. Зато теперь знаю - контрольную сумму считает верно.

Последний раз редактировалось Easyrider83; 13.11.2011 в 12:35.
Easyrider83 вне форума  
Непрочитано 13.11.2011, 13:59  
CMaxx22
Временная регистрация
 
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
CMaxx22 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Уже понятнее, спасибо! Тоесть DS1822_Search_Rom всё также записывает данные в массив DS1822_SERIAL_NUMBER только теперь у него два направления. Подскажите как считать данные столбца (или строки) массива в переменную чтобы вывести на экран? И как потом обратиться к датчику по адресу? Чтото я не нашел функции которая кушала бы адрес датчика, все как будто для одного датчика написаны. Я пока попытаюсь добиться чтобы ошибок не возвращало.
CMaxx22 вне форума  
Непрочитано 13.11.2011, 14:47  
CMaxx22
Временная регистрация
 
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
CMaxx22 на пути к лучшему
По умолчанию Re: Отладочные платы для STM32

Не получается В каком случае функция приращает err_cnt ? При любой подтяжке и вставленным одним датчиком возвращает 0. Добавляешь любой другой датчик - 1, ещё один - 2, ещё один -3, добавляешь последний - всё равно 3.

Добавлено: вот этот кусочек как работает?
tmp1=One_Wire_Read_Bit(GPIOx, PIN);
if (One_Wire_Read_Bit(GPIOx, PIN)==tmp1) err_cnt++;
Прочитанный бит читается ещё раз и если совпадает, то ошибка ++ ? Но разве они и не должны совпадать? Или это уже следующий бит? Не пойму, всё время ошибки показывает, переменным резистором кручу подтяжку вплоть до замыкания на +5в, всё одно, только при замыкании выдаёт общую ошибку 65535, а так хоть 40Ком подтяжки, хоть 100Ом - всё равно три ошибки.

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

Смотрите, вот функция:
Код:
unsigned int DS1822_Search_Rom (GPIO_TypeDef* GPIOx, unsigned long PIN, char sens_num)					
	unsigned int err_cnt=0;
	unsigned char cnt_bits;
	unsigned char cnt_bytes;
	unsigned char tmp1=0;
	unsigned char tmp2=0;
	if (One_Wire_Reset(GPIOx, PIN)==One_Wire_Success)
	{
		One_Wire_Write_Byte(One_Wire_Search_ROM,GPIOx, PIN);
		for (cnt_bytes=0;cnt_bytes!=DS1822_SERIAL_NUM_SIZE;cnt  _bytes++) 
		{
			for (cnt_bits=0;cnt_bits!=8;cnt_bits++)
			{
				tmp1=One_Wire_Read_Bit(GPIOx, PIN);
				if (One_Wire_Read_Bit(GPIOx, PIN)==tmp1) err_cnt++;
				One_Wire_Write_Bit(tmp1,GPIOx, PIN);
				tmp2|=tmp1‹‹cnt_bits;
			}
			cnt_bits=0;
			DS1822_SERIAL_NUMBER[sens_num][cnt_bytes]=tmp2;
			tmp2=0;
		}
		if (Crc8Dallas(DS1822_SERIAL_NUM_SIZE, sens_num)==0) return err_cnt;
		else return One_Wire_CRC_Error;
	}
	else return One_Wire_Error_No_Echo;
}
Если устройство на RESET не ответила RESPONSE, то возвращается One_Wire_Error_No_Echo.
Затем идет команда One_Wire_Search_ROM
На нее датчик отвечает битами в виде бит, не бит. Т.е. прямой и инвертированный. Если возвращает два одинаковых - значит ошибка. В этом случае на единичку увеличивается счетчик ошибок. В результате просто возвращается значение этого счетчика. Если ошибок не было, возвращается ноль.

Последний раз редактировалось Easyrider83; 13.11.2011 в 15:09.
Easyrider83 вне форума  
 

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

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

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, время: 22:51.


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