|
Silabs C8051F120 |
|
|
|
Sep 4 2013, 18:06
|
Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807
|
Приветсвую форумчане! Подскажите пожалуйста как для данного контроллера написать программу, по которой контроллер работал бы как счетчик реального времени (часы минуты секунды) и в некоторые (случайные) промежутки времени принимал данные по UART. При этом важно чтобы не сбивались часы пока идет прием данных по UART. Заранее благодарю!
|
|
|
|
|
Sep 5 2013, 04:50
|
Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807
|
Честно говоря не очень понял, как при этом не будут сбиваться секунды. Ведь пока мы работаем с UART, мы не можем обрабатывать сигналы от таймера.
|
|
|
|
|
Sep 5 2013, 15:18
|
Группа: Участник
Сообщений: 11
Регистрация: 26-02-13
Пользователь №: 75 807
|
Спс за ответ. Попробую по прерываниям. В проекте требуется точнойсть до милисекунд, а обмен данными по UART большой. Просто, думал что может как-то без прерывааний обойтись
|
|
|
|
|
Sep 5 2013, 22:37
|
Знающий
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831
|
Цитата(Ivan575 @ Sep 6 2013, 01:18) Спс за ответ. Попробую по прерываниям. В проекте требуется точнойсть до милисекунд, а обмен данными по UART большой. Просто, думал что может как-то без прерывааний обойтись Выберите режим таймера с автоматической перезагрузкой. В этом случае, даже если вы не сразу обработаете текущее прерывание таймера следующее наступит все равно через выбранный интервал, а не смещенное по времени на период обработки прерывания. Главное, чтобы к наступлению следующего прерывания текущее было уже обработано, иначе потеряете тик. Для этого выставляете разумное время между перезагрузками таймера, т.е. максимально допустимое. И, второе, все обработки прерываний, как писал Палыч, делаете максимально короткими. Про длинный UART не понял. Вы же не собираетесь в нем сидеть пока не примете всю посылку? Нужно только обрабатывать в прерывании побайтно. А уже по завершении приема всей посылки в какой-то буфер там же в прерывании выставить флаг окончания приема. А обработку этого флага и, соостветственно, принятой посылки вести в основном цикле программы.
|
|
|
|
|
Sep 6 2013, 06:46
|
Гуру
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954
|
Цитата(barabek @ Sep 6 2013, 02:37) Выберите режим таймера с автоматической перезагрузкой. В этом случае, даже если вы не сразу обработаете текущее прерывание таймера следующее наступит все равно через выбранный интервал, а не смещенное по времени на период обработки прерывания. Немного поправлю... Таймер, конечно же, нужно настраивать на работу с автоматической перезагрузкой. В этом случае требования на прерывание (флаги прерывания) будет выставлятся таймером через один и тот же интервал времени (с учетом погрешности частоты задающего генератора). Однако, запуск процедуры обработки прерывания от таймера может быть несколько задержан относительно времени выставления требования прерывания (флага прерывания) от таймера. Эта задержка запуска возникнет, если в момент выставления требования прерывания в МК запрещены прерывания, например, если в данный момент работает процедура обработки прерывания от UART (все прерывания в МК51 запрещаются при входе в процедуру обработки прерывания до выхода их процедуры). Поэтому, изменение значений переменных времени (часы, секунды, миллисекунды) будет несколько cдвинуто во времени относительно тика таймера (максимально - на время работы процедуры обработки прерывания от UART). Если этот сдвиг - критичен, то процедуру обработки прерывания от UART необходимо максимально "укоротить"...
|
|
|
|
|
Nov 6 2013, 13:58
|
Группа: Участник
Сообщений: 6
Регистрация: 3-03-09
Из: spb
Пользователь №: 45 605
|
если известна периодичность сообщений по UART, можно подобрать периодичность прерываний от времязадающего таймера на пару порядков выше... в каждом прерывании от таймера проверять флаг от UART - не пришло ли сообщение... от прерываний UART отказаться...
|
|
|
|
|
Feb 14 2015, 05:37
|
Знающий
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112
|
Цитата(Radik2 @ Feb 13 2015, 22:07) ...которые имеют частоту до 100МГц. Например C8051F120... Их преимущество - частота, еще периферия несколько улучшена. Также есть возможность динамического изменения внутренней тактовой частоты, это для снижения электропотребления. Когда-то сделал много проектов на этих МК, остался доволен. В частности, был конвертор Ethernet-ИКМ30, это для телефонии, там нужна была скорость, какую меги тогда еще не обеспечивали. Да, еще софт для Silabs нормальный… И еще эксперимент был, разогнал тактовую частоту до 140МГц и МК работал...
|
|
|
|
|
Feb 14 2015, 08:34
|
Знающий
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112
|
Цитата(Radik2 @ Feb 14 2015, 10:43) Вы можете советовать С8051F для начинающих? Вы писали код на ассемблере или Си? Советую и для начинающих тоже. Всегда надо с чего-то начинать... Но Вы, похоже, в МК не новичек В чем преимущество: Доступно много качественной информации по МК от Silabs, и без errata. На русском языке тоже много. А примеров просто море... Программатор можно сделать самому или купить. Среда программирования - это uVision 3 и выше, что от Keil (для нас бесплатно). Можно писать на С или asm, или в обоих сразу. Опять же примеров этому много. Я чаще писал на С, но для критических мест делал вставки на asm. Там у 51-архитектуры есть полезные команды косвенных переходов ( JMP @A+DPTR), а также банки РОН, что ускоряет обработку прерываний. Так вот, работать с ними лучше через asm. Есть и недостатки, свойственные 51-архитектуре, но в целом это хороший 8-разрядный микроконтроллер, особенно по энергопотреблению. Также широкий выбор корпусов, от обыкновенных до мини 4*4мм с выводами вниз. Дерзайте...
|
|
|
|
|
Feb 14 2015, 09:07
|
старший лаборант
Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097
|
Цитата(Serhiy_UA @ Feb 14 2015, 10:34) Советую и для начинающих тоже. Всегда надо с чего-то начинать... Среда программирования - это uVision 3 и выше, что от Keil (для нас бесплатно). Собственно, компилятор/ассемблер/линкер от Keil для контроллеров Silabs вообще бесплатные, по-честному и без ограничений. Для получения лицензии понадобится только регистрация. А вот отладка - только в Silabs IDE, или же как обычно... Цитата(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).
--------------------
Китайская комплектация - европейское качество! ;)
|
|
|
|
|
Feb 14 2015, 13:18
|
Частый гость
Группа: Участник
Сообщений: 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.
|
|
|
|
|
Feb 14 2015, 20:06
|
старший лаборант
Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097
|
У F120 цены сейчас где-то такие. Грубо говоря, $15 за штуку при тысячных тиражах. Т.е. неконкурентоспособные. Да, в отличие от того же атмела, они будут выпускаться "до последнего клиента" - цена только будет негуманная с тенденцией к росту со временем. Но им есть масса альтернатив, очень существенно дешевле, даже у тех же Silabs, но на ядре Cortex-M3 (SIM3xx), или Cortex-M0 (приобретённые силабсом Gecko от Energymicro, вкупе с самой конторой). А вот 25...50-мегагерцовые C8051 вполне могут AVR заменить, с изрядным запасом по всем параметрам. C8051F85x, похоже, что сделаны для того, чтобы вынести мелкие AVR и им подобные с рынка - хотя там такой цели не ставилось. Касательно ресурсов, у силабса их в разы меньше, чем у атмела, но вполне достаточно, если мало-мальски знаешь английский. Вот только Simplicity Studio, которая там выпрыгивает наверх в "Software downloads", ставить не советую. Оно там вроде много всего в одном, но в реале вещь страшно тормозная и многоглючная. Может, для EFM32 там всё и нормально, но для C8051 явно недопилили.
--------------------
Китайская комплектация - европейское качество! ;)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|