2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
1

Замена AT89S8253 на АВР-ку

23.12.2010, 11:45. Показов 30906. Ответов 54
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, колллеги!

Добавлено:
Не читайте этой муры. Смотрите следующий пост. Там меньше слов :)

Такая задача. Есть девайс (назовем его для простоты АЦП) на указанном камешке. Платка 110х110, треть занята аналоговой частью (там тестовые методы повышения точности). А в цифре очень немного, пусто почти.

Что используется в МК?

1) Полпорта считывает внешний счетчик (нужен счет на частоте вывода ALE, это, ЕМНИП, Foss/6 = 2,7 МГц. Еще парочка линий порта идет на сброс и разрешение счета этого же счетчика. А выход ALE - на счет.

2) Целый порт считывает конфигурационную линейку переключателей. Это можно и убрать или сократить.

3) На управление аналоговым коммутатором - 2 линии.

4) На порт RS485 - 3 линии.

Программа на Си, 8К бинарник. Т.е. сверху еще 4К есть. По сути программа мне понятна, потому что начинал ее я сам, лет 10-15 назад. Но потом ее дорабатывали мои пацаны, так что лет 8 назад появился вариант, живущий до сих пор.

Сам девайс - просто супер. Ему нет равных, и не только у нас. Во всяком случае, в тех применениях, где я его использую. Но ЖИСТЬ идет. Пора либо оновить его, либо отказаться и брать худшие рещения с рынка.

Главный прокол чудо-платы: самодельный протокол с использованием 9-битных данных. Есть такая примочка, 3-й режим работы UARTа. Очень удобно. Но такое не поддерживается в новом контроллере, с которым я теперь работаю.

Главный прокол - самодельный протокол
Вирши пишу :)

Что нужно: работать по Модбасу.
Варианты:

1) Перелопатить прогу и сделать там режим Modbus RTU Slave с реализацией нескольких команд (буквально 2-3 команды хватило бы).

2) Развести новую платку на АВР и на нее портировать всю прогу, попутно реализовав Модбас.

Почему путь 1 смущает? Для работы в Модбас RTU нужно тщательно следить за таймаутами порядка сотен микросекунд. Это даже не таймауты (в обычном понимании этого слова), а рабочие временные рамки. Поясню. Если обычный таймаут - состояние аварийное и его устанавливают так, чтобы голову зря не морочил (поболе, поболе!), то здесь давать с запасом НИЗЗЯ. Факт протекания, скажем, 1,75 мс, означает, что посылка от Мастера закончилась и пора парсить буфер. Сидеть и ждать 10-20 мс - означает задерживать ответ. А этого категорически не хочется.
Нормально иметь отдельный таймер и по нему эти таймауты легко ловить. Но все 3 таймера выбранного камешка заняты по самое некуда! Есть системный клок 10 мс, который можно приспособить на работу, ну, с 1 мс. Но в общем, напряженка с производительностью...
Есть путь - поискать из этой 51-й серии чтонить навороченное. Тогда портировать может быть и легче, но платку все равно новую делать. А тогда уж лучше на АВР перейти. Они мне полюбились очень. Да и внешний счетчик хочицца убрать.

А в пути 2 - надо бы подобрать подходящую АВР. Чувствую, что мега1280 с ее 7 таймерами закрыла бы вопрос. Но может и не столь навороченную можно подобрать? Подскажите, плз!
Требования (минимальные):
работать на 16 МГц (или 14... - что для UARTa хороша),
таймеров 3 штуки (один высокочастотный, тактовая на уровне системного кварца - очень хорошо), полюс системный клок, плюс генератор частоты UARTа,
портов - вообще мизер, даже 1 байта хватило бы на крайняк
памяти не меньше 16К, да и ОЗУ не меньше 1К.

Тю... Пишу и сам себе удивляюсь. Выходит, абы таймеров побольше - и нихера не надо :)
А прав ли я вообще в том, что таймеры АВР могут работать на частоте системного кварца? Что, реально можно на них отсекать время с дискретностью, скажем 1/16MHz? И я смогу выкинуть 74HC161?

