Добрый день, Ivan! 14 oct 03 17:43 Ivan Melnikov wrote to Alex Shungin
IM>>> Пытаюсь запустить сабж на Atmele AT82LS8252, передача получается, IM>>> а вот прием с приемом никак. Кто-нибудь сабж использовал? Hадо IM>>> кодек проинициализировать с с помощью сабжа. Интересует порядок IM>>> инициализации сабжа и т.д.
AS>> Я использовал SPI в AT89S8252 в режиме Slave для связи с PC.
IM> А в этом режиме атмел выдавал частоту или PC ?
Контроллер как Slave поэтому РС выдавал синхронизацию.
AS>> тоже были проблемы с приёмом, контроллер возвращал обратно AS>> переданное к нему значение пока не написал вот так:
[... пропущено ...]
AS>> Это кусок не в обработчике прерывания от SPI, а в основном цикле,
IM> Я тоже обрабатываю не в обработчике прерывания
Если делать в прерывании, такая запись не сработает - не факт, что данные запишутся в SPDR сразу. Думаю именно для того чтобы убедится в записи данных для передачи и нужен бит WCOL(Write Collision Flag).
AS>> поэтому получается, что данные в каждом цикле программы AS>> записываются в SPDR независимо от того принят байт или нет. AS>> Как то некрасиво получилось, но заработало.
IM> Почему ? Главное работает...
Плохо когда не понимаешь, что конкретно происходит. В какой момент происходит запись в регистр не понятно.
AS>> А также я не поверял бит WCOL(Write Collision Flag) при записи в
IM> Я его тоже не проверяю.
AS>> SPDR, а возможно надо было.
IM> Зачем ?
Чтобы убедится прошла запись в SPDR или нет.
IM> Ты какой установки в SPCR прописал ?
mov SPCR,#040h
IM> Ты пробовал их менять ? IM> Влияют на работу или не принципиально ?
Пока нет времени разбираться, с рабочего проекта рассказываю, он работает.
С уважением. Шуньгин Александр г. Новодвинск Архангельской губернии