Atmega8 работает по spi с модулем nrf24. Думал использовать ШИМ 1го таймера, освободил ноги рв1 и рв2. А не работает, потом думаю просто высокий уровень на этих ногах установить, а нету его. Инициализацию nrf24 убрал, уровень на рв1 и 2 поднять получается. Spi и ШИМ вместе не выйдет использовать?
Atmega8 работает по spi с модулем nrf24. Думал использовать ШИМ 1го таймера, освободил ноги рв1 и рв2. А не работает
Если использовать свою библиотеку для nrf24 по SPI то использования ШИМ таймера1 проблем не должно возникать. Если сторонняя библиотека для nrf24 по SPI, то её придётся править (в плане использования вывода SS - РВ2).
Atmega8 работает по spi с модулем nrf24. Думал использовать ШИМ 1го таймера, освободил ноги рв1 и рв2. А не работает
Если использовать свою библиотеку для nrf24 по SPI то использования ШИМ таймера1 проблем не должно возникать. Если сторонняя библиотека для nrf24 по SPI, то её придётся править (в плане использования вывода SS - РВ2).
Да в тот то и дело что своя, ноги 1и2 свободны. 2 перенёс и передатчик работает с перенесенным ss
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Значит не корректно написан код… ищите ошибку… не может таймер-счётчик1 влиять на работу аппаратного SPI. Так и аппаратный SPI не может влиять на работу таймера1.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Значит не корректно написан код… ищите ошибку… не может таймер-счётчик1 влиять на работу аппаратного SPI. Так и аппаратный SPI не может влиять на работу таймера1.
Ну до работы таймера дело даже не дошло. Просто если прошла инициализация передатчика по spi то тупо высокий уровень на В1 и В2 не установлен. Если закомеетить инициализацию то диодики горят
Вы модуль SPI настраиваете сами или используете какую-то библиотеку? При самостоятельной настройки модуля SPI никаких проблем не должно возникать… если используется библиотека, то необходимо посмотреть, в каком состоянии она настраивает вывод SS (РВ2) – на вход или на выход. В случае SPI Master (а это как раз Ваш случай), SS – как правило используется как выход… а значит и ШИМ должен работать… к тому же что настройка модуля SPI никак не затрагивает вывод РВ1 который по Вашим заявлениям так же не работает… «значит дело не в бабине…» (С).
установить 1 получилось. при инициализации порта spi была строка DDRB |= ((1<<PORTB0)|(1<<PORTB3)|(1<<PORTB5)); после инициализации DDRB |= ((1<<PORTB1)|(1<<PORTB2)); если все это записать в одну строку то работает. нельзя в коде несколько раз ноги определять?
Что-то вы недоговариваете. Судя по отсутствующему определению переменной data, видать не весь код показан. Не могут эти 2 кода сильно по-разному работать.
Что-то вы недоговариваете. Судя по отсутствующему определению переменной data, видать не весь код показан. Не могут эти 2 кода сильно по-разному работать.
int main(void) { //инициализация spi и ножек nrf24
вот только этого не хватает. понимаю что немного странный код, но именно это я загружаю. в одном случае светодиоды горят, в другом нет. эту выдержку я из основного сделал попроще, что бы понять почуму так происходит
вот только этого не хватает. понимаю что немного странный код, но именно это я загружаю. в одном случае светодиоды горят, в другом нет. эту выдержку я из основного сделал попроще, что бы понять почуму так происходит
Соберите мегу на макетке. К SPI ничего не подключайте, просто пусть ноги в воздухе болтаются, но код оставьте. На PB1, PB2 будет высокий уровень? Вот прям должен.
Добавлено after 4 minutes 43 seconds: Это конечно не настоящая мега, а симуляция в протеусе, но всё работает как надо.
Чёт мистика какая-то(( Лично я бы попробовал: 1. Отключить оптимизацию; 2. Заменить буржуйские записи типа PORTB2, PORTB3 на правоверные 2 и 3. 3. Пройтись симулятором. 4. Бухнуть и приступить с утра.
//передача байта в nrf24 PORTB &= ~(1<<PORTB0); //низкий уровень CSN SPDR = 0x20; while(!(SPSR & (1<<SPIF)));//подождем пока данные передадутся SPDR = 0x3E; while(!(SPSR & (1<<SPIF)));//подождем пока данные передадутся data = SPDR; PORTB |= (1<<PORTB0); //высокий уровень CSN
подскажите где я туплю? так на ногах PB1 и PB2 высокого уровня нет
Естественно, так как включен модуль SPI.
Каким образом включённый SPI может влиять на уровень вывода РВ2 а тем более на РВ1? Аппаратная часть SPI не может автоматически менять уровень на выводе SS (PB2).
Вложение:
1.png
из даташита:
Цитата:
19.3.2 Master Mode 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 настроен как мастер (установлен бит MSTR в SPCR), то пользователь может задать желаемое направление вывода SS. Если SS настроен на выход, то он работает как обычная линия цифрового вывода и не оказывает влияния на систему SPI.
При конфигурации регистров SPI, вывод SS (РВ2) необходимо установить на выход и можно менять уровень на данном выводе в любой момент времени… в случае ТС это будет производить тааймер1 (в режиме работы ШИМ).
Соберите мегу на макетке. К SPI ничего не подключайте, просто пусть ноги в воздухе болтаются, но код оставьте. На PB1, PB2 будет высокий уровень? Вот прям долж
Чистота эксперимента пропадет. Тогда передачи по spi не дождусь
Чистота эксперимента пропадет. Тогда передачи по spi не дождусь
Чистота эксперимента как раз-таки повышается. Я вон выше вывод привел. Всё должно работать. Варианта только 2 - где-то что-то у вас на плате мешает установится высокому уровню, или же вы что-то напутали. Ну еще маловероятный вариант паленой атмеги, которая таким странным образом глючит.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения