[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Осциллограф на 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...

Кому интересно- присоединяйтесь!
Прикрепления: 1468424.rar (123.4 Kb)




Сообщение отредактировал marss70 - Понедельник, 02.09.2013, 21:33
 
topДата: Понедельник, 02.09.2013, 22:14 | Сообщение # 2
Группа: Друзья
Сообщений: 146

Статус: Offline
Тема интересная! У самого теплились такие идеи насчет осцилла или лог анализатора) Поэтому будем однозначно развивать тему. Посмотрел фотографии, честно говоря приятно удивлен, очень круто, даже не смотря на то, что всего 100 Гц. Вопрос вызвал только меандр - почему длительность импульса(единицы) короче чем длительность паузы(нуля)? Или это обман зрения?


По поводу адресации дисплея и выбора начальных координат для отображения и смещения и проч. Если использовалась моя доработка с рисованием по точкам то искать косяки надо в ней, ибо я делал, как уже много раз упоминал, для китайского дисплея(у него адресация и внутреннее пространство памяти отличается). Верным было бы изучить код и методом тыка и последовательного приближения добиться результата под данный дисплей.
Я же делал так, опытным путем отыскал верхний левый пиксель (его адрес) подсвечивая первый бит в адресованном байте, затем аналогично для всех остальных углов (только для нижних углов подсвечивал последний бит). И уже от этого плясал)

Чтобы разобраться и как-то структурировать тему ответьте на вот такие вопросы biggrin
1. Какой дисплей используется (какой контроллер в нем, разрешение дисплея)
2. Какая библиотека для этого дисплея работает корректно?
3. Результат что на фотографиях достигнут с использованием каких доработок билиотеки дисплея?

Хочу также поинтересоваться использовали ли Вы мою версию с буфером?

А теперь о увеличении частоты: решить этот вопрос можно достаточно просто, Config ADC = free. В этом режиме АЦП постоянно измеряет напряжаение. Как только предыдущее измерение было закончено начинается следующее. В этом случае если использовать GetADC() то в ответ получим значение АЦП доступное в этот момент времени. Насколько это даст выйгрыш по частоте сэмплирования я сказать не могу. Но кажется в даташите на мегу8 например сказано что до 200 кГц(?). Я же в свое время "выжимал" до 10 кГц точно.

Отдельно хочется увидеть в этой веточке Forter'a - спеца по дисплеям и всех всех всех, давайте сделаем вещь!
Прикрепления: 2972834.jpg (126.8 Kb)




Сообщение отредактировал 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 не умеет работать с внешкой sad А умеют лишь МК постарше. Хотя если интерфейс SPI то почему бы и нет.

 
marss70Дата: Вторник, 03.09.2013, 00:16 | Сообщение # 17
Группа: Проверенные
Сообщений: 80

Статус: Offline
А если память типа 24LС512 или аналогичной. В приложении примерчик использования.
Прикрепления: source_code_24l.rar (8.1 Kb) · proteus24lc08.rar (17.0 Kb)




Сообщение отредактировал 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.
Прикрепления: 3544773.jpg (180.6 Kb)




Сообщение отредактировал marss70 - Вторник, 03.09.2013, 21:53
 
topДата: Среда, 04.09.2013, 11:47 | Сообщение # 21
Группа: Друзья
Сообщений: 146

Статус: Offline
После того как загрузил картинку нажимай "вставить в редактор"
АЦПшник этот крутой, очень. 40 миллионов выборок в секунду surprised и до 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 т.к. у неё вроде как есть выход тактовой частоты.
Прикрепления: _ADC0804.rar (67.2 Kb)




Сообщение отредактировал 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. Завтра попробую купить и испытать. В проте когда в свойства элемента заходишь, этот фьюз как у тиньки есть.
Прикрепления: 0840837.png (21.7 Kb)




Сообщение отредактировал 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
Прикрепления: 7881756.png (107.2 Kb)




Сообщение отредактировал 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 wink

 
marss70Дата: Среда, 04.09.2013, 23:50 | Сообщение # 32
Группа: Проверенные
Сообщений: 80

Статус: Offline
Прот не показал изменений, надо в железе пробовать. В-принципе строчку
 Adc0 = Pinb 
   Yy1 = Adc0 
   Yy11 = Round(yy1) 
 можно убрать, просто это осталось когда данные снимались с внутреннего АЦП микроконтроллера. Yy1 это вообще была переменная с плавающей запятой. Твой метод самый идеальный случай, который можно сделать в Баскоме. Быстрее, возможно получится, если перейти на асм. Но в асме я 0 wacko


 
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
Насчет скринов сумничать не удалось biggrin сам пользуюсь аналогичной штукой: 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
Блин, что-то не прикрепился, ещё раз
Прикрепления: ADC0804.hex (16.5 Kb)


 
marss70Дата: Четверг, 05.09.2013, 00:22 | Сообщение # 40
Группа: Проверенные
Сообщений: 80

Статус: Offline
Новая частота(при 20 мгц кристалла)
Прикрепления: 7130270.png (106.8 Kb)




Сообщение отредактировал 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 Мегагерца? umnik


 
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
Было дело. Будем пробовать.

 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: