Осциллограф на Atmega8+LCD Nokia5110
|
|
marss70 | Дата: Понедельник, 02.09.2013, 21:29 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Приветствую, всех! Собственно говоря, есть намётки для создания осциллографического пробника на дисплее от NOKIA 5110 купленного на http://www.aliexpress.com/snapshot/253883419.html и Atmega8. Исходники и проект в Протеусе в приложении. Ссылка на фото работы http://files.mail.ru/DF82888679C14B1192FA620568ED111E Вопрос остался к уважаемому top, по поводу смещения картинки на несколько пикселей вверх. в библиотеке есть строка D3310commandout &H45 которая должна решить этот вопрос, но что-то у меня не получилось. Доработать осталось: 1. Смещение изображения на несколько пикселей вверх 2. Увеличение рабочей частоты 3... 4...
Кому интересно- присоединяйтесь!
Сообщение отредактировал marss70 - Понедельник, 02.09.2013, 21:33 |
|
| |
top | Дата: Понедельник, 02.09.2013, 22:14 | Сообщение # 2 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Тема интересная! У самого теплились такие идеи насчет осцилла или лог анализатора) Поэтому будем однозначно развивать тему. Посмотрел фотографии, честно говоря приятно удивлен, очень круто, даже не смотря на то, что всего 100 Гц. Вопрос вызвал только меандр - почему длительность импульса(единицы) короче чем длительность паузы(нуля)? Или это обман зрения?
По поводу адресации дисплея и выбора начальных координат для отображения и смещения и проч. Если использовалась моя доработка с рисованием по точкам то искать косяки надо в ней, ибо я делал, как уже много раз упоминал, для китайского дисплея(у него адресация и внутреннее пространство памяти отличается). Верным было бы изучить код и методом тыка и последовательного приближения добиться результата под данный дисплей. Я же делал так, опытным путем отыскал верхний левый пиксель (его адрес) подсвечивая первый бит в адресованном байте, затем аналогично для всех остальных углов (только для нижних углов подсвечивал последний бит). И уже от этого плясал)
Чтобы разобраться и как-то структурировать тему ответьте на вот такие вопросы 1. Какой дисплей используется (какой контроллер в нем, разрешение дисплея) 2. Какая библиотека для этого дисплея работает корректно? 3. Результат что на фотографиях достигнут с использованием каких доработок билиотеки дисплея?
Хочу также поинтересоваться использовали ли Вы мою версию с буфером?
А теперь о увеличении частоты: решить этот вопрос можно достаточно просто, Config ADC = free. В этом режиме АЦП постоянно измеряет напряжаение. Как только предыдущее измерение было закончено начинается следующее. В этом случае если использовать GetADC() то в ответ получим значение АЦП доступное в этот момент времени. Насколько это даст выйгрыш по частоте сэмплирования я сказать не могу. Но кажется в даташите на мегу8 например сказано что до 200 кГц(?). Я же в свое время "выжимал" до 10 кГц точно.
Отдельно хочется увидеть в этой веточке Forter'a - спеца по дисплеям и всех всех всех, давайте сделаем вещь!
Сообщение отредактировал top - Понедельник, 02.09.2013, 22:19 |
|
| |
KoSS_89 | Дата: Понедельник, 02.09.2013, 22:18 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 53
Статус: Offline
| Особо не вдавался в подробности вашего кода, но для увеличения быстродействия могу предложить отрисовывая новую точку стирать старую, просто когда вы отрисовываете картинку а потом очищаете весь экран, вы отрисовываете изображение два раза за один цикл, вот и быстродействие теряется конкретно, вобще по хорошему сделать небольшой буффер в который на максимальной скорости загонять данные ацп а после делать отрисовку... P.S. тоже страдал подобным но мозгов нехватило:(.
|
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 22:40 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Итак, отвечаю по порядку. 1. Про меандр- это оптический обман, т.к. снимал под углом. 2. Про дисплей- ХЗ какой там контроллер 3. За основу была взята библиотека http://cxem.net/mc/mc201.php. Туда надобавлял шрифтов русских и Ваш, top, кусок по выводу точки Код '________________________________Вывод точки________________________________
Sub D3310addpoint(byval D3310px As Byte , Byval D3310py As Byte) Local D3310pointbyte As Byte Local D3310rownumber As Byte Local D3310symbolnumber As Byte
D3310commandout &H20 Waitus 250
D3310ce = 0 D3310dc = 0
D3310pointbyte = D3310px + &H80 Spiout D3310pointbyte , 1
D3310rownumber = D3310py / 8 'D3310rownumber = D3310py \ 8 Incr D3310rownumber
D3310pointbyte = D3310rownumber + &H40 'D3310pointbyte = D3310rownumber + &H40
Spiout D3310pointbyte , 1
Decr D3310rownumber
D3310symbolnumber = D3310rownumber * 8 D3310symbolnumber = D3310py - D3310symbolnumber
D3310dc = 1
Select Case D3310symbolnumber Case 0 : D3310dataout &H01 Case 1 : D3310dataout &H02 Case 2 : D3310dataout &H04 Case 3 : D3310dataout &H08 Case 4 : D3310dataout &H10 Case 5 : D3310dataout &H20 Case 6 : D3310dataout &H40 Case 7 : D3310dataout &H80 End Select
D3310ce = 1 End Sub Вот и вся доработка.
|
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 22:52 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| ADC = free- помогло! Частота измерения увеличилась раз в пять! Да и на смещение можно забить. На фотке не видно, но дисплей перевёрнут на 180 градусов. И получилось, что нулевая линия как раз проходит по 9 линии. Только развёрка получилась не слева на право как в классическом осцилле, а справа налево. Но в нашем случае это не особо важно)
Сообщение отредактировал marss70 - Понедельник, 02.09.2013, 22:59 |
|
| |
top | Дата: Понедельник, 02.09.2013, 22:54 | Сообщение # 6 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Есть возможность вычислить на сколько пикселей вверх смещено изображение? И от этого уже будем плясать. Данная доработка для осциллографа подходит, так как в каждом столбце всего одна точка. Было бы в одном столбце в пределах одного байта сразу две и более точки - то не работало бы. Но все же думаю правильнее сразу перейти к отрисовке через буфер, чтобы потом не было вопросов при выводе другой дополнительной информации на дисплей. Но тут возникает вопрос как с помощью буфера выводить текст. Ведь надо текст сначала записать в буфер а потом отображать. У меня пока что такой реализации нет.
Поэтому вопрос к спецам: возможно ли считывать данные из памяти дисплея?
Сообщение отредактировал top - Понедельник, 02.09.2013, 22:58 |
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 23:01 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| На восемь линий идёт смещение.
|
|
| |
top | Дата: Понедельник, 02.09.2013, 23:06 | Сообщение # 8 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| ---
Попробуй закомментировать строки Incr D3310rownumber Decr D3310rownumber
Или только одну Decr D3310rownumber
Сообщение отредактировал top - Понедельник, 02.09.2013, 23:12 |
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 23:12 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Чёт не получилось сместить и картинка по-чуть начала рассыпаться.
|
|
| |
top | Дата: Понедельник, 02.09.2013, 23:13 | Сообщение # 10 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Я несколько раз успел сообщение отредактировать, прочитай еще раз)
|
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 23:20 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Ё-хо-хо!!! Эти две строчки убрал и всё ОК!!! Спасибо! Ну что, идём дальше? Мне понравилась конструкция http://radioparty.ru/index.p....310-lcd но у меня она не заработала, скорее всего библа не подошла.
|
|
| |
top | Дата: Понедельник, 02.09.2013, 23:26 | Сообщение # 12 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Да наверное из-за библиотеки, там дисплей как у меня, с двумя дугами. Я думаю надо добавить возможность синхронизации используя компаратор, возможность "прокрутки" осциллограммы, и хорошо бы индикацию масштаба времени прикрутить)
|
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 23:32 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Да, такие бы добавки были бы в тему. Прокрутка- это и есть одна из моих задач. Так как хочу на на это конструкции следить за скачками напруги в сети в момент включения мощной нагрузки. А то нежное иносраное оборудование иногда вырубается, а чё и почему и хочу разобраться.
|
|
| |
top | Дата: Понедельник, 02.09.2013, 23:38 | Сообщение # 14 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Раз так то можно смело городить буфер размером до конца оперативки, забивать его данными с АЦП, и потом выводить. Повесить пару кнопок и прокручивать. В принципе тут простые операции с элементами массивов. В 8ю мегу можно смело затолкать 700 байт, считай 700 точек. А этого хватит на (700 / 84 = 8,3) целых 8(!!!) полноэкранных прокруток) Супер круто)
|
|
| |
marss70 | Дата: Понедельник, 02.09.2013, 23:45 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| А ежели ещё и SD карту прикрутить ну или внешнюю память на худой конец. Тут мои познания заканчиваются:( Массивы, памяти... чёт мне в одиночку жуткова-то, однако.
|
|
| |
top | Дата: Понедельник, 02.09.2013, 23:54 | Сообщение # 16 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Ну SD карта ээто все-таки штука для долговременного хранения данных, и она никак не годится в качестве оперативки. Нам же нужна оперативная, с быстрым доступом. Если надо запомнить длинный сигнал, то надо подключать внешнюю ОЗУ(при чем она доступна сегодня на довольно таки большие объемы за малую цену). Знаю что это успешно делают, подключают, но вот как? Здесь и я спрошу помощи: у кого есть опыт подключения внешней ОЗУ? И сдается мне что мега8 не умеет работать с внешкой А умеют лишь МК постарше. Хотя если интерфейс SPI то почему бы и нет.
|
|
| |
marss70 | Дата: Вторник, 03.09.2013, 00:16 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| А если память типа 24LС512 или аналогичной. В приложении примерчик использования.
Сообщение отредактировал marss70 - Вторник, 03.09.2013, 00:18 |
|
| |
KoSS_89 | Дата: Вторник, 03.09.2013, 18:13 | Сообщение # 18 |
Группа: Проверенные
Сообщений: 53
Статус: Offline
| Длинную прокрутку на таком маленьком дисплее нет смысла лепить, неудобно, я счастливый облодатель небезизвестного осцилографа "хамелеон" там память на четыре экрана и дисплей по более будет и этого с головой хватает, использовал только раз, когда смотрел затухающие колибания на первичке от 50Гц транса и кондёра 1мкФ... Я всё к чему, сделать прокрутку на четыре экрана и будет с головой! Лучше замутить авто синхронизацию и одиночную запись, типа нажал кнопку - забил буфер и смотри себе какой сигнал поймал + внешняя синхра...
|
|
| |
top | Дата: Вторник, 03.09.2013, 19:42 | Сообщение # 19 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| marss70, Опять же, это память EEPROM - она в качестве оперативки не годится по ряду причин) На википедии коротко но понятно объяснено назначение тех или иных видов памяти. KoSS_89, Не совсем согласен, а лишь частично. С периодическими сигналами да, и 4х с головой хватит. А если измерять какие-нибудь переходные процессы или же смотреть работу протоколов, UART например, то тут чем больше сигнала записал тем лучше. Эдакий осциллограф + анализатор логический.
|
|
| |
marss70 | Дата: Вторник, 03.09.2013, 21:50 | Сообщение # 20 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Я тут присмотрел на входную цепь параллельный АЦП TLC5540. Он ну оооочень быстродействующий! И как-раз он у меня есть. Пример в приложении.(Блин, как тут картинки прицеплять, чёт не пойму). Насчёт памяти- извините, заморочился, конечно 24LС512 это EEPROM.
Сообщение отредактировал marss70 - Вторник, 03.09.2013, 21:53 |
|
| |
top | Дата: Среда, 04.09.2013, 11:47 | Сообщение # 21 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| После того как загрузил картинку нажимай "вставить в редактор" АЦПшник этот крутой, очень. 40 миллионов выборок в секунду и до 75 МГц. Где такой брали и в какую цену? Судя по всему рабоать с ним просто, паралельный вывод и тактовый сигнал на вход. Откуда схема? Это ведь чей-то проект, прочитать бы его полностью)
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 22:00 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Доброго времени суток. Спасибо за подсказку! По поводу АЦП- покупал в http://radel.ru/search_...._type=1 года 2 назад рублей за 200, так поиграться... Сейчас хочу заказать на моём любимом http://www.aliexpress.com/item....84.html А схемка отсюда http://www.eosystems.ro/index.php/projects/eoscope и http://radiokot.ru/lab/controller/40/ По-моему самое идеальное соотношение цена-характеристики. Может кто другой подскажет, но я помнится целый день убил в его поисках.
Сообщение отредактировал marss70 - Среда, 04.09.2013, 22:11 |
|
| |
marss70 | Дата: Среда, 04.09.2013, 22:08 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Я тут по-чуть поигрался в протеусе, правда этой АЦПшки там нет, я саму концепцию проверить хотел. Хочу попробовать сделать меге88 т.к. у неё вроде как есть выход тактовой частоты.
Сообщение отредактировал marss70 - Среда, 04.09.2013, 22:16 |
|
| |
top | Дата: Среда, 04.09.2013, 22:19 | Сообщение # 24 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| marss70, что за выход тактовой частоты? Не слышал прежде такого.
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 22:28 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| У тиньки 2313 это PORTD.5 CKOUT и фьюзами шьётся- это точно, лично снимал. А вот у меги88 ВРОДЕ как тоже должен, но пока сам ищу его. Но чуйка чует что это PORTB.0. Завтра попробую купить и испытать. В проте когда в свойства элемента заходишь, этот фьюз как у тиньки есть.
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 22:36 | Сообщение # 26 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
|
У тиньки 2313 это PORTD.5 CKOUT и фьюзами шьётся- это точно, лично снимал. А вот у меги88 ВРОДЕ как тоже должен, но пока сам ищу его. Но чуйка чует что это PORTB.0. Завтра попробую купить и испытать. В проте когда в свойства элемента заходишь, этот фьюз как у тиньки есть.
Сообщение отредактировал marss70 - Среда, 04.09.2013, 22:42 |
|
| |
top | Дата: Среда, 04.09.2013, 23:00 | Сообщение # 27 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Ммм, значит ацпшку можно тактировать тем же сигналом что и МК?
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 23:22 | Сообщение # 28 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
|
Вот и я так подумал. Но это тактирование, а вот скорость считывания состояния порта намного медленее(так протеус показывает) около 30 кгц. Поделив на 84 пикселя экрана получается 30000/84 и умножив на 4 волны какие можно различить на экране то всего 1400 гц. Надо каким-то образом увеличить скорость считывания АЦП, а за это отвечает кусок программы
Do For Xx = 0 To 83 Set Takt Adc0 = Pinb Yy1 = Adc0 Yy11 = Round(yy1) Dat(xx) = Yy11 Reset Takt Next Xx
Сообщение отредактировал marss70 - Среда, 04.09.2013, 23:28 |
|
| |
top | Дата: Среда, 04.09.2013, 23:38 | Сообщение # 29 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| А почему бы не сделать так?
Do For Xx = 0 To 83 Set Takt Dat(xx) = Pinb Reset Takt Next Xx
Состояние порта это байтовая переменная (8 бит) и округлять её не надо) Попробуй, как изменится частота?
Сообщение отредактировал top - Среда, 04.09.2013, 23:38 |
|
| |
top | Дата: Среда, 04.09.2013, 23:41 | Сообщение # 30 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| И еще, в БАСКОМ индекс массива начинается с единицы. Dat(0) не существует. "The first element of an array is always one. This means that elements are 1-based"
|
|
| |
top | Дата: Среда, 04.09.2013, 23:49 | Сообщение # 31 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Кстати, чтобы не вырезать из скриншота нужную часть изображения можно при активном окне нажать Alt+PrintScreen
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 23:50 | Сообщение # 32 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Прот не показал изменений, надо в железе пробовать. В-принципе строчку Adc0 = Pinb Yy1 = Adc0 Yy11 = Round(yy1) можно убрать, просто это осталось когда данные снимались с внутреннего АЦП микроконтроллера. Yy1 это вообще была переменная с плавающей запятой. Твой метод самый идеальный случай, который можно сделать в Баскоме. Быстрее, возможно получится, если перейти на асм. Но в асме я 0
|
|
| |
top | Дата: Среда, 04.09.2013, 23:56 | Сообщение # 33 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Скинь HEX моего варианта, сейчас в IdaPro посмотрю что там творится.
|
|
| |
marss70 | Дата: Среда, 04.09.2013, 23:57 | Сообщение # 34 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Про индекс- это точно, но Басику и Проту похож по-фигу). А про скриншот, я пользуюсь прогой Snagit http://yandex.ru/yandsearch?text=snagit%20&clid=1537597&lr=193 Это прога для снятия скринов с монитора, хочешь всю страницу, хочешь сразу выделяешь, что нужно, можно даже видео "снимать".
|
|
| |
top | Дата: Четверг, 05.09.2013, 00:01 | Сообщение # 35 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Насчет скринов сумничать не удалось сам пользуюсь аналогичной штукой: ABBY screenshot reader
|
|
| |
marss70 | Дата: Четверг, 05.09.2013, 00:13 | Сообщение # 36 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Посыпаю голову пеплом. Я М..к сделал изменения в одном файле, а Проту скормил старый. По твоему методу
Do For Xx = 0 To 83 Set Takt Dat(xx) = Pinb Reset Takt Next Xx
частота значительно выросла!!! Получается теоретически 670000/84*4 около 30000 гц можно выжать!!!(Теоретически)
|
|
| |
top | Дата: Четверг, 05.09.2013, 00:14 | Сообщение # 37 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Не дождался от тебя Хекса, скомпилил сам. Неожиданно, но в дизассемблированном коде действительно много мусора:
Код ROM:0032 loc_32: ; CODE XREF: __RESET:loc_4Ej ROM:0032 ldi r24, 1 ROM:0033 sts unk_100060, r24 ROM:0035 ROM:0035 loc_35: ; CODE XREF: __RESET+3Aj ROM:0035 lds r16, unk_100060 ROM:0037 cpi r16, 0x54 ; 'T' ROM:0038 brcs loc_3B ROM:0039 breq loc_3B ROM:003A rjmp loc_4E ROM:003B ; --------------------------------------------------------------------------- ROM:003B ROM:003B loc_3B: ; CODE XREF: __RESET+25j ROM:003B ; __RESET+26j ROM:003B sbi PORTC, PORTC5 ROM:003C ldi r26, 0x60 ; '`' ROM:003D ldi r27, 0 ROM:003E ld r10, X+ ROM:003F clr r11 ROM:0040 ldi r26, 0x60 ; '`' ROM:0041 ldi r27, 0 ROM:0042 add r26, r10 ROM:0043 adc r27, r11 ROM:0044 in r24, PINB ROM:0045 st X, r24 ROM:0046 cbi PORTC, PORTC5 ROM:0047 ldi r26, 0x60 ; '`' ROM:0048 ldi r27, 0 ROM:0049 ld r24, X ROM:004A subi r24, -1 ROM:004B st X, r24 ROM:004C brcc loc_4E ROM:004D rjmp loc_35
|
|
| |
top | Дата: Четверг, 05.09.2013, 00:17 | Сообщение # 38 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Полюбому критические ко времени моменты придется писать на АСМе. С этим я чем смогу тем помогу, небольшой опыт есть.
|
|
| |
marss70 | Дата: Четверг, 05.09.2013, 00:21 | Сообщение # 39 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Блин, что-то не прикрепился, ещё раз
|
|
| |
marss70 | Дата: Четверг, 05.09.2013, 00:22 | Сообщение # 40 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Новая частота(при 20 мгц кристалла)
Сообщение отредактировал marss70 - Четверг, 05.09.2013, 00:23 |
|
| |
top | Дата: Четверг, 05.09.2013, 00:23 | Сообщение # 41 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Вот внутренности ADC0804.hex Код ROM:0043 loc_43: ; CODE XREF: __RESET+7Aj ROM:0043 ldi r24, 1 ROM:0044 sts unk_100061, r24 ROM:0046 ROM:0046 loc_46: ; CODE XREF: __RESET+4Bj ROM:0046 lds r16, unk_100061 ROM:0048 cpi r16, 0x54 ; 'T' ROM:0049 brcs loc_4C ROM:004A breq loc_4C ROM:004B rjmp loc_5F ROM:004C ; --------------------------------------------------------------------------- ROM:004C ROM:004C loc_4C: ; CODE XREF: __RESET+36j ROM:004C ; __RESET+37j ROM:004C sbi PORTD, PORTD5 ROM:004D ldi r26, 0x61 ; 'a' ROM:004E ldi r27, 0 ROM:004F ld r10, X+ ROM:0050 clr r11 ROM:0051 ldi r26, 0x61 ; 'a' ROM:0052 ldi r27, 0 ROM:0053 add r26, r10 ROM:0054 adc r27, r11 ROM:0055 in r24, PINB ROM:0056 st X, r24 ROM:0057 cbi PORTD, PORTD5 ROM:0058 ldi r26, 0x61 ; 'a' ROM:0059 ldi r27, 0 ROM:005A ld r24, X ROM:005B subi r24, -1 ROM:005C st X, r24 ROM:005D brcc loc_5F ROM:005E rjmp loc_46 ROM:005F ; --------------------------------------------------------------------------- ROM:005F ROM:005F loc_5F: ; CODE XREF: __RESET+38j ROM:005F ; __RESET+4Aj ROM:005F ldi r24, 1 ROM:0060 sts unk_100061, r24 ROM:0062 ROM:0062 loc_62: ; CODE XREF: __RESET+78j ROM:0062 lds r16, unk_100061 ROM:0064 cpi r16, 0x54 ; 'T' ROM:0065 brcs loc_68 ROM:0066 breq loc_68 ROM:0067 rjmp loc_8C ROM:0068 ; --------------------------------------------------------------------------- ROM:0068 ROM:0068 loc_68: ; CODE XREF: __RESET+52j ROM:0068 ; __RESET+53j ROM:0068 st -Y, r5 ROM:0069 st -Y, r4 ROM:006A lds r24, unk_100061 ROM:006C mov r26, r4 ROM:006D mov r27, r5 ROM:006E st X, r24 ROM:006F ldi r24, 1 ROM:0070 rcall sub_AD7 ROM:0071 st -Y, r5 ROM:0072 st -Y, r4 ROM:0073 ldi r26, 0x61 ; 'a' ROM:0074 ldi r27, 0 ROM:0075 ld r10, X+ ROM:0076 clr r11 ROM:0077 ldi r26, 0x61 ; 'a' ROM:0078 ldi r27, 0 ROM:0079 add r26, r10 ROM:007A adc r27, r11 ROM:007B ld r24, X ROM:007C mov r26, r4 ROM:007D mov r27, r5 ROM:007E st X, r24 ROM:007F ldi r24, 1 ROM:0080 rcall sub_AD7 ROM:0081 rcall sub_9A4 ROM:0082 adiw r28, 4 ROM:0083 ldi r24, 2 ROM:0084 rcall sub_A84 ROM:0085 ldi r26, 0x61 ; 'a' ROM:0086 ldi r27, 0 ROM:0087 ld r24, X ROM:0088 subi r24, -1 ROM:0089 st X, r24 ROM:008A brcc loc_8C ROM:008B rjmp loc_62 ROM:008C ; --------------------------------------------------------------------------- ROM:008C ROM:008C loc_8C: ; CODE XREF: __RESET+54j ROM:008C ; __RESET+77j ROM:008C rcall sub_F2 ROM:008D rjmp loc_43
|
|
| |
top | Дата: Четверг, 05.09.2013, 00:26 | Сообщение # 42 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Цитата (marss70) Новая частота(при 20 мгц кристалла) Период 1,5 микросекунды? Время считывания порта где-то вдвое меньше, а значит частота около 1,2 Мегагерца?
|
|
| |
marss70 | Дата: Четверг, 05.09.2013, 00:34 | Сообщение # 43 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Ну значит можно попробовать на асме увеличить скорость работы куска:
For Xx = 1 To 84 Set Takt Dat(xx) = Pinb Reset Takt Next Xx
|
|
| |
marss70 | Дата: Четверг, 05.09.2013, 00:35 | Сообщение # 44 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| А где ты про скорость считывания прочитал?
|
|
| |
top | Дата: Четверг, 05.09.2013, 09:05 | Сообщение # 45 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Ну в сообщении №40 картинка. Это осциллограмма ножки Takt??? Длительность импульса (лог единицы) это ведь и есть время считывания согласно этому: Цитата (marss70) Set Takt Dat(xx) = Pinb Reset Takt
Сообщение отредактировал top - Четверг, 05.09.2013, 09:06 |
|
| |
marss70 | Дата: Четверг, 05.09.2013, 23:25 | Сообщение # 46 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Не успел сегодня померить время считывания в железе... А попутно думал как синхронизацию сделать. У кого какие мысли?
|
|
| |
top | Дата: Понедельник, 09.09.2013, 07:51 | Сообщение # 47 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| marss70, Синхронизацию по прерыванию компаратора, ну или как второй вариант просто на прерывание)
|
|
| |
marss70 | Дата: Вторник, 10.09.2013, 23:13 | Сообщение # 48 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Мне б кусочек кода, а то я по прерываниям только пока внешнее по импульсу освоил. А с компаратором пока не делал.
|
|
| |
top | Дата: Вторник, 10.09.2013, 23:28 | Сообщение # 49 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| marss70, сам, честно сказать, не работал с компаратором. Но помню здесь, на сайте на главной, был проект где использовался компаратор. exersizze подскажет точно)
|
|
| |
marss70 | Дата: Вторник, 10.09.2013, 23:44 | Сообщение # 50 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Было дело. Будем пробовать.
|
|
| |