Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.05.2011, 22:02
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
SPI ATMEGA8535 не запускается
Не пойму в чем дело. Второй день не могу запустить SPI. Связываюсь с АЦП AD7706. Но она не отвечала. Начал смотреть SPI. С ATMega128 проблем не было. И здесь, вроде, тоже самое. Но молчит SPI и все
Посмотрел осциллографом. Все три сигнала (MOSI, MISO, SCK) - высокие уровни. Программу зациклил, но никаких импульсов не видно. Программирование через SPI проходит нормально. Кто смотрел SPI осциллографом? Может там импульсы очень короткие и я их не вижу. У меня С1-73.
Ситуация такая, что вроде нет инициализации SPI. Но уже N раз все просмотрел. Что я упустил? Может кто со стороны увидит, а то я уже сам зациклился. Понимаю, что ерунда какая-то, а найти не могу.
В архиве вырезка из программы (IAR)
P.S.
Замена чипа ничего не дала.
Последний раз редактировалось pifa; 24.05.2011 в 22:06.
Причина: добавил
|
|
|
|
24.05.2011, 22:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
На ногу SS установите низкий уровень, даже если она выход
|
|
|
|
24.05.2011, 23:09
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Там низкий уровень.
Вот сейчас еще раз пробовал прочитать AD7706. Она, вроде, реагирует, но все р-ры отвечают FF (DATA, GAIN, OFFSET).
Дело в том, что напрямую проверить АЦП нет возможности. На плате не предусмотрен UART. Приходится смотреть "с извращениями". По I2C цепляю другую плату с ATMega128, LCD, клавиатурой и UART, который связан с ПК. А так как I2C на 8535 (Slave) работает по прерыванию, то я всегда получал в ответ затребованых 8 байт, не смотря на то работает АЦП или нет. А так как осциллографом ничего не видно, то грешил на SPI. Сейчас переписал тест так, чтобы после опроса р-ров АЦП выводилось дополнительное значение (0x70). Это указывает на то, что программа не "зависла" и SPI и АЦП что-то передали.
НО импульсов никаких я не вижу. Может так и должно быть?
Тогда вопрос уже по AD7706. Почему получаю FF?
И вопрос к модераторам. Можно ли как-то изменить название топика? Например, "SPI ATMega8535 и AD7706".
Последний раз редактировалось pifa; 24.05.2011 в 23:23.
|
|
|
|
24.05.2011, 23:37
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Сообщение от niXto
|
На ногу SS установите низкий уровень, даже если она выход
|
А почему именно низкий? В datasheet указано следующее:
"When the SPI is configured as a Master (MSTR in SPCR is set), the user can determine
the direction of the SS pin.
If SS is configured as an output, the pin is a general output pin which does not affect the SPI system."
Т.е. достаточно установить его на выход, а его значение не влияет на SPI. Или я ошибаюсь?
Последний раз редактировалось pifa; 24.05.2011 в 23:40.
|
|
|
|
24.05.2011, 23:42
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Сообщение от niXto
|
На ногу SS установите низкий уровень, даже если она выход
|
SS - Slave Select. Нужен 0 если SPI микроконтроллера работает слэйвом. В режиме мастера он обыный пин
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
25.05.2011, 07:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Сообщение от pifa
|
Т.е. достаточно установить его на выход, а его значение не влияет на SPI. Или я ошибаюсь?
|
У S8535 и первых мег был глюк - инициализировать СПИ и начинать передачу надо было при нуле, иначе чип автоматом переворачивался в Слэйв. Независимо от направления SS
У старых 48/88 тоже иногда на это натыкаюсь
|
|
|
|
25.05.2011, 18:11
|
|
Прописка
Регистрация: 17.10.2010
Сообщений: 113
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 12 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Ну вроде как то так:
в errdata на rev E AT90S/LS8535http://www.atmel.com/dyn/resources/prod_documents/DOC1657.PDF
про SPI только следующее
Цитата:
|
The SPI Can Send Wrong Byte
If the SPI is in Master mode, it will restart the old transfer if new data is written on the same clock edge as the previous
transfer is finished.
Problem Fix/Workaround
When writing to the SPI, first wait until it is ready, then write the byte to transmit.
|
устал и адекватно перевести сейчас не могу ... чтот типа что если не вовремя ...
в rev D то же самое.
|
|
|
|
25.05.2011, 18:22
|
|
Прописка
Регистрация: 17.10.2010
Сообщений: 113
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 12 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
переводчиком:
Цитата:
|
SPI Может Отправить Неправильный Байт
Если SPI будет в Основном режиме, то он перезапустит старую передачу, если новые данные будут записаны на том же самом фронте синхроимпульса как предыдущее
передача заканчивается.
Проблема Фиксирует/Обходной решение
При записи в SPI, сначала ожидайте, пока это не готово, затем запишите байт, чтобы передать.
|
|
|
|
|
25.05.2011, 18:36
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
У меня каждая передача анализируется на завершение:
SPDR = byte;
while(!(SPSR & 0x80));
К тому же процессор ATMega8535, а не 90S
|
|
|
|
25.05.2011, 18:56
|
|
Прописка
Регистрация: 17.10.2010
Сообщений: 113
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 12 сообщении(ях)
|
Re: SPI ATMEGA8535 не запускается
Сообщение от pifa
|
К тому же процессор ATMega8535, а не 90S
|
прошу прощения, проморгал
в даташите от 06.2010 на ATmega8535 действительно ошибок по SPI не написано ...
хотя как мне думается - устройство контроллера - статическая логика, следовательно по-любому осцилографом импульсы можно было увидеть ...
правда у меня осцил цифровой и на ждущем режиме - пишет ...
а вот обычным лучевым, если процесс кратковременный, - можно и не словить даже на ждущем режиме, ИМХО ...
а что мешает вывести три проводочка плюс пара транзисторов ( преобразователь USART - RS232) и проверить работу не косвенно, а воочию, через терминал например?
ножки USART задействованы?
у меня коробочка с 3 проводами (к USART цеплять) и разъемом для ком порта вседа под рукой ... иногда помогало.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:34.
|
|