Atmega8 и SPI 25 серии помогите разобраться

Обсуждаем контроллеры компании Atmel.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение akl »

Если оператор

Код: Выделить всё

a = SPDR; //считывание данных из регистра SPDR в переменную a 
инициирует выдачу 8 периодов SCK, чтобы по линии MISO заполнить SPDR, то да...
Иначе

Код: Выделить всё

SPDR = 0x00000000; //пустой байт по линии MOSI и генерация 8 периодов SCK
while(!(SPSR & (1<<SPIF)));//подождем пока буфер приемника заполнится данными MISO
a = SPDR; //считывание данных из регистра SPDR в переменную a
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

Скачайте или купите книгу Вольфганг Трамперт "AVR RISC микроконтроллеры фирмы Atmel". Там расписана архитектура МК. В этой книге примеры работы с расширением ввода вывода на сдвиговых регистрах. Если вы это не освоите сами, задолбаете любой форум глупыми вопросами. Ответы на которые в книгах, если соизволите потратить свое драгоценное время на чтение. После того как прочитаете книгу, ищите примеры в интернете. И только после того, как потрудитесь, и у вас будут какие либо проблемы, идите на форум.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Dimon456 »

franc_di писал(а):SPDR = 0x00000011; //команда 03h передачи данных инициирует режим spi
это число не влезет в 8 битный регистр и 0x00000011 это не 03h.
Если пытаетесь в протеусе то там нет модели 25q64.
franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="akl",url="/forum/viewtopic.php?p=3790582#p3790582"]Если оператор

Код: Выделить всё

a = SPDR; //считывание данных из регистра SPDR в переменную a 
инициирует выдачу 8 периодов SCK, чтобы по линии MISO заполнить SPDR, то да...
Иначе

Код: Выделить всё

SPDR = 0x00000000; //пустой байт по линии MOSI и генерация 8 периодов SCK
while(!(SPSR & (1<<SPIF)));//подождем пока буфер приемника заполнится данными MISO
a = SPDR; //считывание данных из регистра SPDR в переменную a
[/uquote]

Я так понял, что команда записи в регистр инициирует режим spi при этом появляются таковые импульсы и они не прекращаются пока сеанс связи не будет окончен поднятием лапки ss к 1.

Конкретно тут меня интересовало правильно ли я понял что 03h это код в hex, а запись 0x00000011 годится для живой схемы.

Добавлено after 3 minutes 49 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=3790609#p3790609"]
franc_di писал(а):SPDR = 0x00000011; //команда 03h передачи данных инициирует режим spi
это число не влезет в 8 битный регистр и 0x00000011 это не 03h.
Если пытаетесь в протеусе то там нет модели 25q64.[/uquote]

Там есть другая микросхема с таким интерфейсом. Что по сути ничего не меняет для проверки в протеусе.

Тогда что означает инструкция 03h? Даже на графике в период двух последних стробо импульса, идёт подъем по шине входных данных.

Добавлено after 1 minute 28 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=3790585#p3790585"]Скачайте или купите книгу Вольфганг Трамперт "AVR RISC микроконтроллеры фирмы Atmel". Там расписана архитектура МК. В этой книге примеры работы с расширением ввода вывода на сдвиговых регистрах. Если вы это не освоите сами, задолбаете любой форум глупыми вопросами. Ответы на которые в книгах, если соизволите потратить свое драгоценное время на чтение. После того как прочитаете книгу, ищите примеры в интернете. И только после того, как потрудитесь, и у вас будут какие либо проблемы, идите на форум.[/uquote]

Спасибо за название книги
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Dimon456 »

Вы пишите
franc_di писал(а):или 03h это 03 в hex, то есть в bin будет 00000011
а это
franc_di писал(а):а запись 0x00000011
не в bin.

Добавлено after 6 minutes 45 seconds:
franc_di писал(а):Там есть другая микросхема с таким интерфейсом.
не спорю что есть, только кривые все, к примеру у M45PE16 в протеусе за место команды Read data 03h следует использовать команду FAST_READ 0Bh, а в реальном железе надо правильную команду использовать Read data 03h.
franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3790614#p3790614"]Вы пишите
franc_di писал(а):или 03h это 03 в hex, то есть в bin будет 00000011
а это
franc_di писал(а):а запись 0x00000011
не в bin.

