Jump to content

    

ILSF15

Участник
  • Content Count

    46
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ILSF15

  • Rank
    Участник

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Тут я и не спорил, скачал себе правильный Datashit. Но не зная такой тонкости, как устаревшая линейка Automotive, я и с этой страницы скачал бы, наверно, его, т.к. он только для 328Р, а правильный - для целой семьи. Кстати, любопытно: в этом автомотиве 256 байт ееепрома или всё-таки ошибка в описании регистра?
  2. Любопытно, как. Я сегодня пытался найти хотя бы саму модель - и не нашёл. Это после вашей ссылки я такой "умный" зайти в первую попавшуюся модель и изменить URL И на той же приведённой вами странице тот самый Automotive, на котором я подвис - с ошибкой
  3. Вот как! Ну да бог с ними, главное что это не я протупил какой-то дополнительный фактор в процедуре адресации.
  4. У меня писано "2015 Atmel Corporation. / Rev.: 7810D–AVR–01/15" Это первая ссылка в гугле - Microchip. http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Ну, в общем, таки ошибка в инструкции, получается. Спасибо, понятно.
  5. Извините, если слишком много новых веток открываю, но что-то я "смотрю в книгу - вижу фигу": Тут написано, что при 1KB EEEPROM (раз уж байты адресованы линейно) максимальное значение регистра должно быть, собственно, 1023, оно же b0000001111111111 Но при этом EEAR8 всегда 0, а 9 бит вообще зарезервирован, что даёт на выходе максимальное значение b0000000011111111 = 255. И в следующей табличке, как я понимаю, EEA[9:2] - это как раз диапазон, включающий вышеупомянутые биты 8 и 9: Значит ли это, что несмотря на наличие аж целого килобайта, доступно для записи и чтения всё равно только 256 байт? Коль скоро регистр EEAR бОльшие адреса не принимает? Или может, это я чего-то недопонимаю? Или может это ошибка в datasheet?!
  6. Только один из них 5 страниц мозги трахал, а другой - решение подсказал. Sapienti sat. На этом всё.
  7. А если в обоих прерываниях есть (или могут быть - по условному оператору) изменения значения - то уже не выкинет?
  8. Да, я уже понял, сработало. Теперь, блин, надо как-то приспосабливаться к тому, что всё стало тормозить :) И таймер, похоже, стал сбрасываться! Добавил после включения таймера мигание леда при условии, что TCNT1=0 - мигает!
  9. Все и не писал. Писал (через оператор "|=") значения 0x03, 0x05 и 0x08. Пробовал - перед уходом в сон в main, пробовал непосредственно перед запуском таймера. Никаких изменений вообще. Могли ардуинщики вшить частоту намертво? Или - возможно - это и правда какой-то китайский клон с косяками в реализации? Что и в этот регистр не пишется, и счётчик таймера не стирается? Есть способы их различить без специального оборудования? О! А там ещё писано: write the desired value to CLKPS while writing a zero to CLKPCE, может, в этом дело? Сейчас попробую. UPD: ДА!!!
  10. Если её нужно специально включать - конечно же, не включал. Попробовал все варианты - никак не меняется. Может быть такое, что ардуинщики заблокировали изменение? (на всякий случай уточню, что я сперва записывал 1 в седьмой бит одновременно с нолями во все остальные, а следующим оператором - единицы в биты соответствующих делителей. Без изменений) ТВАЮ ДИВИЗИЮ, Фокс! Чукча настолько не читатель, что не отличает "возможно вы затёрли значение по-умолчанию" от "умолчанию, настроен FUSE bit CLKDIV8, но ардуинщики наверняка, когда зашивали свой загрузчик, изменили его на незапрограммированный"?! Я вот теперь не сомневаюсь, что dimka76 - профессионал. А ты - мозго...шмыг. Своими ничем, кроме твоих слов, не подтверждёнными годами опыта тряси у малолетних дурочек перед носом.
  11. О! Спасибо за полезную информацию, немножко встало на свои места. Куда полезней... ну вы поняли чего. А изменение CLKPR не скажется на загрузчике? Хм, никогда не сталкивался с таким поведением... Ну, то есть, что касается переменных - всё вроде как исправно работает, согласно дебаггеру в IAR MSP и - косвенно - судя по поведению ардуинки.
  12. Ну ладно. Сам попросил. Вместо того, чтобы сношать людям мозг бесполезной инфой, которую они без тебя знают, учи матчасть, прафисианал с опытам. Есть люди, которые хоть и не разбираются, но читают мануалы ВНИМАТЕЛЬНО, а не сношают мозг о необходимости выучить программирование тому, кому оно ни...куда не впилось. Не твоё дело, КАК я написал код. Иди RTFM.
  13. PRR. Пока таймер выключен в PRR - ноль реакции. Это значение в даташит по умолчанию, и я эту настройку не трогал. В симуляторе тоже по умолчанию 1 МГц. Ну, если сброс - это TCNT1=0, то тут трудно ошибиться (замечу, что симулятор выполняет сброс. А "живое железо", очевидно, нет - иначе решение с промежуточной переменной не потребовалось бы). До отключения таймера в PRR, по вашему совету, сдвинул. Таймер, считающий во время простоя, мне не нужен от слова совсем. В любом случае, таймер работает, отсчитывает нужные интервалы, решения найдены, большего не требуется. Вот тут простое любопытство: почему? (пожалуйста, не слишком углублённо, то, что я не специалист, и не намереваюсь им становиться даже близко, по-моему, все уже поняли... надеюсь)
  14. Если кому-то ещё интересно, что происходит с таймером, а не обсуждение моей личности (и я всё ещё сдерживаюсь, но это уже последние остатки, да...) Первое: большие профессионалы не обратили моего внимания на выбор предделителя ДО запуска таймера, надо было ПОСЛЕ - это раз. Второе: большие профессионалы, видимо, тоже не в курсе, как настроить таймер на 1Mhz/1024, потому что он, судя по всему, переполняется секунд за 7 вместо ~минуты. В противном случае мне сразу бы об этом сказали. Третье: большие профессионалы так и не подсказали, как правильно сбрасывать счётчик, поскольку он НЕ сбрасывается. Ни до, ни после, ни перед. Вообще не сбрасывается. Начинает отсчёт оттуда, где был. Поскольку в норме мне достаточно для функционирования 10-12 секунд непрерывного счёта, добавил переменную, которая записывает TCNT1 перед переполнением и с этого момента приплюсовывается к текущему значению timer, перед последующим переполнением (на всякий случай, хотя такого не должно быть) предусмотрена остановка алгоритма.