Пока, единственное, что хочется сделать, перекинуть чип, но нет возможности, вот и сижу х. страдаю.
Мошт фьюзами кварц на внутренний перевести - без паяльника его исключить.
Я, правда, не знаю как. Но отсечь максимум от камня нужно.
Переводил, на внутрений 8 мгц, начинает вроде сигать в х2, как положено, но при этом опять глюк за глюком, и ты прав, он (глюк этот) не переодичен…
3 нога не должна на земле быть и 6 не должна быть на +5
Что это меняет, если порт не трогать, по умолчанию он же вход?
Почему нано PB с али, работает как надо?
Другая кристаллическая решетка ))
Ага, или другой АСМ код заливаю Я))
А если попробовать без прерываний и усарта? Задействовать счётчик как таймер и по нему мигать светодиодом примерно 5-10 Гц. Визуально нестабильность хорошо видно будет. Либо тупо любой пин в цикле 10101. Осциллом смотреть.
Как вариант перевести в режим тактирования от внешнего генератора. И помуружить от 0 до N Гц.
Я предлагаю проверить без прерываний:
void setup() {
cli();
pinMode(13, OUTPUT);
for (uint8_t i = 0; i < 3 * 2; i++) {
digitalWrite(13, !digitalRead(13));
_delay_ms(100);
}
}
void loop() {
digitalWrite(13, !digitalRead(13));
_delay_ms(1000);
}
Или проверял?
Миллис/микрос все равно тикать будет, он же в ините прям запускается на таймере.
Это надо прям с майна без сетупов и за-cli() ить сразу МК.
Так у меня ж без миллис. И таймеров соответственно.
Это надо прям с майна без сетупов и за-cli() ить сразу МК.
В этом варианте всё работает как надо.
int main () {
cli();
pinMode(13, OUTPUT);
for (uint8_t i = 0; i < 3 * 2; i++) {
digitalWrite(13, !digitalRead(13));
_delay_ms(100);
}
while (1) {
digitalWrite(13, !digitalRead(13));
_delay_ms(1000);
}
return 0;
}
Я вижу, что без дилея. Он, конечно, миллис не будет юзать и функция чтения софтварного счётчика выкинется, но сам хардварный счётчик все равно в ините должен будет быть инициализирован и начать дергать ISR, где идёт счёт миллисов.
Не будет дёргать, потому что прерывания запрещаем в сетапе.
Через какое-то время - да, но сначала подергает.
Мы же хотим локализовать место бага неявной природы. Я бы начал с нулевой конфигурации, потом добавлял функционал. А так - неведомый фотон может успеть проскочить в ячейку за неск. тактов. ))
Потом в майн можно уже докидывать куски инита и наблюдать, когда поплохеет.
Посмотри под кроватью, вдруг такой завалялся…мало ли, забыл закрыть.
А на резонаторе конденсаторы в норме?
А, ну если фитон, тогда да.)
Инит устанавливает делитель и разрешает счёт ТС0, а он в 0-ле по сбросу.
А тут, бац. Ещё ничего не насчитав (не говоря уже о переполнении), мы сразу после инита, в сетапе первым делом запрещаем прерывания.
Можно и как у BOOM-а, без разницы. Только там нет смысла запрещать прерывания - они и так запрещены.
И этот вариант работал, только напрямую с портами.
Ну вот, уже начинает шустрить по транзисторам. Какой-нить коротит там и капец.
Вобщем, в данном случае, я сторонник последовательного наращивания нагрузки без размышлений о том, что в какой последовательности отработает, если все оставить на месте.
Без разницы с какой стороны заходить.) Обычно быстрее находится при бинарном поиске. Из далёкой практики: плата с кучей мс, искать нет возможности. Разделил пополам - заменил половину, проверил. Если не работает - оставшиеся пополам…