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

 
 
15 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Silabs C8051F120
Ivan575
сообщение Sep 4 2013, 18:06
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807



Приветсвую форумчане!
Подскажите пожалуйста как для данного контроллера написать программу, по которой контроллер работал бы как счетчик реального времени (часы минуты секунды) и в некоторые (случайные) промежутки времени принимал данные по UART. При этом важно чтобы не сбивались часы пока идет прием данных по UART.
Заранее благодарю!
Go to the top of the page
 
+Quote Post
Lagman
сообщение Sep 4 2013, 18:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Для точности хода используйте внешний кварцевый резонатор, если использовать прерывания то большую часть времени процессор будет в простое. Часы тикают по прерыванию от таймера, данные передаются и принимаются по прерыванию от аппаратного UARTa.
Go to the top of the page
 
+Quote Post
Ivan575
сообщение Sep 5 2013, 04:50
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807



Честно говоря не очень понял, как при этом не будут сбиваться секунды. Ведь пока мы работаем с UART, мы не можем обрабатывать сигналы от таймера.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 5 2013, 06:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Ivan575 @ Sep 5 2013, 08:50) *
Честно говоря не очень понял, как при этом не будут сбиваться секунды.

При работе с UART по прерываниям: при вхождении в процедуру обработки прерывания от UART прерывания от таймера будут задержаны до выхода из процедуры прерывания UART. Хороший тон программирования - процедуры обработки прерывания делать по возможности более короткими насколько это возможно. Например, забрал с регистра данных UART пришедший байт, взвел флаг (который анализируется в main loop) и вышел из прерывания. Таким образом, изменение счетчика секунд (коли прерывание от таймера совпало во времени с работой процедуры прерывания от UART) будет задержано на очень небольшое время (вероятно, на единицы микросекунд).
Для Вашей задачи микросекунды - это много?
Go to the top of the page
 
+Quote Post
Ivan575
сообщение Sep 5 2013, 15:18
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807



Спс за ответ. a14.gif Попробую по прерываниям. В проекте требуется точнойсть до милисекунд, а обмен данными по UART большой. Просто, думал что может как-то без прерывааний обойтись rolleyes.gif
Go to the top of the page
 
+Quote Post
barabek
сообщение Sep 5 2013, 22:37
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Ivan575 @ Sep 6 2013, 01:18) *
Спс за ответ. a14.gif Попробую по прерываниям. В проекте требуется точнойсть до милисекунд, а обмен данными по UART большой. Просто, думал что может как-то без прерывааний обойтись rolleyes.gif

Выберите режим таймера с автоматической перезагрузкой. В этом случае, даже если вы не сразу обработаете текущее прерывание таймера следующее наступит все равно через выбранный интервал, а не смещенное по времени на период обработки прерывания. Главное, чтобы к наступлению следующего прерывания текущее было уже обработано, иначе потеряете тик. Для этого выставляете разумное время между перезагрузками таймера, т.е. максимально допустимое. И, второе, все обработки прерываний, как писал Палыч, делаете максимально короткими. Про длинный UART не понял. Вы же не собираетесь в нем сидеть пока не примете всю посылку? Нужно только обрабатывать в прерывании побайтно. А уже по завершении приема всей посылки в какой-то буфер там же в прерывании выставить флаг окончания приема. А обработку этого флага и, соостветственно, принятой посылки вести в основном цикле программы.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 6 2013, 06:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(barabek @ Sep 6 2013, 02:37) *
Выберите режим таймера с автоматической перезагрузкой. В этом случае, даже если вы не сразу обработаете текущее прерывание таймера следующее наступит все равно через выбранный интервал, а не смещенное по времени на период обработки прерывания.

Немного поправлю...
Таймер, конечно же, нужно настраивать на работу с автоматической перезагрузкой. В этом случае требования на прерывание (флаги прерывания) будет выставлятся таймером через один и тот же интервал времени (с учетом погрешности частоты задающего генератора). Однако, запуск процедуры обработки прерывания от таймера может быть несколько задержан относительно времени выставления требования прерывания (флага прерывания) от таймера. Эта задержка запуска возникнет, если в момент выставления требования прерывания в МК запрещены прерывания, например, если в данный момент работает процедура обработки прерывания от UART (все прерывания в МК51 запрещаются при входе в процедуру обработки прерывания до выхода их процедуры). Поэтому, изменение значений переменных времени (часы, секунды, миллисекунды) будет несколько cдвинуто во времени относительно тика таймера (максимально - на время работы процедуры обработки прерывания от UART). Если этот сдвиг - критичен, то процедуру обработки прерывания от UART необходимо максимально "укоротить"...
Go to the top of the page
 
+Quote Post
shamrock
сообщение Nov 6 2013, 13:58
Сообщение #8





Группа: Участник
Сообщений: 6
Регистрация: 3-03-09
Из: spb
Пользователь №: 45 605



если известна периодичность сообщений по UART, можно подобрать периодичность прерываний от времязадающего таймера на пару порядков выше... в каждом прерывании от таймера проверять флаг от UART - не пришло ли сообщение...
от прерываний UART отказаться...
Go to the top of the page
 
+Quote Post
Radik2
сообщение Feb 13 2015, 19:07
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Доброго времени суток!
Прошу прощения, что вклинился в ваш топик.
Много лет осваиваю 8-ми битные МК AVR от Atmel. Случайно наткнулся на МК С8051 от Silabs, которые имеют частоту до 100МГц. Например C8051F120. Цены не кусаются. Терпимо.
У меня такой вопрос. Насколько будет оправдана перебежка в сторону МК С8051 от Silabs? Вроде как, "хоронить" это ядро не собираются: на рынке не один десяток лет.
Cortex от STM показались мне тяжелыми в освоении, как для "старого" новичка, вечного ученика.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Feb 14 2015, 05:37
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Radik2 @ Feb 13 2015, 22:07) *
...которые имеют частоту до 100МГц. Например C8051F120...