Добавлено after 6 minutes 45 seconds:
franc_di писал(а):Там есть другая микросхема с таким интерфейсом.
не спорю что есть, только кривые все, к примеру у M45PE16 в протеусе за место команды Read data 03h следует использовать команду FAST_READ 0Bh, а в реальном железе надо правильную команду использовать Read data 03h.[/uquote]

Как не в бин, я просто всегда пользуюсь данной формой записи при конфигурации портов, и там это успешно работает. Тогда что означает это странное 03h?

Не помню сейчас какую точно взял, проект дома создан. Поидее я конечно должен был посмотреть на неё даташит тоже. А я решил что это все одинаково, так как при ремонте микросхемы ставлю те что под рукой, главное не меньше чем нужно. В конечном итоге прошивка будет залита в живое устройство, после успешной компиляции кода и кпрощенного теста в протеусе.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

1:
0b00000011 - 3 (b - binary, бинарный, двоичный код).
0x03 - 3 (шестнадцатеричный код).
03h - 3 (шестандцатеричный код).
Это все в книжках. Повторяю это.
2:
Магические числа. Гугл в помощь. Опять же, читайте книжки.

Если вы почитаете книги, то сэкономите массу времени, в первую очередь себе, и участникам форума. Поймите правильно. Участники форума могут отвечать. Но это будут вопросы, сколько будет два умножить на два. Вам захочется отвечать на такие вопросы? Тратить на них свое время?
Также погуглите "методы эффективного программирования". Там масса полезного.
franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="Demiurg",url="/forum/viewtopic.php?p=3790657#p3790657"]1:
0b00000011 - 3 (b - binary, бинарный, двоичный код).
0x03 - 3 (шестнадцатеричный код).
03h - 3 (шестандцатеричный код).
Это все в книжках. Повторяю это.
2:
Магические числа. Гугл в помощь. Опять же, читайте книжки.

Если вы почитаете книги, то сэкономите массу времени, в первую очередь себе, и участникам форума. Поймите правильно. Участники форума могут отвечать. Но это будут вопросы, сколько будет два умножить на два. Вам захочется отвечать на такие вопросы? Тратить на них свое время?
Также погуглите "методы эффективного программирования". Там масса полезного.[/uquote]

К сожалению я технарь по образованию радиомеханик, у меня серьёзное непонимание английского языка. В книжках для чайников пишут таким языком что у меня волосы дыбом становятся после каждой фразы :dont_know: . Ну не понимаю я эти абстрактные мысли писателя. А так как знаю как работают детали, разбираюсь с тем с чем столкнулся, урывками черпая информацию. В режиме проблема - поиск ответа.

Спасибо за подсказку насчёт записи, извините что отнимаю у вас время.
Буду выяснять у гугла чем отличаются записи 0х00000000 и 0b00000000.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

[uquote="franc_di",url="/forum/viewtopic.php?p=3790670#p3790670"]К сожалению я технарь по образованию радиомеханик, у меня серьёзное непонимание английского языка. В книжках для чайников пишут таким языком что у меня волосы дыбом становятся после каждой фразы :dont_know: . Ну не понимаю я эти абстрактные мысли писателя. А так как знаю как работают детали, разбираюсь с тем с чем столкнулся, урывками черпая информацию. В режиме проблема - поиск ответа.

Спасибо за подсказку насчёт записи, извините что отнимаю у вас время.
Буду выяснять у гугла чем отличаются записи 0х00000000 и 0b00000000.[/uquote]
У меня 9 классов образования. Представляете? С детства увлекаюсь электроникой. У нас по сути нет отличий. Только вы закончили технарь, а меня азам электроники учили 2 человека. Один закончил два высших образования, с ним я дошел до аналоговых микросхем. Начали с радиоламп. Второй дал мне азы цифровой электроники. Дальше я учился сам. Читал журналы, книги, справочники. До 2006 года я работал автоэлектриком. Надоело. Устроился на завод пластмасс электронщиком. По сути по блату. Через знакомых. Практически без опыта работы с пром оборудованием. Взяли только по единственной причине. Я увлекался электроникой. В первый же день отремонтировал станок. Дальше я стал изучать оборудование. Схемотехнику. И поверьте, если бы я не соответствовал должности, меня бы выпнули без жалости. В 2007 году самостоятельно стал изучать микроконтроллеры AVR. Моей настольной книгой была Вольфганг Трамперт "AVR RISC микроконтроллеры фирмы ATMEL". Ассемблер. Через несколько лет освоил Си.
И вот что я вам скажу. Останавливает инертность, лень и страх. Сложности, что не получится и так далее. Победите себя и все вам будет.

P. S. С английским у меня тоже не очень. Но меня это не останавливало. Где со словарями переводил, где через яндекс-гугл переводчик. Спустя какое-то время в памяти откладываются основные термины, слова, чтобы хотя бы через пятое на десятое понимать.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение NStorm »

[uquote="franc_di",url="/forum/viewtopic.php?p=3790670#p3790670"]Буду выяснять у гугла чем отличаются записи 0х00000000 и 0b00000000.[/uquote]
Элементарно. 0x0 - 16-ричный формат. 255 в десятичной системе тут записывается как 0xFF. Оно же пишется как FFh в литературе иногда. Записи 0x* равнозначно записе *h, когда встречаются в тексте. В C шестандцатиричные числа записываются только как 0x*.
Запись 0b0 - двоичное число. После 0b только 0 и 1 могут идти. 255 в десятичной тут записывается как 0b11111111.

Добавлено after 3 minutes 5 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=3790609#p3790609"]это число не влезет в 8 битный регистр и 0x00000011[/uquote]
В этом утверждении вы ошиблись. Да 0x000000000000000000000000000011 влезет в 8-битный регистр ) Лидирующие нули ничего не значат, сколько их не пиши, позиций они не резервируют. На C компилятор их отбросит.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение akl »

Замечу, 0x000000000000=0b00000000000000000 и т.д. =0. Числа, отличные от 0 записываются более строго.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="NStorm",url="/forum/viewtopic.php?p=3790692#p3790692"][uquote="franc_di",url="/forum/viewtopic.php?p=3790670#p3790670"]Буду выяснять у гугла чем отличаются записи 0х00000000 и 0b00000000.[/uquote]
Элементарно. 0x0 - 16-ричный формат. 255 в десятичной системе тут записывается как 0xFF. Оно же пишется как FFh в литературе иногда. Записи 0x* равнозначно записе *h, когда встречаются в тексте. В C шестандцатиричные числа записываются только как 0x*.
Запись 0b0 - двоичное число. После 0b только 0 и 1 могут идти. 255 в десятичной тут записывается как 0b11111111.

Добавлено after 3 minutes 5 seconds:
[uquote="Dimon456",url="/forum/viewtopic.php?p=3790609#p3790609"]это число не влезет в 8 битный регистр и 0x00000011[/uquote]
В этом утверждении вы ошиблись. Да 0x000000000000000000000000000011 влезет в 8-битный регистр ) Лидирующие нули ничего не значат, сколько их не пиши, позиций они не резервируют. На C компилятор их отбросит.[/uquote]


Получается я ошибся с индексом. Вместо 0x нужно писать 0b. Тогда команда записи в регистр должна выглядеть так
SPDR = 0b00000011; // 03h в двоичном варианте

P/S больше люблю и понимаю двоичные байты чем 16ричные варианты записи, которые надо постоянно переводить что там за число.

Добавлено after 8 minutes 42 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=3790699#p3790699"]Поисковик
Пример[/uquote]

Заплюхался в конце "Использование систем счисления" это хорошо когда программист рядом с высшим образованием, который может объяснить на русском понятном языке что к чему и для чего. Поэтому я на форум и пришел. А книжки пишут программисты, и объясняют они будто ты уже что-то знаешь... :cry:
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение NStorm »

Ну как бы системы счисления считается базовым навыком. Которое уже если в образовательных учреждениях не было получено, то добывай как хочешь. А то так реально и 2+2 что такое надо в каждой книжке объяснять, а то и с азбуки начать )
franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="NStorm",url="/forum/viewtopic.php?p=3790735#p3790735"]Ну как бы системы счисления считается базовым навыком. Которое уже если в образовательных учреждениях не было получено, то добывай как хочешь. А то так реально и 2+2 что такое надо в каждой книжке объяснять, а то и с азбуки начать )[/uquote]

Системы счисления в базовом варианте мне понятны. А то что там автор дальше творит с этими числами. Кудато двигает. Не понятно с какого перепугу добавил 2 старших бита слева 1 и 0. Вот подобные действия с потолка ставят в тупик. В голове мысли только зачем и откуда это все.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

[uquote="franc_di",url="/forum/viewtopic.php?p=3790740#p3790740"]Системы счисления в базовом варианте мне понятны. А то что там автор дальше творит с этими числами. Кудато двигает. Не понятно с какого перепугу добавил 2 старших бита слева 1 и 0. Вот подобные действия с потолка ставят в тупик. В голове мысли только зачем и откуда это все.[/uquote]
Когда-то, давным-давно в далекой галактике Когда-то, много лет назад, на одном форуме, один человек сказал. Встань рядом с умным, знающим (нужное подчеркнуть) человеком. И всасывай. Знания, умения, принципы мышления. Сейчас я передаю это вам. Не ной! Без труда не вытащишь и рыбку из пруда. Знания тоже даром не даются. А которые даром дались не оценятся, как должно. Учись искать информацию. Учись учиться. Представь, как ты в школе впитывал знания. Так и сейчас. Хочешь научиться, ищи информацию.
Но Ванму ничего не ответила – это был один из самых первых уроков, полученных ею от Хань Фэй-цзы. Когда ты обладаешь мудростью и другой человек понимает, что нуждается в твоем совете, дари его от чистого сердца. Но когда человек еще не понял, что твоя мудрость пойдет ему на пользу, воздержись от слов. Еда выглядит аппетитной только в глазах страждущего. Цин-чжао не нуждалась в мудрости Ванму и никогда в ней не будет нуждаться. Поэтому Ванму ответила ей смиренным молчанием. Ей оставалось только надеяться, что Цин-чжао найдет собственный путь к пониманию праведных, сочувствию слабым и борьбе за свободу.


Отписываюсь от темы.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Dimon456 »

Demiurg, и сколько ему надо учиться? 2-3 года?
franc_di, может вам готовый пример нужен?
franc_di
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Сб фев 08, 2020 02:33:35

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение franc_di »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3790821#p3790821"]Demiurg, и сколько ему надо учиться? 2-3 года?
franc_di, может вам готовый пример нужен?[/uquote]

Спасибо за понимание.
Глупо отказываться от помощи с примером. Сейчас как раз просматриваю темы как отправляют более 1 байта по spi. А вот до компьютера с кодом доберусь только поздно вечером. Попытаюсь исправить косяки в коде и запихнуть это в цикл какой-нибудь.

По сути мне нужно понять правильно ли я понял, что отправка 32 бит (4байта команда и адрес) происходят порциями по 8 бит 4 раза с ожиданием флага готовности каждый раз. А после отправки 32 бит, микросхема памяти поймет что от нее хотят и запишет в регистр данных содержимое нужной мне ячейки. После чего я подниму /SS к лог 1.

И второй вариант, все тоже самое(4байта), только /SS я не поднимаю, а считываю по 8 байт из последующих ячеек по порядку N-количество раз.(будет ли это работать и будет ли появляться флаг что регистр заполнился, и можно считывать.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Atmega8 и SPI 25 серии помогите разобраться

Сообщение Demiurg »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3790821#p3790821"]Demiurg, и сколько ему надо учиться? 2-3 года?
franc_di, может вам готовый пример нужен?[/uquote]
Ему не готовый пример нужен. А разобраться, как работает SPI хотя бы на одном байте. Я потому его и отправил смотреть примеры расширения ввода вывода на сдвиговых регистрах.
2-3 года. Ему по любому тратить столько времени,чтобы начать делать более менее грамотные вещи.
Это язык, методы программирования, взаимодействие между программными модулями и так далее.
Ответить

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