ПО измерителя длительности сигнала

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: ПО измерителя длительности сигнала

Сообщение Uklunok »

coredumped писал(а):У тебя какой кварц кстати?
У меня ведь стенд STK500, в стенд можно вставить любой кварц. Ну в самой меге16 есть внутренний кварц на 16МГц, если не ошибаюсь. Ну когда я делал лабу с портами ввода/вывода, как то не задумывался о кварце.
Да и кстати хочу спросить зачем в самой программе настраивать частоту и скорость передачи, если в avrStudio можно это сделать. Или я ошибаюсь? Аааа, в avrStudio настраивается скорость от компа к стенду при записи во флеш, ну кстати тот же самый УАРТ...
Про ошибку генератора импульсов не посмотрел, т.к. с инетом щас напряжно, скачивать даташит - весит много.
Ну думаю ответил на Ваш вопрос? Если что, могу взять кварц да и вставить в стенд.
В субботу проверю код на стенде, т.к. под рукой нет. Спасибо за помощь.
Значит в этой программе я увижу строку "HI!"? и циклический буфер там есть, ну классно тогда. :)
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: ПО измерителя длительности сигнала

Сообщение coredumped »

Uklunok писал(а): Значит в этой программе я увижу строку "HI!"? и циклический буфер там есть, ну классно тогда. :)
Если поставишь кварц на 3.6864МГц - то без всяких исправлений увидишь. Там циклик на 16 байт, можно сделать больше. Для твоей задачи лучше поставит кварц на 8 или 16 МГц. Внутренний генератор может дать максимум 8Мгц (почитай даташит). Использовать не советую - частота "плавает", что добавляет ошибок при обмене и измерении длительности. Когда кварц поставишь, про фьюзы не забудь - нужно выбрать "External Resonator, High Freq" - точно не помню, но смысл такой. Ну и clock в программе должен соответствовать частоте кварца, как я писал выше.
ЗЫ: Если что неясно, спрашивай
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: ПО измерителя длительности сигнала

Сообщение Uklunok »

1). Т.е., если поставить кварц на 8МГц, то получатся такие строки:
.equ clock = 8000000 ;clock frequency
.equ baudrate = 115200 ;choose a baudrate
.equ baudconst = (clock/(16*baudrate))-1

2). Величина baudrate может быть любой, или только стандартные варианты?
3). Выставлять в АВРстудии, что используется внешний резонатор, это в настройках? А то проверить сейчас не могу без стенда.
4). Значит, получается, что в самодельных устройствах для тактирования микроконтроллера лучше ставить внешний ГТИ(кварц), чем использовать внутренний?
5). Строка
.equ SDRAM_DATA = 32 ; program data space - выделяем память размером 32байта для сохранения данных, которые из буфера, чтоль?
Вроде всё спросил...
Ну тогда буду соображать как совместить два куска кода в один большой. Точнее засунуть в циклический буфер 3 регистра в которых хранится величина измеренного сигнала :)
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: ПО измерителя длительности сигнала

Сообщение coredumped »

Uklunok писал(а):1). Т.е., если поставить кварц на 8МГц, то получатся такие строки:
1. Все правильно.
2. Величина baudrate может быть любой - контроллеру пофиг, только чем принимать будем? Поэтому используйте стандартные значения 2400, 4800... итд. У тебя baudrate выбран неудачно (см табличку, из даташита). При 8Мгц и скорости 115200 ошибка составляет 8.5% - это очень много. Для такого кварца, приемлимыми значениями будут 9600, 19200, 38400 (ошибка 0.2%)
3. Использование внешнего кварца утанавливается с помощью фьюзов (fuses) CKSEL (см таблицу 4 даташита). Фьюзы устанавливаются программатором.
4. Внешний кварц необходим, если нужно получить стабильный, точный клок. Это необходимо для нормальной работы коммуникационных портов, где скорость регламентирована, например UART (как в нашем случае), или при генерации/измерении, чтоб получить необходимые временные характеристики.
5. SDRAM_DATA указывает сколько всего памяти нужно для хранения переменных, остальная память отдается стеку. Я там указал 32, и циклик 16 - это означает, что есть еще 16 байт под переменные. Если не будешь ничего размещать в памяти, кроме буфера, то можно указать SDRAM_SIZE равным размеру буфера (CB_SIZE).
Все будет только лучше, в крайнем случае - хуже.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: ПО измерителя длительности сигнала

Сообщение Uklunok »

Cпасибо, всё ясно. Тогда ставлю бодрейт на 38400. Завтра возьму стенд - проверю)
Реклама
Аватара пользователя
Uklunok
Вымогатель припоя
Сообщения: 561
Зарегистрирован: Сб апр 03, 2010 10:12:41
Откуда: Хабаровск

Re: ПО измерителя длительности сигнала

Сообщение Uklunok »

Почему то снова не заработало... Сразу оговорюсь, что кварц не ставил, т.к. они все выпаяны и в разъём не влазили :( , поэтому использовал внутренний генератор. Запустил мониторинг COM порта и ничего хорошего. Ну я разозлился, взял осциллограф и проверил ( ниже фото. Верхний сигнал RXD, нижний - TXD, соответственно 14 и 15 ножки )
Изображение
Это даже цифровым сигналом сложно назвать... Если считать главным устройством ПК, то подчинённое это наш микроконтроллер мега16. Получается, что верхний сигнал - данные идут в микроконтроллер, периодический сигнал с частотой около 3,65МГц. Эта частота, как я понял устанавливается во вкладке HW SETTINGS в студии и не может быть выше 3,686МГц, ниже фото
Изображение
В самой программе менял частоту и бодрейт, к примеру ставил значения которые у Вас в программе, и ничего, не схватывает.
Поидее на линии TXD должен быть такой сигнал: 48 49 21 (HI!), в двоичной сист.счисл. _/\__/\____/\__/\__/\__/\____/\ (01001000 01001001 0010 0001). И где это? Уже не знаю за что браться, а ведь скоро уже и сессия... :( :(
Реклама
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: ПО измерителя длительности сигнала

Сообщение akl »

Здравствуйте. Замечу, что обмен по RS232 (UART) идет Младшими битами вперед и сопровождается START-0 и STOP-1 битами. Т.е. посылка кода 49h будет такая STOP ... STOP START 1 0 0 1 0 0 1 0 STOP
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»