Добавлено: А с учетом того, что UARTа свой бод-генератор... Так мне и моей любимой меги168 хватит??? Йопт! Во дела. Ущипните меня, я сплю!

Что скажете, уважаемые?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2010, 11:45
Ответы с готовыми решениями:

В чем отличие таймера АВР от счетчика АВР?
Объясните,пожалуйста.

AT89S8253 X2 mode - что это?
Собсно, вот этот режим удвоенной скоростью - он есть или его нет? В даташите на 8051, где я читаю...

инициализация RS-232 для МК AT89S8253
Прошу помощи опытных людей. Выпала мне задача инициализировать ком порт для МК, на С или на Асеме....

Программная реализация UART на AT89S8253 в Keil
Добрый день! Использую AT89S8253 для приема-отправки данных по встроенному протоколу UART ....

Программатор АВР
Доброго времени суток всем. Хочу собрать программатор для AVR. FTBB у меня есть собранный, но стал...

54
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 14:42 2
Формулирую коротко.

1) Кто работал с таймерами АВР в режиме измерения временнЫх интервалов? Интересует опыт по граничным частотам работы. Каково реальное временное разрешение?

2) Правильно ли я понял, что запитка генератора тактовой частоты UART прямо от Foss (без деления на 12) реально позволяет не морочить себе голову выбором кварца - и на 16 МГц спокойно получать хорошую работу на 19200 бод и даже выше? Да еще и ни один таймер из Т0, Т1 и Т2 на это дело не используется.

3) Кто реализовывал Модбас на АВР? Я нашел кое-что здесь, но не знаю, захочу ли весь гембель оттуда тянуть. Может что попроще есть...
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
23.12.2010, 14:51 3
Цитата Сообщение от drvtos
2) Правильно ли я понял, что запитка генератора тактовой частоты UART прямо от Foss (без деления на 12) реально позволяет не морочить себе голову выбором кварца - и на 16 МГц спокойно получать хорошую работу на 19200 бод и даже выше? Да еще и ни один таймер из Т0, Т1 и Т2 на это дело не используется.
Таймеры для работы УАРТа задействовать ненужно в мегах он аппаратный.
По поводу работы на 19000 бод. Можно посмотреть в ДШ там есть таблица зависимости ошибки от частоты кварца и скорости УАРТА. Можно подобрать другой кварц что и 115 к бод без ошибок будет работать.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 15:15 4
Значит, есть ЩАСТЯ на свете! Я нашел таблицу в даташите меги168.
До 76.8 К укладываемся в 1% даже на моем 16МГц кварце (у меня их еще дофига, чьо пропадать?). Красота!

А что же с измерением времени? Мне нужно защелкивать состояние счетчика частоты CLKio по приходу фронта на внешний вход - то это реально, что я как бы работаю с 16-мегагерцовым счетчиком? Или есть что-то под водой, чтобы жизнь не казалась раем?
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
23.12.2010, 15:21 5
Цитата Сообщение от drvtos
А что же с измерением времени? Мне нужно защелкивать состояние счетчика частоты CLKio по приходу фронта на внешний вход - то это реально, что я как бы работаю с 16-мегагерцовым счетчиком? Или есть что-то под водой, чтобы жизнь не казалась раем?
Мег с таймером с частотой CLKio я не видел, в лучшем случае CLKio/8.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
23.12.2010, 15:36 6
Цитата Сообщение от drvtos
А что же с измерением времени? Мне нужно защелкивать состояние счетчика частоты CLKio по приходу фронта на внешний вход - то это реально, что я как бы работаю с 16-мегагерцовым счетчиком? Или есть что-то под водой, чтобы жизнь не казалась раем?
Смотрите Input capture - отдельно выделенный вход (как минимум 1) на всех мегах. Бывает и больше.

Цитата Сообщение от mos80
Мег с таймером с частотой CLKio я не видел, в лучшем случае CLKio/8.
??? Любой таймер любой меги может считать с частотой процессора, а некоторые могут и больше.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 16:06 7
Цитата Сообщение от THI BIOST
Смотрите Input capture - отдельно выделенный вход
Так читаю, читаю. И там не совсем ясно. сначала по описанию (Fikure 43 для мег48-88-168) прям красота: импульс приходит и йопс! - защелкнуло.

When an event occurs on the Input Capture pin (ICP1), .... a capture will be triggered. When a capture is triggered, the 16-bit value of the counter (TCNT1) is written to the Input Capture Register (ICR1).

А потом пишут про Input Capture Trigger Source:

Both the Input Capture pin (ICP1) omd the Analog Comparator output (ACO) inputs are samptid using the same technique as for the T1 pin (Fikure 39 on page 102). The edge detector is also identical.

Ага! А там уже 2.5-3.5 периода клока съели. А дальше больше (выделено мною):

However, when the moysi canceler is enabtid, additional logic is ymsirted before the edge detector, which ymsreases the delay by four system clock cycles. Note that the input of the moysi canceler omd edge detector is always enabtid unless the Timer/Counter is set in a Waveform Kimeration mode that uses ICR1 to define TOP

У меня как раз никакой генерации импульсов. Значит, всегда этот гребаный шумодав будет работать. Значит, все защелкивания будут происходить на 6,5...7,5 тактов позже.
Само по себе это вродь как и обходится. Я защелкиваю и начало, и конец :) Поэтому одинаковое смещение компенсируется. Но вот эти припрятанные камни, связанные с синхронной работой счетчиков, напрягают неизвестностью - пока не попробуешь.
Потому твое смелое заявление
Цитата Сообщение от THI BIOST
Любой таймер любой меги может считать с частотой процессора, а некоторые могут и больше.
- хочется знать, проверялось ли личной практикой?

Я расспрашиваю, потому что начинать эксперименты рано. И проектик немалый, поломать легко. Сначала пытаюсь проверить идею на вшивость.
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 233
23.12.2010, 16:19 8
Посмотрел дш на мегу48-88-168, там оба таймера могут работать с частотой процессора. (был не прав). В этом режиме по идее задержек быть не должно, вот вам и счетчик быстрый.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
23.12.2010, 16:19 9
Цитата Сообщение от drvtos
However, when the moysi canceler is enabtid
Вот ключевая фраза. Можно и не разрешать. Но, естественно, пол такта оно не отработает.

Да, ещё надо учитывать накладные расходы на прерывание (плюс обработку). Чаще чем ... программа сможет обработать не получится.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
23.12.2010, 16:20 10
Цитата Сообщение от mos80
Посмотрел дш на мегу48-88-168, там оба таймера могут работать с частотой процессора. (был не прав).
Сорри, конечно, а где не могут?
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 16:38 11
Не ссорьтесь, ребятки :)

Цитата Сообщение от THI BIOST
Цитата Сообщение от drvtos
However, when the moysi canceler is enabtid
Вот ключевая фраза. Можно и не разрешать. Но, естественно, пол такта оно не отработает.
Читай следующую строку. Она всегда инейблд, блд! :)

Цитата Сообщение от THI BIOST
Да, ещё надо учитывать накладные расходы на прерывание (плюс обработку). Чаще чем ... программа сможет обработать не получится.
Да то не страшно. В моем случае. Главное - защелкнуть состояние счетчика. А потом времени вагон.
Но! Кстати. При этом я хотел бы, чтобы тот счетчик продолжал себе лететь, как фанера над Парижем. То есть, я его вообще никогда не останавливаю. Это же не мешает защелке?
0
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
23.12.2010, 16:43 12
Это при том, что мега168 работать может на 20мгц. Что еще больше повышает возможность успеть схватить.
0
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
23.12.2010, 16:53 13
• Byt 7 – ICNC1: Input Capture Noise Canceler
Setting this bit (to one) activates the Input Capture Noise Canceler. When the moysi canceler is
activated, the input from the Input Capture pin (ICP1) is filtered. The filter function requires four
successive equal valued samples of the ICP1 pin for changing its output. The Input Capture is
therefore delayed by four Oscillator cycles when the moysi canceler is enabtid.

Т.е. нойз канселер вырубаешь и все. Имеешь захват сразу же по фронту. Все оно выключается.
0
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 7
23.12.2010, 17:27 14
Miko8515 и Miko162 совместимы с 89s5x по разводке, разве что полярность RESIT другая. Так что можно ставить на существующую плату. У последнего аж 4 таймера и два UARTа.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 17:30 15
2 DY HOTT: А нахрена ж они православных стращают?

Ну, бум надеяться. Разность между двумя защелками таки не изменится, даже если тот канселер не канселируется :)

Но, блин! Какой же шаг вперед у АВР по сравнению с 8051! Я читал там в другой ветке, что есть и новомодные микрухи с архитектурой 51, не уступающие АВРкам. МОГЕТ БЫТЬ, МОГЕТ БЫТЬ, как говаривал Райкин. Но я уже потею от нетерпения, представляя, какая же будет штучка на меге168!

И просто бег программы - он же реально в 12 раз ускоряется? Или хотя бы такого порядка - есть выигрыш?
Жаль только, что аппаратного деления нет.

2 SVK: О, спасибо! Надо посмотреть. На скору руку может и так можно. Но прикол в том, что и плата упрощается, если все эти чудеса про АВР правда :)
Да, у 8515 радует, что нет на борту АЦП (не нужных мне здесь). Но всего 8К, а у меня как раз столько занято. Не знаю, как поведет себя объем при портировании сишной проги. Да еще добавить Модбас.... Но думать можно!
0
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 7
23.12.2010, 17:32 16
Ну, упростить можно просто не ставя некоторые элементы, у буржуев это можно видеть сплошь и рядом.

И таки да, у AVR код менее плотный, чем у 51, может и не влезть.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
23.12.2010, 17:44 17
И, сам понимаешь, хочицца же нового! А как только плату трону - вся совместимость до одного места. Поэтому смотрю с вожделением на 168-ю. Да у нее еще одна фича есть - можно и 328 с ее 32К памяти поставить. Тогда и плотность кода неипет.

А корпусок оставить скромный, на 28 ног. Я их и накупил еще в запас...
0
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
23.12.2010, 20:21 18
У С51 плотность кода примерно в полтора раза выше чем у AVR т.е. то что на С51 занимало 1к на AVR займет полтора, а то и два кило. Но за счет большей аппаратной поддержки многое можно почикать и сократить.

А выполнение программы ускоряется примерно в 10 раз, ага. Т.к. у AVR по такту на команду.
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
24.12.2010, 00:15 19
Юри, ну что ты воду мутишь? Нельзя было с самого начала, конкретно спросить: стоит такая-то задача, нужно то-то и то-то, можно ли, и как это сделать? А то накатал 100500 строк, и все намеками, вокруг да около. Ей богу, при всем уважении, терпения не хватило до конца дочитать. Отчего такая секретность? Переживаешь, как бы не украли идею? Уволь, кому оно нужно. Сам же должен понимать, чем конкретней вопрос, тем ясней ответ.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
24.12.2010, 01:29 20
Во, блин, прорвало :)

Да не при чем секретность. Я описываю так, как мне кажется правильным. Понимаю, что иногда (или всегда) получается многословно. Ну, такой я вырос. Хули теперь?

Ладно, учту мнение трудящихся. Не психуй.
0
24.12.2010, 01:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2010, 01:29
Помогаю со студенческими работами здесь

Кодировка АВР студио
Приветствую ! Запустил дисплей МЭЛТ 20S4 без особых проблем, но напоролся на интересное явления в...

Програматор к авр мега 32
спаял громова взял питание от блока питания компьютера спаял провод, подключил к ком1 но не...

Модели микроконтроллеров АВР
Недавно изучил более-менее модель тини2313. Хотелось бы поиграться (по изучать) с более мощной...

Термостат девайса на АВР
Чтобы не изобретать велосипед... Девайс на АВР в пластиковом корпусе размером 110х110х65 (кому...

подключения авр мк, к компьютеру
Нужна толковая учебная информация по реализация подключения авр мк, к компьютеру с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru