Простые советы для применяющих AVR

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не смог придумать, куда бы написать, создал тему... возможно, будут еще советы от других.

лично от меня совет, выстраданный трем сутками поисков проблемы: не забывайте настраивать вывод SS на выход, когда используете SPI в режиме мастера!

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

странно, что ты с таким большим опытом совершил такую "детскую" ошибку.
я чуть более года назад впервые решил освоить SPI.
но я почитал внимательно даташит, и такой ошибки не совершил.
и я решил освоить не просто отвлеченный пример, а сразу с применением функций последовательного программирования.
до собственно программирования (заливки флеши и еепром) я так и не дошел, но сделал чтение сигнатуры, всех фьюзов и всех калибровочных байтов.
а также сделал запись фьюзов и стирание чипа.
проверял только на АТмега8, так как кроме АТмега8 у меня других МК просто нет.
если эту мою разработку довести до логического конца, то получится программатор, которому не нужен специальный драйвер, как, например, для USBASP нужен драйвер.
соединение с компом у меня по СОМ-порту через конвертер USB-to-TTL. а у этого конвертора в системе уже есть драйвер виртуального СОМ-порта.

и исходя из сказанного мной, самый главный совет - читайте внимательно даташит на свой МК.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Starichok51, я пал жертвой именно своего "опыта". известно ведь, что под напряжение чаще других попадают именно опытные электромонтеры...
я был уверен, что помню все наизусть, и даташит читать не обязательно - с SPI я сделал несколько десятков проектов! и был самим собой наказан за это самомнение...

когда что-то делаешь впервые, даташит читать не лень... а вот потом...

кстати, еще одна штука, которая потрепала мен нервы - функции для бутлоадера, входящие в avr-libc. описание скудное, а "самодокументирующиеся имена" переменных создали впечатление, что в функцию void boot_program_page (uint32_t page, uint8_t *buf) надо передавать НОМЕР страницы... а на самом деле - АДРЕС её начала.

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

Мой уютный бложик... заходите!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

ну, и у меня уже частенько бывает склероз. как никак уже 71 исполнился ...
что-нибудь и забуду сделать, а потом долго вылавливаю ошибку.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Эиком - электронные компоненты и радиодетали
VNS
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1627
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Сообщение VNS »

[uquote="ARV",url="/forum/viewtopic.php?p=4190431#p4190431"]не смог придумать, куда бы написать, создал тему...[/uquote]
На эти грабли Вы уже наступали как показал поиск по сайту...
https://radiokot.ru/forum/viewtopic.php?f=57&t=172951
Видимо забыли тот случай... :)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
VNS
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1627
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Сообщение VNS »

[uquote="ARV",url="/forum/viewtopic.php?p=4190556#p4190556"]ну да, забыл, о чем и признался давеча честно:)))[/uquote]
Я, не в упрёк... :) сам иногда забываю элементарное... делая что-то на автомате... :beer:
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Не обязательно на выход. Можно и входом оставить, но, если используется SPI, и режим мастер, держать единицу на входе, чтобы в слейв не переключился,
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4190496#p4190496"]если эту мою разработку довести до логического конца, то получится программатор, которому не нужен специальный драйвер, как, например, для USBASP нужен драйвер.[/uquote]
Я для той же цели использую avrdoper-HID и ft232-bb. Ни тому, ни другому специальный драйвер не нужен.
ARV писал(а):не забывайте настраивать вывод SS на выход, когда используете SPI в режиме мастера!
Действительно странная ошибка, если не забывать, что к одному SPI может быть подключено множество slave'ов, и переключение всегда осуществляется вручную. То есть вывод CS ничем не лучше любой другой свободной ножки.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):странная ошибка, если не забывать, что к одному SPI может быть подключено множество slave'ов, и переключение всегда осуществляется вручную
количество подключенных слейвов тут совершенно ни при чем: SS - это управляющий ВХОД, и это является причиной ошибок для тех, кто наивно (как я) полагает, что в режиме МАСТЕР состояние УПРАВЛЯЮЩЕГО ВХОДА "ВЫБОР ВЕДОМОГО" не играет роли - еще как играет! о том и предостерегаю
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

А, вы про баг когда режим мастера сбрасывается. Я в него не втыкался, потому что в качестве CSа обычно удобнее всего было использовать именно CS.
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Как бы это не баг. Все логично. Если пин настроен на вход, то при низком уровне будь любезен, служи. :)
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Не мне обзывать багом эту фичу, но выглядит она странно: если МК изнутри сам себя назначил мастером, кто имеет право снаружи его перенастроить?! Это как в машине дать пассажиру свой отдельный руль.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4192390#p4192390"]Как бы это не баг. Все логично. Если пин настроен на вход, то при низком уровне будь любезен, служи. :)[/uquote]
Угу. А если на произвольный аналоговый вход подается напряжение - будь добр измерить, и плевать что в коде этот вывод не задействован вообще ни под что. Или XCK вывод UART - если на него приходят импульсы, будь добр переключиться в синхронный режим и подстраивайся.
Нет уж, если в данной настройке периферии какой-то вывод не используется, он должен работать как обычный GPIO, а не как грабли. Для мастера SPI назначение всех линий CS одинаково - управление слейвами и ничего другого. Если уж очень хочется реализовать специальный режим с переключением мастера (лично вам хоть раз пригодилось?), выделите под это отдельный бит настройки.
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Не хочешь служить, объяви пин выходом. Делов-то... :)))
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

А если мне не нужен еще один выход, а нужна кнопка?
Друг Кота
Аватара пользователя
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

И ещё. Даже если slave единственный - не нужно его CS садить на 0. По срезу CS призводится очистка приёмного буфера в slave. Я на этом погорел давно тому назад. Если в линию случайно попадёт лишний импульс (бит) - он сдвинет все биты на 1 позицию, и так - до скончания времён. Откуда он возьмётся - ХЗ. Не это важно. А вот если правильно рулить CS'ом - в худшем случае будет испорчен 1 байт. Ущучим его по контрольной сумме и передадим повторно.
Изображение
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Детали в студию
Контактная информация:
Ответить

Вернуться в «AVR»