реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Ридер Магнитных Карт, не правильно работает прерывание
rx3apf
сообщение Jun 17 2010, 09:09
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Loreleja @ Jun 17 2010, 12:09) *
по одной дорожке никак не получится, там ведь интервалы разные. трек 2 длительность длиннее, там бит меньше...

А... Я работал только с однодорожечными, значит, неправ...

Цитата
может стоит кварц побольше поставить?

Каковы длительности интервалов при максимально возможной скорости протяжки ? Ну примерно ?
Go to the top of the page
 
+Quote Post
Loreleja
сообщение Jun 17 2010, 09:19
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 7-06-10
Из: Киев
Пользователь №: 57 785



Цитата(rx3apf @ Jun 17 2010, 12:09) *
Каковы длительности интервалов при максимально возможной скорости протяжки ? Ну примерно ?


если память мне не изменяет, частота на дорожке 1 около 1кГц, на дорожке 2 - 600...700 Гц.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 17 2010, 09:51
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Loreleja @ Jun 17 2010, 13:19) *
если память мне не изменяет, частота на дорожке 1 около 1кГц, на дорожке 2 - 600...700 Гц.

1 kHz максимальная ? Т.е. один полупериод 0.5 mS, это почти 3700 тактов процессора @7.3728 MHz. Думаю, если писать компактно (и на ассемблере, вероятно), то все три канала удастся обработать по опросу, сделав этот опрос где-то 8...16 kHz (можно и больше, вполне хватит быстродействия). Но да, это все ж сложнее, чем считать времянки и писать их в буфер...
Go to the top of the page
 
+Quote Post
Loreleja
сообщение Jun 17 2010, 13:01
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 7-06-10
Из: Киев
Пользователь №: 57 785



Цитата(rx3apf @ Jun 17 2010, 12:51) *
1 kHz максимальная ? Т.е. один полупериод 0.5 mS, это почти 3700 тактов процессора @7.3728 MHz. Думаю, если писать компактно (и на ассемблере, вероятно), то все три канала удастся обработать по опросу, сделав этот опрос где-то 8...16 kHz (можно и больше, вполне хватит быстродействия). Но да, это все ж сложнее, чем считать времянки и писать их в буфер...

да уж. запихивать всё в буфер и так не получится... но что ж теперь с этим обработчиком делать?...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 17 2010, 13:35
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Loreleja @ Jun 17 2010, 17:01) *
да уж. запихивать всё в буфер и так не получится... но что ж теперь с этим обработчиком делать?...

Ну, начнем с того, что при таких скоростях поступления данных можно, без всяких проблем, отправлять через UART (до 921600, используя, скажем, FT232), и буфер не то, что не переполнится, да и вообще не нужен - скорость обмена через UART заведомо больше, чем скорость поступающих сырых данных, даже если два байта на отсчет. Но, поскольку компьютер может и притормозить, по-хорошему надо все же следить за потоком, поэтому программный FIFO и обслуживать прерывания UART. Ну, если компьютер притормозит надолго - часть данных по-любому пропадет. Да и неправильный это путь.

А правильный - писать свой декодер (я бы делал семплирование входов по таймерным прерываниям и разбор потока). Да, это сложнее. Но - правильнее.
Go to the top of the page
 
+Quote Post
Loreleja
сообщение Jun 18 2010, 07:12
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 7-06-10
Из: Киев
Пользователь №: 57 785



я пока не представляю себе как реализовать, то что вы предлагаете. Мы же калибруем длительность импульсов уже при приеме данных, там для этого вначале нули идут не информационные.

ну, в общем поставила кварц на 14 МГц, но блин, данные он то принимает, но для перезаписи перестал заходить в бутлоадер...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 18 2010, 07:38
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Loreleja @ Jun 18 2010, 11:12) *
я пока не представляю себе как реализовать, то что вы предлагаете. Мы же калибруем длительность импульсов уже при приеме данных, там для этого вначале нули идут не информационные.

По ним и синхронизируемся. Нули - значит, нули. Более-менее стабилизировались длительности - приняли за ноль, вычислили порог дискриминации (там бифазное кодирование ? У меня бифазное было), используем его при дальнейшем приеме (если протяжка ручная - то по ходу дела регулируем этот порог в зависимости от длительностей поступающих импульсов). Ничего такого сложного (для трех дорожек, да еще с разными скоростями - чуть сложнее, конечно). Кончились нули, пошли данные - замечательно, наполняем буфер. Кончились данные (по таймауту, наполнению буфера и/или анализу содержимого) - проверили контрольные суммы, оформили посылку в удобный и однозначно-трактуемый формат (возможно, дополнив своей контрольной суммой и заголовком), передали в компьютер. Хорошая тема, интересная...
Go to the top of the page
 
+Quote Post
Loreleja
сообщение Jun 18 2010, 09:07
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 7-06-10
Из: Киев
Пользователь №: 57 785



честно говоря, боюсь что-то кардинально менять. Мне этот проект еще переделывать потом как HID клавиатуру, что бы данные не в дебаг, а в текстовый редактор... а там еще и прерывание от usb идёт, ох...
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016