Страница 1 из 1

Как с помощью Atmega8 отобразить послед. бит на ПК???

Добавлено: Пн дек 15, 2008 10:23:18
Alexeus
Сразу оговорюсь- я не делал раньше ничего конкретного МК и программированием, только читал немного теории, поэтому кто может помочь- помогите, кого это раздражает- лучше не пишите ничего.

Есть два МК NEC, один сообщает другому через интерфейс SPI пакет с некой последовательностью бит (64 бита в пакете, начальный вроде всегда "1" к этому можно привязаться.)

Задача видится так: С помощью Атмега8 подцепиться к SI пину одного из общающихся МК и принимать эту последовательность типа как осциллографом, засылая полученное в ПК (через uart наверное). В ПК нужно иметь возможность просмотреть принятые первые 64 бита или записывать данные в файл, затем просмотреть.

диаграмму передачи прилагаю.

Помогите у кого есть время, сам я не пытаюсь сделать все чужими руками, просто незнаю сколько времени уйдет, прежде чем я в этом разберусь :) а так на ваших примерах быстрее получиться.

Добавлено: Пн дек 15, 2008 11:11:54
BerZerK-ku
Если это действительно SPI, то можно в параллель на линию повесить AVR, в качестве второго ведомого. Но тут надо еще правильно настроить SPI:
1. Тактовая частота.
2. Полярность тактового сигнала.
3. Фаза тактового сигнала.
4. Порядок передачи разрядов данных.
Ну а после этого самое легкое - переслать полученные данные в UART.

Добавлено: Пн дек 15, 2008 11:34:19
Alexeus
Ну а можно настроить атмегу в качестве шпиона? не обязательно использовать режим SPI, просто на обычные порты.

Цепануть порт меги на SI вывод мк NEC, при появлении высокого уровня (первый бит всегда "1") считывать с этого порта через каждые 0,00084 сек. (пакет размером 64 бита, по длительности занимает 0,054 сек- язамерял звуковой картой :) , делим на 64бита, получаем 0,00084 сек на бит)

Или синхронности так не добиться? мне нужно то только первые 64 считывать, если больше- то уплыла бы частота, а так думаю ничего страшного...

Добавлено: Ср дек 17, 2008 13:16:20
BerZerK-ku
Ну тут тоже ничего сложного. SCK подключаем к INT0/INT1. SI/SO к любому порту. По прерыванию отслеживаем уровни на шине данных, а далее через UART в ПК. И отпадает необходимость в каких-либо временных интервалах, достаточно 1 раз синхронизироваться с SCK.

Добавлено: Ср дек 17, 2008 14:13:40
Alexeus
Да, спасибо, читая "Обучалку" нашел описание этой процедуры, применительно там к чему-то, но там использовали прерывание по таймеру, а я заметил, что есть еще и по вх. тактам на Т0 и Т1, и понял, что это именно мой вариант! :)

Еще ламерский вопросик можно- я оставляю внутренний генератор в 1мГц, нужно фузы менять или по дефолту все так стоит? (CKSEL0 нужно отметить? еще что нть нужно отметить?)

Добавлено: Ср дек 17, 2008 15:57:00
BerZerK-ku
МК работает на внутреннем 1МГц при заводских уставках.

Добавлено: Ср дек 17, 2008 16:25:50
Alexeus
да я тоже в этом так уверен был, что при прошивке не обратил внимание на галку "прошить фьюзы" в CvAvr. А там, блин, все фьюзы выключены! а нужно по крайней мере CKSEL(3-0) в 0001 выставить для активации внутреннего RC генератора... :(

Вот теперь ищу инфу, как AvReal пользовать и пытаться исправить, т.к. CvAvr после прошивки больше не видит мегу!