Так контроллер окончательно дохнет или как? Вот после перезагрузки и надо смотреть. Выведите прямо на семисегментник вместо одного из разрядов.
Он дохнет, только очень странно. В том и проблема.
У меня плохо с "эпистолярным жанром"
Контроллер перестает выполнять загруженный в него код, наверное такое определение будет самым точным.
В остальном он ведет себя как абсолютно рабочий контроллер, отвечает программатору, прошивается, стирается, меняет фьюзы. Делает все как рабочий контроллер. Но (повторюсь) никакой код не выполняет от слова совсем!
Почему я утверждаю что он его не выполняет именно по причине проблем с "System Clock"?
Потому-что когда у меня впервые проявилась эта проблема, я долго плясал с бубном, проверял код, делал всякие вставки в код и прочее. Не помогало ничего ну совсем. Он мог случайно включиться, начать выполнять код, отправить пару сообщений в последовательный порт и потом опять начинал заикаться, переотправлять начала сообщений, а потом вообще помирал.
И в конце, когда я устал от плясок, мне в голову пришла мысль, если проблема с внешним кварцем, что будет если я его переведу на внутрениий?
Перевел - все сразу заработало!!! Понимаете?!! от внешнего кварца контроллер перестал работать, а от внутреннего отлично работал. Я несколько раз проверил, переключал туда/сюда. От внешнего кварца не работает, а от внутреннего - работает.
Я поменял кварц - не помогло.
Так он у меня работал от внутреннего генератора.. я его опять подключил к CAN. и после этого он опять немного поработал и "исдох"
И после этого он уже не выполняет код ни от внешнего кварца ни от внутреннего осциллятора.
По потреблению тока он тоже проявляет себя прям как полностью рабочий контроллер. Потребление отличается на 0,4 милиампера
И потребляет даже меньший ток чем рабочий. Но это я думаю и связано как раз с тем что он не тактируется и никаких операций не выполняет.
Но я для себя рисую картину так:
ТАктовые импульсы в микроконтроллере подаются на блоки SPI и UART то есть UART имеет таки связь с SPI через блок тактироания. Казалось бы а причем тут CAN? ведь CAN преобразователь подключен к MCP2515, а не к контроллеру, НО!!! В MCP2515 есть свой кварц, который тактирует SPI на MCP и тактирует TX|RX на TJA1050 (преобразователе CAN) соответственно интерфейс CAN связан через тактирование SPI с блоком тактирования микроконтроллера. Соответственно я предполагаю что по CAN шине "гуляют" какие-то потенциалы/импульсные помехи еще какая нить дрянь, от которой у CAN микросхемы есть "противоядие", но эти помехи через блоки тактирования долетают до контроллера и видимо у него это самая слабая часть, которую они успешно "убивают"
Вот к такому заключению я прихожу. Другого более-менее внятного объяснения я пока найти не могу.
Также я не могу придумать как от этого защитить контроллер?