Обсуждаем контроллеры компании Atmel.
Ответить

Re: mega8 и nrf24l01 в codevision

Пт фев 02, 2018 13:49:32

Страница 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);

Re: mega8 и nrf24l01 в codevision

Сб фев 03, 2018 15:21:09

где там в ДШ ошибки увидели?
после чтения status его надо сбросить.:
сработало прерывание на ноге IRQ, читаем статус
temp = read_reg(STATUS);
//в temp записали значение статуса и смотрим событие прерывания....
write_reg(STATUS, temp); //записать считаное значение статуса обратно, т.к. прерывание надо сбросить путем записи 1.

Re: mega8 и nrf24l01 в codevision

Сб фев 03, 2018 19:03:53

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

Re: mega8 и nrf24l01 в codevision

Пн фев 05, 2018 09:34:09

Я пока пытаюсь делать все последовательно. Сначала настроил 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);

Re: mega8 и nrf24l01 в codevision

Пн фев 05, 2018 14:37:03

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

Re: mega8 и nrf24l01 в codevision

Вт фев 06, 2018 10:04:31

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

Модули работают, на ардуине все завелось. Но ничего непонятно. Библиотеки портануть нереально. Там библиотека на баблиотеку ссылаются. Думаю...

Re: mega8 и nrf24l01 в codevision

Вт фев 06, 2018 13:59:46

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