Страница 9 из 15
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Ср авг 10, 2011 20:06:06
МитяРа
Gudd-Head писал(а):пришлось фигачить на СИ
Каюсь - читал, но не запомнил..
Gudd-Head писал(а):СиЛабами тут практически никто не работает.
Да и все МК51 тут на форуме не особо распространены.. Может из-за того, что в основном котята на форуме..
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Ср авг 10, 2011 20:15:35
Gudd-Head
МитяРа писал(а):Да и все МК51 тут на форуме не особо распространены.. Может из-за того, что в основном котята на форуме..
Но зато спасибо вам — я узрел что у СиЛаба есть МК в паябельных корпусах со скоростью до 100 MIPS!!! В отличае от АВРа, где всего 16-20 МГц у Тини-Мега и до 32 МГц у ХМега.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Ср авг 10, 2011 20:37:15
МитяРа
Сравнивать впрямую МГц и MIPS-ы не очень корректно - даже Интел это поняла и сняла свой лозунг "Даёшь МГц-ы"..
Всё познаётся на конкретных применениях и под конкретную задачу.. Да и архитектура и система команд МК имеют существенный вес..
Вот например, на МК51 мя выдам на линию порта меандр затратив 4 байта памяти программ и написав две строчки на АСМе..
Сколько для такой-же задачи понадобится ресурсов в AVR с его"кастрированным" битовым процессором - мя не знаю..
Это не тема для "холивара", просто мя высказался..
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Ср авг 10, 2011 21:00:03
Gudd-Head
МитяРа писал(а):Вот например, на МК51 мя выдам на линию порта меандр затратив 4 байта памяти программ и написав две строчки на АСМе..
Если на то пошло, то мне не на много большего и надо: только сохранить значение с порта в оперативке. Сколько тактов это займёт и какими командами???
У АВРа 3 такта :
in r??, PIN?; 1 такт чтение в порта в РОН
ST X/Y/Z+, r??; 2 такта сохранения РОН в ОЗУ с пост-инкрементом адреса или пре-декрементом
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 09:43:41
МитяРа
Gudd-Head писал(а):в ОЗУ
Какое ОЗУ имеется ввиду?
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 10:08:06
Мастер Ломастер
МитяРа писал(а):Вот например, на МК51 мя выдам на линию порта меандр затратив 4 байта памяти программ и написав две строчки на АСМе..
Сколько для такой-же задачи понадобится ресурсов в AVR с его"кастрированным" битовым процессором - мя не знаю..
если имелось ввиду генерирование меандра в программном цикле, то для AVR это тоже потребует 2 команды и 4 байта

правда, работать будет только на "новых" мегах и тиньках.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 10:27:20
Gudd-Head
МитяРа писал(а):Какое ОЗУ имеется ввиду?
Встроенное в МК.
UPD: Пожалуй, отвечу сам себе: использовать команду MOVX с определёнными настройками регистра External Memory Configuration.
Итого получается полная задница в 5 тактов:
mov A, PORT?; 1 такт, считываем из порта в аккум
movx @DPTR, A; 2 такта, сохраняем содержимое аккума в оперативке с адресом согласно DPTR
inc DPTR; 2 такта, увеличиваем значение адреса
Естессно, если сохранять только 256 байт, то можно сократить на 1 такт за счёт простого инкремента одного байта.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:22:14
МитяРа
Gudd-Head писал(а): использовать команду MOVX с определёнными настройками регистра External Memory Configuration.
Верно.. Только надо будет уточнить по поводу "шустрости" внутреннего ОЗУ..
Мастер Ломастер, а что в AVR делает команда:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:25:01
Мастер Ломастер
МитяРа писал(а):что в AVR делает команда:
команда
SBI PORT, BIT устанавливает в порту ввода-вывода
PORT заданный бит
BIT в единицу.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:26:00
Gudd-Head
МитяРа писал(а):Мастер Ломастер, а что в AVR делает команда:
Можно я отвечу?
Команда записывает в разряд n лог. "1" защёлки считывателя порта В, тем самым опрокидывая выходной буфер.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:35:33
МитяРа
Gudd-Head писал(а):если сохранять только 256 байт, то можно сократить на 1 такт за счёт простого инкремента одного байта.
Если 256 байт, то можно использовать страничные пересылки, но по тактам будет тоже самое..
Поправлю:
movx A, @dptr - 3 такта..
Мастер Ломастер писал(а):команда SBI PORT, BIT устанавливает в порту ввода-вывода PORT заданный бит BIT в единицу.
Gudd-Head писал(а):Команда записывает в разряд n лог. "1" защёлки считывателя порта В, тем самым опрокидывая выходной буфер.
Единицу выставили - хорошо, а ноль кто выставлять будет?
У 51-го есть команда инвертирования бита,
CPL bit
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:39:17
Gudd-Head
МитяРа писал(а):Единицу выставили - хорошо, а ноль кто выставлять будет?
У 51-го есть команда инвертирования бита, CPL bit
Эта команда (именно SBI PINX, n) как раз инвертирует (опрокидывает) выходной уровень, т.к. мы пишем не в регистр выходного буфера PORTХ, а во входной — PINX. По сути, это полный аналог CPL bit, но только к портам ввода-вывода.
МитяРа писал(а):Поправлю: movx A, @dptr - 3 такта..
http://www.gaw.ru/html.cgi/txt/doc/micr ... /movx_.htm
http://digital.sibsutis.ru/MCS51/instr1.htm
Пишут, что два

