реклама на сайте
подробности

 
 
> STM32F100C6T6 и 1-wire, не отладить в IAR EWARM v6.30.4
ivainc1789
сообщение Jan 21 2012, 19:58
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



К STM32F100C6T6 подключен DS18B20. Со времен AVR есть отлаженные исходники для 1-wire bus. Думалось, что все будет просто при наладке портированных исходников, но затык случился конкретный: отладить и проверить работу подключенного DS18B20 практически не удалось. Разбор полетов указал на... странную работу портов и решения или ошибки что-то никак не увидел. Пришлось упростить до одного файла main.c, в котором приведены два упражнения (примера). Как вывести из IAR (Win7 64) с русскими комментами вместо крякозябр - не знаю, потому см. аттач.
Прикрепленный файл  main.pdf ( 26.04 килобайт ) Кол-во скачиваний: 603

Разочарований в STM32F100 два:
1. При частоте HCLK 24MHz максимальная частота ногодрыгания ~1.78Mhz. При макс оптимизации! Это катастрофа! Возможно, что-то сделано не так в системе тактирования? Неужели STM32 такие медленные?
2. Отладить простую процедуру сброса 1-wire не смог! Осциллом смотрю - все очень безоблачно: сначала вижу отриц импульс на 500us, потом проц освобождает шину, датчик ждет 35us и удерживает ее в нуле еще на 60-120us, т. е. с момента окончания отриц импульса до момента получения значения состояния шины я заложил 80us - вполне достаточно. Каково же было мое удивление, когда выяснилось, что проц читает это состояние как 1, хотя судя по осциллу явно должен быть 0. Проверил отладкой в EWARM через J-Link Ultra, что если вручную перед чтением установить на шине 0, то это состояние софтом читается правильно. Все дело в скорости чтения... Проц почему-то не может получить значение пина за несколько us. Стало ясно, почему и прочие процедуры чтения ключа и т. п. не работали... Попытки отключить USE_FULL_ASSERT, манипуляции оптимизацией ни к чему не привели, библиотечные функции проверены. Система тактирования проверена частично через вывод на пин MCO - Fhclk=24MHz. Нужна помощь...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ivainc1789
сообщение Jan 23 2012, 08:05
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата
Можно, дёргая какую-нибудь ногу до и после, проверить осциллографом на сколько она задерживает
Именно так я ее и проверял - работает нормально и в пределах допусков! Но после такой задержки прочитать заранее известное состояние шины 1-wire почему-то не получается (см. main.c из первого поста) и это тревожит... Т. е. как бы выходит, что SysTick таймер, являющийся периферией ядра - это не то же самое, что стандартные периферийние таймеры на APB2 (при Fhclk = Fapb2 естественно). И это при том, что если вручную установить (замкнуть шину) 1-wire на землю, то в рантайме после этой задержки посредством SysTick состояние 1-wire прекрасно читается как 0. Чудеса какие-то...
Цитата
Нет, пин нужно настраивать и на ввод и на вывод (вроде во всех основоположниках от макса и атмель так делается)
все же рекомендую обратиться к ref manual на STM32F100 rev4 стр. 103:
Output configuration
When the I/O Port is programmed as Output:
● The Output Buffer is enabled:
– Open Drain Mode: A ”0” in the Output register activates the N-MOS while a ”1” in
the Output register leaves the port in Hi-Z. (the P-MOS is never activated)
– Push-Pull Mode: A ”0” in the Output register activates the N-MOS while a ”1” in the
Output register activates the P-MOS.
● The Schmitt Trigger Input is activated.
● The weak pull-up and pull-down resistors are disabled.
The data present on the I/O pin is sampled into the Input Data Register every APB2
clock cycle

A read access to the Input Data Register gets the I/O state in open drain mode
● A read access to the Output Data register gets the last written value in Push-Pull mode


Поэтому лучше все же конфиг на лету не делать, но по-вашему вроде все равно должно работать...
Цитата
У меня 0 при резете ловился стабильно, только если задержку между опусканием шины и освобождением делать не более 50 мкс. И было это уже не резет, а 1. А вот стоит задержку увеличить до штатных не менее 480 мкс, все, тишина.
секунду... что-то тут не так... задержка между отпусканием шины и ЧТЕНИЕМ ее уже известна на момент отпускания и равна примерно (35+50)us. Причем 35 формирует датчик и 50 добавляем мы... или я что-то не понял?..... После "вторых" 480us - ясный хрен будет прочитана 1...
Посмотрел, у вас задержки сделаны на TIM2. Неужели и так не прочитаю 0??? Сення после работы попробую обязательно...

И еще... Стабильность HSI для поддержки 1-wire вполне достаточна (~2.5% в широком темп диапазоне) и не может стать причиной сбоев на шине при переходе от mcu к mcu... Все это ИМХО, конечно....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ivainc1789   STM32F100C6T6 и 1-wire   Jan 21 2012, 19:58
- - Aner   1-wire bus довольно жесткий к времянке, не каждый ...   Jan 21 2012, 23:53
- - ivainc1789   Цитата(Aner @ Jan 22 2012, 03:53) 1-wire ...   Jan 22 2012, 00:30
- - Aner   Без опыта преждних разработок и внимательного пони...   Jan 22 2012, 14:42
|- - sparcmaster   Цитата(Aner @ Jan 22 2012, 18:42) Все из ...   Jan 23 2012, 04:35
- - zoddy   не знаю, что у Вас там не получается... но у меня ...   Jan 22 2012, 15:56
- - skripach   ЦитатаВсе из себя 32 битные. Но вот как только дел...   Jan 22 2012, 16:44
- - ivainc1789   Цитата(Aner @ Jan 22 2012, 18:42) Без опы...   Jan 22 2012, 17:28
|- - maksimp   Цитата(ivainc1789 @ Jan 22 2012, 21:28) п...   Jan 23 2012, 05:54
- - lexanet   Я тоже так и не смог подключить DS18B20 к дисковер...   Jan 23 2012, 03:17
- - ivainc1789   ЦитатаЭто вы программно делаете 1-wire?Ну да. А чт...   Jan 23 2012, 05:33
|- - lexanet   Цитата(ivainc1789 @ Jan 23 2012, 08:33) И...   Jan 23 2012, 06:12
|- - maksimp   Цитата(ivainc1789 @ Jan 23 2012, 12:05) И...   Jan 23 2012, 08:45
- - lexanet   Для проверки живости датчика и работоспособности п...   Jan 23 2012, 08:19
- - ivainc1789   ЦитатаДостаточно на глаз настроить...а если частот...   Jan 23 2012, 08:32
|- - lexanet   Цитата(ivainc1789 @ Jan 23 2012, 11:32) а...   Jan 23 2012, 10:06
|- - maksimp   Цитата(lexanet @ Jan 23 2012, 14:06) то ж...   Jan 23 2012, 13:04
|- - lexanet   Цитата(maksimp @ Jan 23 2012, 16:04) Такт...   Jan 23 2012, 13:33
|- - maksimp   Цитата(lexanet @ Jan 23 2012, 17:33) Такт...   Jan 23 2012, 18:33
|- - lexanet   Цитата(maksimp @ Jan 23 2012, 21:33) Убер...   Jan 24 2012, 02:59
|- - maksimp   Цитата(lexanet @ Jan 24 2012, 06:59) Подт...   Jan 24 2012, 05:32
- - ivainc1789   Провел серию экспериментов как вы советовали... В ...   Jan 23 2012, 19:26
- - ivainc1789   Уже здесь возникают вопросы... Такой цикл выдает н...   Jan 24 2012, 08:19
|- - maksimp   Цитата(ivainc1789 @ Jan 24 2012, 12:19) Т...   Jan 24 2012, 09:00
- - ivainc1789   ЦитатаПрерывания разрешены или запрещены? Если раз...   Jan 24 2012, 11:14
|- - maksimp   Цитата(ivainc1789 @ Jan 24 2012, 15:14) т...   Jan 24 2012, 12:34
- - shista   Почитал дискусиию и решил проверить действительно ...   Jan 24 2012, 17:39
|- - lexanet   Цитата(shista @ Jan 24 2012, 20:39) Кому ...   Jan 25 2012, 04:55
- - ivainc1789   КодПочитал дискусиию и решил проверить действитель...   Jan 25 2012, 07:05
|- - maksimp   Цитата(ivainc1789 @ Jan 25 2012, 11:05) П...   Jan 26 2012, 05:28
|- - ivainc1789   Цитата(maksimp @ Jan 26 2012, 09:28) Заме...   Jan 26 2012, 07:17
- - shista   ЦитатаМое неудачное портирование исходников 1-wire...   Jan 25 2012, 13:52
- - ivainc1789   ЦитатаА можно весь проект? Конечно. Все подготовил...   Jan 25 2012, 17:27
- - shista   Посмотреть смогу не раньше пятницы, в четверг в ко...   Jan 25 2012, 19:01
|- - ivainc1789   Цитата(shista @ Jan 25 2012, 23:01) Посмо...   Jan 25 2012, 23:30
- - ivainc1789   Ну и наконец, из-за особенностей регистра VAL SysT...   Jan 26 2012, 13:26
|- - Сергей Борщ   QUOTE (ivainc1789 @ Jan 26 2012, 15:26) Н...   Jan 31 2012, 11:01
|- - maksimp   Цитата(Сергей Борщ @ Jan 31 2012, 14:01) ...   Jan 31 2012, 11:39
|- - Сергей Борщ   QUOTE (maksimp @ Jan 31 2012, 13:39) Непр...   Jan 31 2012, 12:05
- - EugenyAM   Когда-то делал на AVR асинхронный обмен по 1-wire ...   Jan 31 2012, 09:06
- - iPKM   При копировании функции _delay_loop из архива Bli...   Feb 2 2012, 10:15
- - shista   Замените Кодasm("BNE loop \n"...   Feb 2 2012, 14:47
- - toweroff   Я делал 1-wire на lpc2103 через SSP с длиной, помн...   Feb 2 2012, 17:01
- - smk   У STM есть особенность настройки выводов портов, о...   Feb 3 2012, 06:25


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 16:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01402 секунд с 7
ELECTRONIX ©2004-2016