Программирование микроконтроллеров
Программирование микроконтроллеров
Добрый вечер.Кто нибудь сталкивался с такой непонятной бедой.
Программа одна и та же,камень один и тоже,а задержки по времени работают по разному от микросхемы до микросхемы.Может что то чего то подскажет как это победить?
Программа одна и та же,камень один и тоже,а задержки по времени работают по разному от микросхемы до микросхемы.Может что то чего то подскажет как это победить?
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Программирование микроконтроллеров
Если это просто камни (не ардуино), то возможно фьюзы разные. Причем на одинаковых кварцах. Особенно если делитель на 8 включен.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Программирование микроконтроллеров
Сейчас я поточнее опишу.
Камень attiny13
Фьюзы проверяю перед программированием (это первое куда я сунулся,я тоже на них грешил)
Программа на ассемблере
Задержка написанная не с помощью таймеров (может в этом и беда) а просто перебором цифр на уменьшение.
Наказание какое то.
Это просто таймер ,он 10 секунд работает,2 минуты пауза (подача топлива на форсунку)
Запрограммировал и тут же проверяю,и начинаю корректировать,бывает до 3 ,4 секунд разлет,ну зла уже не хватает честное слово(((
Камень attiny13
Фьюзы проверяю перед программированием (это первое куда я сунулся,я тоже на них грешил)
Программа на ассемблере
Задержка написанная не с помощью таймеров (может в этом и беда) а просто перебором цифр на уменьшение.
Наказание какое то.
Это просто таймер ,он 10 секунд работает,2 минуты пауза (подача топлива на форсунку)
Запрограммировал и тут же проверяю,и начинаю корректировать,бывает до 3 ,4 секунд разлет,ну зла уже не хватает честное слово(((
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Программирование микроконтроллеров
Ты не одинок...) Причины разные. И если от внутреннего, то там разброс вроде +/-10% допустим.
http://arduino.ru/forum/apparatnye-vopr ... generatora
https://electronix.ru/forum/index.php?a ... 123&page=2
http://arduino.ru/forum/apparatnye-vopr ... generatora
https://electronix.ru/forum/index.php?a ... 123&page=2
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Программирование микроконтроллеров
Так в том то и дело что к 13 не прилепишь кварц,не предназначен он для кварца.Ей Боже психану и перепру на 85,может полегчает с кварцем то.
Отправлено спустя 31 секунду:
Только и цена с играет тоже,ну да и ладно
Отправлено спустя 6 минут 2 секунды:
А может мы действительно уж сильно верим в непогрешимую точность микроконтроллеров
Отправлено спустя 31 секунду:
Только и цена с играет тоже,ну да и ладно
Отправлено спустя 6 минут 2 секунды:
А может мы действительно уж сильно верим в непогрешимую точность микроконтроллеров
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Программирование микроконтроллеров
[ref]pasha71[/ref], там есть калибровочные байты. Есть методы как их вычислять.
Потом их надо зашивать в код программы, индивидуально к каждому экземпляру
контроллера. Они не запоминаются при перезагрузках.
Потом их надо зашивать в код программы, индивидуально к каждому экземпляру
контроллера. Они не запоминаются при перезагрузках.
С уважением,
Евгений Бобков
Евгений Бобков
Программирование микроконтроллеров
В калибровочные ячейки заносятся константы при изготовлении микроконтроллера, и загрузка этой константы происходит при сбросе,ну фактически при запуске.При том у меня она одна (ячейка) так что с ними не поиграешься
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Программирование микроконтроллеров
Нет. Вы говорите про заводские настройки. А я говорю про байты, доступные пользователю. Они находятся в области памяти 'calibration'.
С уважением,
Евгений Бобков
Евгений Бобков
Программирование микроконтроллеров
и пред делитель главной частоты я в самом начале обнуляю,что бы не мешал.Именно программно обнуляю
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Программирование микроконтроллеров
Я только не помню в 13-й байтов один или два.
Отправлено спустя 3 минуты 7 секунд:
Вот, заглянул в описалово:
[spoiler]17.3
Calibration Bytes
The signature area of the ATtiny13 contains two bytes of calibration data for the internal oscilla-
tor. The calibration data in the high byte of address 0x00 is for use with the oscillator set to 9.6
MHz operation. During reset, this byte is automatically written into the OSCCAL register to
ensure correct frequency of the oscillator.
There is a separate calibration byte for the internal oscillator in 4.8 MHz mode of operation but
this data is not loaded automatically. The hardware always loads the 9.6 MHz calibraiton data
during reset. To use separate calibration data for the oscillator in 4.8 MHz mode the OSCCAL
register must be updated by firmware. The calibration data for 4.8 MHz operation is located in
the high byte at address 0x01 of the signature area.
[/spoiler]
Смотрите второй абзац.
Отправлено спустя 3 минуты 7 секунд:
Вот, заглянул в описалово:
[spoiler]17.3
Calibration Bytes
The signature area of the ATtiny13 contains two bytes of calibration data for the internal oscilla-
tor. The calibration data in the high byte of address 0x00 is for use with the oscillator set to 9.6
MHz operation. During reset, this byte is automatically written into the OSCCAL register to
ensure correct frequency of the oscillator.
There is a separate calibration byte for the internal oscillator in 4.8 MHz mode of operation but
this data is not loaded automatically. The hardware always loads the 9.6 MHz calibraiton data
during reset. To use separate calibration data for the oscillator in 4.8 MHz mode the OSCCAL
register must be updated by firmware. The calibration data for 4.8 MHz operation is located in
the high byte at address 0x01 of the signature area.
[/spoiler]
Смотрите второй абзац.
С уважением,
Евгений Бобков
Евгений Бобков
Программирование микроконтроллеров
Значит нужно даташит прошерстить,у меня справочник Ефстифеева,но там об калибровочных ячейках только то что я написал.Значит где то туплю
Отправлено спустя 2 минуты 30 секунд:
Точно ,что то есть,два байта,9,8 и 4,8 Вы об этом?
Отправлено спустя 31 секунду:
Это я так понимаю фьюзами а не програмно
Отправлено спустя 2 минуты 30 секунд:
Точно ,что то есть,два байта,9,8 и 4,8 Вы об этом?
Отправлено спустя 31 секунду:
Это я так понимаю фьюзами а не програмно
Программирование микроконтроллеров
Был очень большой разброс, глюк c attiny45 вылечил TL866. Возможно после высоковольтного сброса.
Выяснилось не все фьюзы видно местами
TL866 видит калибровочные тоже.
Где-то читал как то калибруется. Не помню где...
Выяснилось не все фьюзы видно местами

Где-то читал как то калибруется. Не помню где...
Программирование микроконтроллеров
А может действительно тут и нужно копать,завтра попробую.Спасибо))
Отправлено спустя 1 минуту 44 секунды:
[ref]benic[/ref] ну TL866 - это крутовато как то))
Отправлено спустя 1 минуту 44 секунды:
[ref]benic[/ref] ну TL866 - это крутовато как то))
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Программирование микроконтроллеров
Нет, именно программно. Это не фьюзы.
Загляните ещё в мануал по avrdude - там перечислены все области
памяти AVR-ок. Вам нужна "calibration". Её можно прочитать дудкой.
Загляните ещё в мануал по avrdude - там перечислены все области
памяти AVR-ок. Вам нужна "calibration". Её можно прочитать дудкой.
С уважением,
Евгений Бобков
Евгений Бобков
Программирование микроконтроллеров
Название фьюз иногда отличны. Возможно это не твой случай. Я высоковольтным ее сначала приголубил.
Скорей всего USBasp не было ))
Скорей всего USBasp не было ))
Последний раз редактировалось benic 11 фев 2019, 23:15, всего редактировалось 1 раз.
Программирование микроконтроллеров
[ref]eugeneb[/ref], значит будем копать программно.)
[ref]benic[/ref], да Вы знаете программа то пустяковая,а практика не помешает.Тем более хотите верьте хотите нет,но ассемблер на мой взгляд более логичный что ли,вообщем пока в том в чем я нуждаюсь мне легче на ассемблере)
[ref]benic[/ref], да Вы знаете программа то пустяковая,а практика не помешает.Тем более хотите верьте хотите нет,но ассемблер на мой взгляд более логичный что ли,вообщем пока в том в чем я нуждаюсь мне легче на ассемблере)
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Программирование микроконтроллеров
Нашёл свой старый проект. Там была важна точность генератора. И в ЗИП надо было положить второй камень. Пришлось пронумеровать камни фломастером и компилировать код индивидуально под каждый камень. Вот кусок калибровочного кода (ATMega32):
Как вычислял коэффициенты не могу вспомнить - надо поискать по сети.
Код: Выделить всё
int main(void) {
// Калибровочный коэффициент на 8 МГц
// See: $avrdude -p m32 -c dapa -U calibration:r:/dev/stdout:h
OSCCAL = 0x9d; // это который запаян первый (№1)
// OSCCAL = 0x9e; // это который запаян второй (№2)
Последний раз редактировалось eugeneb 12 фев 2019, 08:17, всего редактировалось 1 раз.
С уважением,
Евгений Бобков
Евгений Бобков
Программирование микроконтроллеров
http://www.gaw.ru/html.cgi/adv/app/micr ... AVR053.htm
AVR053: Калибровка внутреннего RC-генератора
Отправлено спустя 27 минут 4 секунды:
AVR053: Калибровка внутреннего RC-генератора
Отправлено спустя 27 минут 4 секунды:
3-4 секунды это в импульсе или в паузе?pasha71 писал(а): 11 фев 2019, 21:05
......,он 10 секунд работает,2 минуты пауза (подача топлива на форсунку)
......,бывает до 3 ,4 секунд разлет....
Программирование микроконтроллеров
[ref]benic[/ref], в паузе
Отправлено спустя 52 секунды:
[ref]eugeneb[/ref], Спасибо
Отправлено спустя 2 минуты 45 секунд:
Все получилось,всем спасибо.Убрал перебор ,и сделал все таки с помощью таймера.Так и проще и надежней.Спасибо еще раз.))
Отправлено спустя 52 секунды:
[ref]eugeneb[/ref], Спасибо
Отправлено спустя 2 минуты 45 секунд:
Все получилось,всем спасибо.Убрал перебор ,и сделал все таки с помощью таймера.Так и проще и надежней.Спасибо еще раз.))
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей