Не работает скетч на 8мгц

shemovoi
Offline
Зарегистрирован: 15.09.2013

Доброго вермени суток, проблема такая: есть скетч который отлично работает на Ардуино уно(мега328) плавно зажигает диодную ленту, но чтоб не использовать целую ардуину, залил hex файл в мегу8 (8мгц) все работает. но диоды разжигаются не плавно, а просто включаются. Всякие блинки работают отлично с правильной задержкой. В чем причина? Прийдется ставить кварц(16) и шить бутлодер? хотелось бы использовать голую мегу. Спасибо.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

обрати внимание на аппаратные отличия 328-й и 8-й - сколько и где в 8-й находятся PWM?

shemovoi
Offline
Зарегистрирован: 15.09.2013

Спасибо, я так и думал, но верил вот этой картинке , пока не залез в дашит. Там-то оказалось, что на 11 и 12 выводе нет ШИМ на атмеге8. Все нужно перепроверять.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Чтобы не создавать новой темы спрошу здесь же

Atmega328 - внутренний резонатор 8МГц - не хотя работать радиомодули NRF24L01 и RF433
Если поставить внешний кварц на 8/16МГц все работает нормально

Так и должно быть?

Хотел сделать дешевые радиосенсоры с питанием от CR2032. Теперь придется им кварцы на 8МГц ставить, чтобы от 3-х вольт работали

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

sav13 пишет:

Чтобы не создавать новой темы спрошу здесь же

Atmega328 - внутренний резонатор 8МГц - не хотя работать радиомодули NRF24L01 и RF433
Если поставить внешний кварц на 8/16МГц все работает нормально

Так и должно быть?

Хотел сделать дешевые радиосенсоры с питанием от CR2032. Теперь придется им кварцы на 8МГц ставить, чтобы от 3-х вольт работали

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

если ничего не напутал с фьюзами.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

sav13 пишет:

Atmega328 - внутренний резонатор 8МГц - не хотя работать радиомодули NRF24L01 и RF433

NRF24L01 на внутреннем генераторе на меге8 неоднократно запускался. на 328 не помню делал или нет на внутреннем генераторе

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Клапауций 322 пишет:

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

если ничего не напутал с фьюзами.

А можно как то узнать реальную частоту, на которой работает контроллер?
Функию millis() затестить при помощи часов реального времени или есть методы попроще?

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

sav13 пишет:

А можно как то узнать реальную частоту, на которой работает контроллер?
Функию millis() затестить при помощи часов реального времени или есть методы попроще?

самый простой способ считать фьюзы контроллера

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

sav13, можно испытуемую ардуину запрограммировать на генерацию некой известной частоты таймером, а другой ардуиной эту частоту измерить.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Клапауций 322 пишет:

самый простой способ считать фьюзы контроллера

Зачем их считывать, если я их сам пишу
На внутреннем резонаторе у меня получается

low_fuses=0xC2
high_fuses=0xDE
 

dimax пишет:

sav13, можно испытуемую ардуину запрограммировать на генерацию некой известной частоты таймером, а другой ардуиной эту частоту измерить.


Недавно купил Логический анлизатор на 8 каналов. Довольно точно мерит сигнал.
Думаю, tone(20000) померить для грубой оценки

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

sav13, нет!! нельзя тоне, он берёт частоту из системной константы. Вот вам генератор на 10кГц при 16Мгц тактовой.  При 8 Мгц тактовой  будет соответссно  5 кГц. Сигнал снимать с 11 ноги

void setup() {
DDRB|=1<<DDB3; //11pin
TCCR2A= (1<<COM2A0)|(1<<WGM21); //CTC mode
TCCR2B=(0<<CS22)|(1<<CS21)|(1<<CS20); // div32
OCR2A=24; //10kHz
}

void loop() {}

 

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

sav13 пишет:

Зачем их считывать, если я их сам пишу
На внутреннем резонаторе у меня получается

low_fuses=0xC2
high_fuses=0xDE

при записи фьюзов происходит верификация т.е. считывание и сравнение с требуемым для записи.

т.е. моя рекомендация не противоречит твоим действиям.

axill
Offline
Зарегистрирован: 05.09.2011

nrf24l01 отлино работают с МК с любым тактированием. внутренний генератор RC не исключение

протокол обмена с nrf24l01 - SPI, а это значит синхронный интерфейс,  точность частоты не имеет значения