Мешает ли одно другому???
У меня проэкт на ATmega8, там все данные выводятся на дисплей от Нокии 3310 (вот там и используется SPI). Сбор данных хочу сделать с использованием прерываний. Не появятся ли глюки???
Просто в некоторых примерах, я видел, что при приеме/передаче прерывания запрещались....
Страница 1 из 1
SPI и прерывания...
#2
Отправлено 09 Март 2005 - 22:11
Нет, SPI работает абсолютно независимо, работа контроллера прерываний на него не влияет (всё, что в буфере, с успехом дойдет).
Правда, думаю, что я не совсем тебя понял. Что сделать-то хочешь?
Правда, думаю, что я не совсем тебя понял. Что сделать-то хочешь?
#3
Отправлено 10 Март 2005 - 09:58
ProniX
Это будет прибор в авто.
Показывать будет температуру в двух точках (воздух/салон), измерять скорость, напряжение борт сети. Так вот, если скорость измерять "точечно", то есть с момент когда нас это интересует, то проблем нету. Зная длину колеса, я измеряю время, за которое оно делает один оборот и определяю скорость... Но если мне вместе с этим надо знать весь пройденый путь, то обработку датчика "скорости" надо ставить на прерывание...
Это я хотел сделать что-то типа борткомпутера...
Есть еще один трабл - датчики температуры DS18S20, пока не "запустил" его, и боясь что они тоже с прерываниями не состыкуются...
Это будет прибор в авто.
Показывать будет температуру в двух точках (воздух/салон), измерять скорость, напряжение борт сети. Так вот, если скорость измерять "точечно", то есть с момент когда нас это интересует, то проблем нету. Зная длину колеса, я измеряю время, за которое оно делает один оборот и определяю скорость... Но если мне вместе с этим надо знать весь пройденый путь, то обработку датчика "скорости" надо ставить на прерывание...
Это я хотел сделать что-то типа борткомпутера...
Есть еще один трабл - датчики температуры DS18S20, пока не "запустил" его, и боясь что они тоже с прерываниями не состыкуются...
#4
Отправлено 10 Март 2005 - 15:39
Совершенно не понимаю проблемы... Почему бы не измерять температуру по прерываням от таймера с заданной периодичностью? Зачем тут прерывания от SPI?
#5
Отправлено 10 Март 2005 - 15:45
Прерывание от SPI не причем. Я имею ввиду не помешают ли другие прерывания (внешнее, например), при передачи данных по SPI...
#6
Отправлено 10 Март 2005 - 18:43
Байт в буфере - дойдет, а остальные - только после обработки прерывания. Но отключи ненужные на время передачи, если больше байта надо передавать.
#7
Отправлено 14 Март 2005 - 11:23
Fusion, прерывания запрещаются для того, чтобы исключить потерю данных. Представь себе, что ты работаешь с ЖКИ, и тут у тебя вызывается прерывание. Если (и только если! =)) прерывание использует те же регистры, что и процедура обработки ЖКИ, то после выхода из прерывания у тебя в этих регистрах будет ерунда...
Решений несколько:
1. при вызове прерывания оно запихивает в стек все регистры, которые оно использует, а потом, когда закончит, то вытаскивает их из стека. решение самое простое и изящное (я сам так делаю всегда =)), но тратится время на команды "push" и "pop".
2. использовать в прерывании регистры, которые не используются в программе. решение не очень изящное, но работать прерывание будет гораздо быстрее (поскольку нет комманд "push" и "pop" на каждый из используемых регистров).
Вот так. =))
респект =)))
Решений несколько:
1. при вызове прерывания оно запихивает в стек все регистры, которые оно использует, а потом, когда закончит, то вытаскивает их из стека. решение самое простое и изящное (я сам так делаю всегда =)), но тратится время на команды "push" и "pop".
2. использовать в прерывании регистры, которые не используются в программе. решение не очень изящное, но работать прерывание будет гораздо быстрее (поскольку нет комманд "push" и "pop" на каждый из используемых регистров).
Вот так. =))
респект =)))
Поделиться темой:
Страница 1 из 1

Помощь














