Вот припёрло мне отладить мою плату и прошивку, стал искать логические анализаторы в инете, что почём. И тут подумал, а почему бы не сваять свой собственный. В закромах валялось несколько МЕГ и ТИНЕК, выбрал тиньку 2313, т.к. максимальная частота больше. В итоге вот что удумал: частота максимальная 20МГц на кварце, порт В настроен на прерывания PIN CHANGE, таймер Timer1 с предделителем 1, тикает до 50000, затем сравнивается со значением OCR1A что равно 2,5 мкс. Алгоритм следующий: создаётся 4 байтная переменная и инкрементируется в прерывании таймера по сравнению. Это у нас счётчик, кратный 2,5 микросекундам. Значение счётчика таймера TCNT1 записывается в отдельную переменную. Это счётчик, кратный 50 нс. Далее, при появлении лог 0 или 1 на входах порта "В" срабатывает прерывание Pin_Change, в этом прерывании сохраняются значения регистра порта, значения счётчиков TCNT1 и 4 байтного. Получается переменная с указанием значения времени и логическими уровнями на входах порта. А дальше ещё не придумал) В плане создать массив в оперативке, куда будут скидываться данные, ну и алгоритм отправки массива по UART. В итоге планируется получить достаточно точный анализатор, фиксирующий до 1МГц на 8 каналах. Единственное нет софта для пк, который сможет выводить данные. Данные планируется передавать через UART на макс скорости контроллера. На этом реализован минимум функций. Где-то читал, что можно прикрутить библиотеки DLL Saleae Logic и использовать её.
Вложения: |
2021-02-18_17-46-24.jpg [ 61.6 КБ | Просмотров: 6394 ]
|
|