И уж что-что, а ОЗУ должно быть шустрее флэша.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:48:33
МитяРа
Gudd-Head писал(а):Пишут, что два
Это ты для "классики" смотришь, где 1 цикл=12тактов кварца..
У SiLabs-а циклов нету, а считается сразу в тактах.. В книжке у Николайчука написано - 3 такта..
Слушай, вот ты когда с АЦП прогу писал, ты как его запускал/считывал, по таймеру или программно?
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 11:51:05
Gudd-Head
МитяРа писал(а):В книжке у Николайчука написано - 3 такта..
Кстати да, совсем забыл про неё
МитяРа писал(а):Слушай, вот ты когда с АЦП прогу писал, ты как его запускал/считывал, по таймеру или программно?
Программно. Запускал соотв. битом, считывал — по флагу прерывания

Т.е. в тексте проги тупо зависал пока не появится флаг готовности.
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 12:02:37
МитяРа
Gudd-Head писал(а):.е. в тексте проги тупо зависал пока не появится флаг готовности.
Значит программно..
Т.е. сначала устанавливал бит запуска, а потом ждал готовности данных - да?
Вчера вечером разбирался с АЦП в F300-м читал-считал-читал-считал, но так и не понял насчёт реальных скоростей преобразования..
Надо будет в реале попробовать эти 5 бит задания скорости перебрать от 0 до 32 и посмотреть, что получится..
Перелопатив кучу примеров выяснил, что максимальная частота АЦП ставится 7.5МГц..
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 12:09:21
Gudd-Head
МитяРа писал(а):Т.е. сначала устанавливал бит запуска, а потом ждал готовности данных - да?
Да.
В ДШ на Ф300 про АЦП прямо написано до 500 тыс. выборок в сек. Разве не так?
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 12:40:23
МитяРа
Gudd-Head писал(а): написано до 500 тыс. выборок в сек. Разве не так?
Вот и хотелось это расчётами подтвердить, но пока не получается..
А щас начальник мышь мне подложила - в отпуск не отпускает с понедельника, говорит заменить тя не кем, мол в сентябре отгуляешь..
А дочусик хочет на море..

Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Чт авг 11, 2011 13:30:43
МитяРа
Посчитал - вроде сходится..
Если тактовая АЦП, 7.5МГц, то:
- один период будет 133нС,
- умножаем на 8бит=1.066мкС,
- прибавляем заряд УВХ 300нС=1.366мкС,
- если прибавить время на выставление бита запуска+чтение, когда будут данные готовы+данные записать, куда надо..
Тогда получается, что будет 500КилоИзмерений в секунду или КБайт, т.к. АЦП 8-ми разрядный..
Это хорошо..
Мя когда в начале читал, подумал, что выборка это 1 бит..

Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Пт авг 12, 2011 14:26:07
МитяРа
Ещё вопросик:
- Входной сигнал АЦП написано, что от 0 до VREF..
Если использовать внутренний VREF=Ucc=3.3V, то кака защитить входа от высокого напряжения..
Сначала хотел, как обычно диодами на Ucc, но это будет уже больше опорного..

Re: MCS51, вопросы перехода с "классики" на SiLabs...
Добавлено: Пт авг 12, 2011 14:36:36
Gudd-Head
МитяРа писал(а):Если использовать внутренний VREF=Ucc=3.3V, то кака защитить входа от высокого напряжения..
Сначала хотел, как обычно диодами на Ucc, но это будет уже больше опорного..

Ооочень хороший вопрос

(просто я озадачился этим при проектировании цифровой приставки для аналогового осцилла).
Для начала: что измерять будем?
Я планирую защищаться примерно такой схемкой:
