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

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

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

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

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

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


 
Опции темы
Непрочитано 22.05.2015, 19:49  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Заработало! И I2C заработал.
Код:
U8 opt2_default_setup(){
	U8 ret = 0;
	U8 val = OPT2 | 0x40;
	if(OPT2 & 0x40) return 0;
	disableInterrupts();
	FLASH_CR2 = 0x80; // enable write OPT
	FLASH_NCR2 = ~0x80;
	if(!unlock_EEPROM()){ret = 1; goto out;}
	if(!(FLASH_CR2 & 0x80)){ret = 3; goto out;}
	// set AFR6 in OPT2 & reset in NOPT2
	OPT2 = val;
	NOPT2 = ~val;
	lock_EEPROM();
	FLASH_CR2 &= ~0x80; // disable write OPT
	FLASH_NCR2 |= 0x80;
	ret = 2;
out:
	enableInterrupts();
	return ret;
}
Вот же сволочи! Не написали в даташите, что нельзя читать регистры FLASH_CR2/FLASH_NCR2 при записи! Поэтому конструкция |= &= не меняла содержимое регистра и option bytes не разлочивались!
А в таком виде работает.
Реклама:
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 22.05.2015, 20:58  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Рано радовался: данные отправляются с ошибкой (почему-то ожидание флага BTF по таймауту вываливается, или таймаут маловат?)
И при приеме получаю 0. Видимо, действительно, нужно из errata "патчик" использовать (отрубать прерывания на время приема).
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 22.05.2015, 21:51  
selevo
Заблокирован
 
Регистрация: 15.04.2010
Адрес: Ижевск
Сообщений: 388
Сказал спасибо: 24
Сказали Спасибо 45 раз(а) в 35 сообщении(ях)
selevo на пути к лучшему
По умолчанию Re: FAQ по STM8

можно попробовать уменьшить скорость
воткнуть i2c монитор (на usbee sd dx ax sx pickit serial analyzer usb-i2c )

Последний раз редактировалось selevo; 22.05.2015 в 22:01.
selevo вне форума  
Непрочитано 23.05.2015, 10:58  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Итак, I2C заработал. Но как-то хреново: команды на si7005 отправляются исправно (судя по поллингу флага !RDY в процессе ожидания окончания преобразования), а вот считывается какое-то говно. То ли лыжи не едут...
Надо будет еще с какой-нибудь платкой на I2C проверить. А то, скажем, вместо ID=0x50 я получаю 0 до начала преобразований и 1 после. Вместо температуры/влажности тоже хрень какая-то с нулевым старшим байтом.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 23.05.2015, 12:19  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: FAQ по STM8

OPTION из IAR SRM8 тоже пишется..
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
Непрочитано 23.05.2015, 13:21  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: FAQ по STM8

В ИАРе и отладчик есть... Там за день можно написать и отладить...
Но здесь только анально огороженный хардкор...
niXto вне форума  
Непрочитано 30.05.2015, 13:24  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Ура, товарищи! Свершилось! Я таки осилил аппаратный I2C на STM8: SI7005 заработал!!!
Косяки были в том, что я по умолчанию всегда после отправки write писал STOP, хотя при чтении регистров этот STOP нафиг не нужен. Добавил флаги (писать ли STOP после write и ждать ли на read освобождения линии), а также малость отрихтовал макросы (оказалось, что препроцессору sdcc до gcc как раком до Пекина: если бы ассемблерный результат не посмотрел, долго бы гадал, чего он BTF никак не дождется).

Теперь остается еще написать программный I2C, и можно будет на "вольтметры" переносить.

P.S. Барометра у меня нет, так что проверить не могу. Пока щелкал, кажет не хуже 0.3% (что невероятно).
Температуру кажет с STD=0.01% (что вообще невероятно), думаю, все-таки брехать он будет неплохо. Но это нужно по поверенному термометру проверять.
__________________
Союз Советских Социалистических Округов Северной Америки

Последний раз редактировалось eddy; 30.05.2015 в 13:32.
eddy вне форума  
Сказали "Спасибо" eddy
selevo (30.05.2015)
Непрочитано 03.06.2015, 20:46  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от eddy Посмотреть сообщение
Я таки осилил аппаратный I2C на STM8: заработал!!!
Косяки были в том, что я по умолчанию всегда после отправки write писал STOP, хотя при чтении регистров этот STOP нафиг не нужен.
а вот тут я не совсем понял, а зачем "write" "при чтении регистров" ?? обычно, сначала WRITE для установки адреса, STOP а потом READ...


Сообщение от eddy Посмотреть сообщение
Теперь остается еще написать программный I2C.
я написал на асме внутри функци, только на СИ на 16 мгц скорость 400 кгц I2C не успевает...
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 03.06.2015 в 20:50.
picavr вне форума  
Непрочитано 03.06.2015, 21:34  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от picavr Посмотреть сообщение
а зачем "write" "при чтении регистров" ?
А как отправить номер устройства и адрес регистра без write?
Сообщение от picavr Посмотреть сообщение
STOP а потом READ...
Нет, SI7005 требует, чтобы перед READ не было STOP, иначе будет считан нулевой регистр.
Сообщение от picavr Посмотреть сообщение
на СИ на 16 мгц скорость 400 кгц I2C не успевает...
На STM8 400кГц если и будет работать, то исключительно аппаратный. Но мне нафиг не надо. Можно и 10кГц сделать — какая нафиг разница? Устройство-то одно!
А программный и на 100кГц может не завестись. Но посмотрим, как там таймер будет успевать прерывания обрабатывать.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 03.06.2015, 22:15  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: FAQ по STM8

У меня на АТ89С2051 и генераторе 24 МГц (2 мипса) было за 100 кГц... Пришлось нопы добавлять
niXto вне форума  
 

Закладки

Метки
arm, cortex, stm32, stm8
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
STM8(S/L), первые впечатления kison STM8 1423 19.05.2018 19:23
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 291 05.06.2015 20:49
FAQ Импульсный трансформатор alberio Источники питания и свет 87 13.11.2012 18:07


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


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