Их преимущество - частота, еще периферия несколько улучшена. Также есть возможность динамического изменения внутренней тактовой частоты, это для снижения электропотребления.
Когда-то сделал много проектов на этих МК, остался доволен. В частности, был конвертор Ethernet-ИКМ30, это для телефонии, там нужна была скорость, какую меги тогда еще не обеспечивали. Да, еще софт для Silabs нормальный…
И еще эксперимент был, разогнал тактовую частоту до 140МГц и МК работал...


Go to the top of the page
 
+Quote Post
Radik2
сообщение Feb 14 2015, 07:43
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Serhiy_UA
Вы можете советовать С8051F для начинающих? Вы писали код на ассемблере или Си?
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Feb 14 2015, 08:34
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Radik2 @ Feb 14 2015, 10:43) *
Вы можете советовать С8051F для начинающих? Вы писали код на ассемблере или Си?
Советую и для начинающих тоже. Всегда надо с чего-то начинать... Но Вы, похоже, в МК не новичек sm.gif
В чем преимущество:
Доступно много качественной информации по МК от Silabs, и без errata. На русском языке тоже много. А примеров просто море...
Программатор можно сделать самому или купить.
Среда программирования - это uVision 3 и выше, что от Keil (для нас бесплатно). Можно писать на С или asm, или в обоих сразу. Опять же примеров этому много. Я чаще писал на С, но для критических мест делал вставки на asm. Там у 51-архитектуры есть полезные команды косвенных переходов ( JMP @A+DPTR), а также банки РОН, что ускоряет обработку прерываний. Так вот, работать с ними лучше через asm.
Есть и недостатки, свойственные 51-архитектуре, но в целом это хороший 8-разрядный микроконтроллер, особенно по энергопотреблению. Также широкий выбор корпусов, от обыкновенных до мини 4*4мм с выводами вниз.
Дерзайте...
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Feb 14 2015, 09:07
Сообщение #13


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Цитата(Serhiy_UA @ Feb 14 2015, 10:34) *
Советую и для начинающих тоже. Всегда надо с чего-то начинать...
Среда программирования - это uVision 3 и выше, что от Keil (для нас бесплатно).

Собственно, компилятор/ассемблер/линкер от Keil для контроллеров Silabs вообще бесплатные, по-честному и без ограничений. Для получения лицензии понадобится только регистрация. А вот отладка - только в Silabs IDE, или же как обычно... wink.gif

Цитата(Serhiy_UA @ Feb 14 2015, 10:34) *
Доступно много качественной информации по МК от Silabs, и без errata.

errata всё же встречается, и местами есть ляпы в документации. Но тут всё можно весьма оперативно выяснить на форуме, отвечают сами разработчики чипов.
Касательно старых серий - C8051F0xx/1xx/2xx... без крайней надобности я бы не стал их применять. Относительно высокое энергопотребление и ценники нерадостные. Серии поновее - 7xx...9xx, 38x куда интереснее.

Цитата(Serhiy_UA @ Feb 14 2015, 10:34) *
Также широкий выбор корпусов, от обыкновенных до мини 4*4мм с выводами вниз.

Есть и меньше. QFN/DFN 3*3 мм и даже 2*2 мм (QFN-10).


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
Radik2
сообщение Feb 14 2015, 13:18
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Касательно старых серий - C8051F0xx/1xx/2xx... без крайней надобности я бы не стал их применять.

А я как раз на аукционе Ebay выиграл C8051F120 за $1,8. В Silabs IDE в списке поддерживаемых МК его не оказалось.
Прикрепленное изображение


Серии поновее - 7xx...9xx, 38x куда интереснее.
Среди новых серий я альтернативу C8051F120 не нашел: такой же корпус 100 выводов, частота 100 МГц и т.д.

Доступно много качественной информации по МК от Silabs, и без errata. На русском языке тоже много. А примеров просто море...
Видимо я плохо искал: не увидел такого объема ресурсов как для МК AVR от Atmel.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Feb 14 2015, 20:06
Сообщение #15


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



У F120 цены сейчас где-то такие. Грубо говоря, $15 за штуку при тысячных тиражах.
Т.е. неконкурентоспособные. Да, в отличие от того же атмела, они будут выпускаться "до последнего клиента" - цена только будет негуманная с тенденцией к росту со временем.
Но им есть масса альтернатив, очень существенно дешевле, даже у тех же Silabs, но на ядре Cortex-M3 (SIM3xx), или Cortex-M0 (приобретённые силабсом Gecko от Energymicro, вкупе с самой конторой). А вот 25...50-мегагерцовые C8051 вполне могут AVR заменить, с изрядным запасом по всем параметрам.
C8051F85x, похоже, что сделаны для того, чтобы вынести мелкие AVR и им подобные с рынка - хотя там такой цели не ставилось. sm.gif
Касательно ресурсов, у силабса их в разы меньше, чем у атмела, но вполне достаточно, если мало-мальски знаешь английский. sm.gif Вот только Simplicity Studio, которая там выпрыгивает наверх в "Software downloads", ставить не советую. Оно там вроде много всего в одном, но в реале вещь страшно тормозная и многоглючная. Может, для EFM32 там всё и нормально, но для C8051 явно недопилили.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th April 2024 - 22:07
Рейтинг@Mail.ru


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