Chix 0 30 июня, 2008 Опубликовано 30 июня, 2008 · Жалоба Добрый вечер. Подскажите пожалуйста, Как сделать секундомер на ATmega103 длительностью до 5 минут на Code VisionAVR C ? Заранее большое спасибо!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 1 июля, 2008 Опубликовано 1 июля, 2008 · Жалоба 2 марат - вам нужно в интерупте по таймеру инкрементировать дабл например (если дискретность таймера маленькая -2х байт может не хватить ) - зная период таймера легко вычислить какое значение дабла будет по прошествию 5 минут ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Chix 0 1 июля, 2008 Опубликовано 1 июля, 2008 · Жалоба Алгоритм и структурная схема находятся тут : http://electronix.ru/forum/index.php?showt...mp;#entry433443 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiny 0 13 июля, 2008 Опубликовано 13 июля, 2008 · Жалоба Такой вопрос. CodeVision, пример из пакета \cvavreval\examples\DS1820 Термометр с использованием Dallas Semiconductor DS1820, кварц 3.6864MHz В программе используются библиотеки для работы с DS1820. Насколько я поинмаю, для обработки получаемых данных от DS1820 нужны определенные интервалы времени. Я сделал проектик на Mega 16. Такого кварца у меня нет. Есть 4МГц, 4,5МГц и выше. Внутренние частоты МК - 1, 2, 4, 8. Попробывал в Протеусе симуляцию на 4 МГц. Работает. Но в реальном устройстве - нет. Попробывал подключить внешнюю RC-цепь (4,2К 22пФ), выставив соответсвующие фюзы. Опять же на индикаторах ерунда. Есть ли выход из данного положения? Можно ли обойтись без кварца на 3.6864MHz? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiny 0 13 июля, 2008 Опубликовано 13 июля, 2008 · Жалоба Разобрался. Забыл проинвертировать управление транзисторами, которые коммутируют сегменты. Работает и от внутреннего 4МГц и от внешней RC цепи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DeVOuR 0 24 июля, 2008 Опубликовано 24 июля, 2008 · Жалоба простенькй вопросик) Первая моя прога на АТмелах. Атмега8. последоательный порт (USART). принцип приема с прерыванием каков? Система такова: 1. прием определенного байта, который соотв. 1му из 3х определенных последующих действий мк. а) выслать по юарт одни данные б) выслать по юарт другие данные в) приготовится принять данные с передачей проблемм нет, а как организовать прием? я пока что сделал так: 1. принимается байт - срабатывает прерывание - прерываемся - смотрим, какой байт получили - переходим к нужной проце - и тут же, не выходя из прерывания всю процу и выполняем. с трансмиттом то так и будет, а вот с приемом номально? или все же следует както организовать прерывания таким образом, чтобы выходить из него после каждого принятого байта? спс за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 25 июля, 2008 Опубликовано 25 июля, 2008 · Жалоба Приём/передача по прерываниям. При чём лучше передавать пакетом данные - тогда разбор полётов можно засунуть сразу в прерывание + ошибок меньше будет в зашумлённых условиях. Работа приблизительно такова - в ресив интерупте декодировался пакет -> есть комманада и данные - тогда выставляем определённый семафор и системный манагер (можна на таймер какой либо прицепить) по наступлению тика обрабатывает нужный запрос. Передача - забиваете в буффер данные и кол-во для передачи - выставляете флаок и пошли интерупты клацать ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DeVOuR 0 25 июля, 2008 Опубликовано 25 июля, 2008 · Жалоба Kuzmi4, спасибо. передачу переделал на пакетную, прием тоже сделал красиво. в симуляторе работает как часики.. надо дописать ПО под виндоз, тогда посмотрим, че там получится) и, есть ли смысл считать контрольную сумму? или это все зависит от частот и скоростей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bureau 0 26 июля, 2008 Опубликовано 26 июля, 2008 · Жалоба 2 DeVOuR - вё зависит от зашумлённости среды в которой будет идти провод :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OlegH 0 15 августа, 2008 Опубликовано 15 августа, 2008 (изменено) · Жалоба 2 DeVOuR - вё зависит от зашумлённости среды в которой будет идти провод :) Мне так видится, все зависит прежде всего от тяжести последствий приема и обработки искаженного пакета :) Потому что вероятность приема искаженных данных существует всегда (и причины могут быть самые разные). Особенно если одной из обменивающихся сторон является ПК с виндой :) Фактически, в протоколе обмена типа "пакет запроса - пакет ответа" контрольные суммы нужны всегда. Во избежание пусть очень редко случающихся, но весьма неприятных и непредсказуемых глюков :) Даже простая арифметическая сумма или XOR байт пакета куда лучше чем ничего. Ну а по-правильному - CRC8, CRC16 или CRC32 в зависимости от длин пакета и предполагаемой вероятности искажения данных. В качестве прикидки (где-то когда-то что-то такое слышал): CRC16 в типичном канале с BER (Bit Error Rate - вероятностью приема сбойного бита) = 10^-3 (один на тысячу) гарантирует обнаружение ошибки в пакетах с длиной, ограниченной на уровне 256 байт. Изменено 15 августа, 2008 пользователем Олег Хохлов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integral 0 16 августа, 2008 Опубликовано 16 августа, 2008 (изменено) · Жалоба Для работы от внешнего кварца снял все галки CKSELn. Другие галки не трогал. Поставил внешний кварц. После чего МК перестал отвечать програматору. В чем проблема? может нужно было еще какието фьюзы поменять? Как теперь запустить МК? (мега16) Кажется я понял в чем проблема.... по дефолту CKSELn=0001. А в моей проге для програматора по дефолту стояла только 1 галка в CKSELn, соотвецтвенно в этой проге идет наоборот.... галка - 1, нету галки - 0. Таким образом получилось у мну CKSELn=0000. :angry2: Как запустить теперь МК и выставить фьюзы как положено? Изменено 16 августа, 2008 пользователем Integral Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 16 августа, 2008 Опубликовано 16 августа, 2008 · Жалоба Как запустить теперь МК и выставить фьюзы как положено? Подать на МК внешний клок от любого источника. При использовании адаптеров типа STK200/300 или Altera ByteBlaster клок можно генерить самим адаптером, если, конечно, программа программатора это умеет. Например AvReal умеет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integral 0 16 августа, 2008 Опубликовано 16 августа, 2008 · Жалоба Будем пробывать... на К155ЛА3 генератор склипаю... Частота порядка 100КГц - 1МГц покатит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба Будем пробывать... на К155ЛА3 генератор склипаю... Частота порядка 100КГц - 1МГц покатит? Должно при одном условии. Частота тактирования процессора должна быть в несколько раз выше частоты сигнала SCK при программировании. конкретно для Мега16: Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods for the serial clock (SCK) input are defined as follows: Low:> 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck ≥ 12 MHz High:> аналогично. т.е. низкий и высокий уровень на ноге SCK должны удерживаться не менее 2 (или даже 3) периодов тактирования процессора. Быстрее одного раза за микросекунду порт принтера обычно не переключается, так что частоты от 2МГц точно хватит, немного более низкой - скорее всего хватит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integral 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба заработал на частоте 1.6МГц, програмируется у меня через СОМ порт. Удивительно то что при напряжении 12В которое подавалось на питание МК около 30сек. он не накрылся... :07: (сгорел сволочь стабилизатор 7805) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться