mega8 и nrf24l01 в codevision

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: mega8 и nrf24l01 в codevision

Сообщение alex_ »

Страница 51 даташита гласит:
Изображение
Чтение регистра: WriteByte(0x07); ReadByte();
запись в этот же регистр: WriteByte(0x27); WriteByte(0b00001110); //и при этом здесь ошибка, почему, написано ниже.
т.е. WriteByte(0x07); команда на чтение, команда для записи WriteByte(0x07+0x20); =>WriteByte(0x27);
и это для регистров с адресами 0х00-0х1F.

Gin87 писал(а):Считываю вроде регистр СТАТУС, все три бита в единице.

Всё зависит от того какие биты в единице, если 1,2,3 то они и будут в единице поскольку приёмный буфер пуст, причём в эти биты нельзя писать свои значения, они только для чтения; биты прерывания - 6,5,4 и это должно выглядеть для сброса так WriteByte(0b01110000);
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: mega8 и nrf24l01 в codevision

Сообщение Mishany »

где там в ДШ ошибки увидели?
после чтения status его надо сбросить.:
сработало прерывание на ноге IRQ, читаем статус
temp = read_reg(STATUS);
//в temp записали значение статуса и смотрим событие прерывания....
write_reg(STATUS, temp); //записать считаное значение статуса обратно, т.к. прерывание надо сбросить путем записи 1.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: mega8 и nrf24l01 в codevision

Сообщение alex_ »

Mishany писал(а):где там в ДШ ошибки увидели?
Ошибка не в даташите а в примере Gin87
В принципе если установленные флаги указывающие на прерывание не мешают их можно не сбрасывать.
И самое интересное, что регистр статус читается при любой команде, если кто не знал.
Gin87
Открыл глаза
Сообщения: 74
Зарегистрирован: Вс янв 24, 2010 21:29:07

Re: mega8 и nrf24l01 в codevision

Сообщение Gin87 »

Я пока пытаюсь делать все последовательно. Сначала настроил SPI - работает. Теперь хочу просто считать СТАТУС и обнулить его. Читать читается, но не обнуляется. Копаю дальше.

Код такой

Спойлер

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

WriteByte(0x07);  //читаем регистр STATUS
ReadByte();       //читаем регистр STATUS

_delay_us(20);

text=SPDR;
send_Uart(text);

_delay_us(20);

WriteByte(0x27); WriteByte(0b01110000);

_delay_us(20);

WriteByte(0x07);  //читаем регистр STATUS
ReadByte();

text=SPDR;
send_Uart(text);
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: mega8 и nrf24l01 в codevision

Сообщение alex_ »

Gin87 писал(а):Читать читается, но не обнуляется.
Для начала лучше начинать не с регистра СТАТУСа, потому что этот регистр показывает статус но мало чего даёт в нём править, можно только флаги скинуть и то если они установлены, так что лучше начни с регистра КОНФИГ 0х00 там почти все биты пишутся без проблем кроме старшего, он всегда 0.
Gin87
Открыл глаза
Сообщения: 74
Зарегистрирован: Вс янв 24, 2010 21:29:07

Re: mega8 и nrf24l01 в codevision

Сообщение Gin87 »

Попробовал прочитать КОНФИГ, тот же ответ. 00001110. Походу надо сначала сами модули проверить заведомо исправной программой. Ищу тестовый скетч для ардуины.

Модули работают, на ардуине все завелось. Но ничего непонятно. Библиотеки портануть нереально. Там библиотека на баблиотеку ссылаются. Думаю...
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: mega8 и nrf24l01 в codevision

Сообщение alex_ »

Да у вас там чудеса творятся, может есть в наличии осциллограф или логанализатор, чтобы промониторить текущую ситуацию. У меня тоже как то был своебразный затык, я уже с модулями работал, т.е. приём передача была, потом решил прошивку полностью переписать, в результате ну не работает и всё, начал потихоньку делать откат к старой версии, чтобы понять в чём ошибка. На эти поиски я убил 2 дня и не одну сотню раз перезаливал прошивку. А в итоге оказалось что при конфигурации интерфейса SPI забыл указать выводы контроллера MOSI SCK чтобы работали на выход в результате контроллер вместо того чтобы управлять выходными транзисторами просто включал подтягивающие резисторы, в результате все фронты и спады были настолько затянуты что nrfка их не могла их толком разобрать. Не помню точно, она работала или очень паршиво(пакеты по байту и то через раз) или вообще не как.
Ответить

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