Atmega8. Работа от генератора на 12 МГц
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: Atmega8. Работа от генератора на 12 МГц
Да, прикол в том, что эти ребята уже сдали одну подобную тему без кварца. И она у них прокатила (видимо, в России большие проблемы с военными экспертами). Я сам недавно работаю, но от всего увиденного глаза на лоб лезут... Техника, которая работает в диапазоне температур почти от -100 до 100 градусов цельсия не имеет никакой стабилизации по температуре и задействует внутренний RC. А цена каждой единицы продукции больше полумиллиона.. 
- Реклама
Re: Atmega8. Работа от генератора на 12 МГц
Проблему запуска МК решил кардинальным образом - окусил ножки и впаял новый МК (точнее кроватку под него, ибо не хочу больше откусывать ноги
). Сейчас все нормально, программатор видит его.
По поводу ухода частоты сказать не могу, не измерял, но могу сказать, что все работает при комнатной температуре, но достаточно его вынести на балкон, как команды перестают доходить (на приеме - GSM модуль, у него светодиод моргает, когда он переваривает команду). 1-2 пройдут и все, приехали.
Значит сейчас стоят кондеры по 15 пФ, и кварц на 12 МГц. Фьзы сейчас такие (см. приложение)
По поводу ухода частоты сказать не могу, не измерял, но могу сказать, что все работает при комнатной температуре, но достаточно его вынести на балкон, как команды перестают доходить (на приеме - GSM модуль, у него светодиод моргает, когда он переваривает команду). 1-2 пройдут и все, приехали.
Значит сейчас стоят кондеры по 15 пФ, и кварц на 12 МГц. Фьзы сейчас такие (см. приложение)
- Вложения
-
- fuse.jpg
- (138.17 КБ) 269 скачиваний
Re: Atmega8. Работа от генератора на 12 МГц
Ну, это зря. Лучше бы проблему решить. Потом этот опыт пригодится.kushman писал(а):Проблему запуска МК решил кардинальным образом - окусил ножки и впаял новый МК (точнее кроватку под него, ибо не хочу больше откусывать ноги). Сейчас все нормально, программатор видит его.
Не спросил, корпус какой - DIP или TQFP.
А вот, что меня интересует - какая скорость обмена по UART?
Re: Atmega8. Работа от генератора на 12 МГц
Корпус - DIP. Скорость обмена 28800.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Atmega8. Работа от генератора на 12 МГц
ИС-пытатель писал(а):Насколько уходит частота внутреннего генератора контроллера при изменении температуры на 1 градус и на 10 градусов?
Спойлер
Вы там это... Опухли что ли? Военку так проектировать, диверсанты блинИС-пытатель писал(а):Хотя тема военная и копеечный кварц заметно улучшил бы ее характеристики.
- Вложения
-
- IntRC_Gen.png
- (87.92 КБ) 642 скачивания
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
- Реклама
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: Atmega8. Работа от генератора на 12 МГц
Да графики-то я видел.. Я думал, мож кто на реальном устройстве запаривался, проверял... (ПРоизводители склонны завышать характеристики)
Кстати, в даташитах рисуют обычно обратные зависимости. Чем выше темпа - тем ниже частота..
Кстати, в даташитах рисуют обычно обратные зависимости. Чем выше темпа - тем ниже частота..
-
Alkul
- Держит паяльник хвостом
- Сообщения: 933
- Зарегистрирован: Ср апр 13, 2011 11:09:20
- Откуда: Екатеринбург
Re: Atmega8. Работа от генератора на 12 МГц
Я гонял свои устройства в термокамере при температуре от -40 до +60. Ежесекундно по UART устройствам посылался запрос данных и устройства в ответ посылали эти данные. Частота контроллера - 20МГц, скорость порта - 19200. Не было ни единого сбоя в обмене.ИС-пытатель писал(а):Я думал, мож кто на реальном устройстве запаривался, проверял...
Re: Atmega8. Работа от генератора на 12 МГц
Про корпус спросил, чтобы посоветовать, как лучше демонтировать.kushman писал(а):Корпус - DIP. Скорость обмена 28800.
DIP можно было плетенкой припой очистить, а TQFP - или феном или тоненькую (не лудящуюся) проволочку под выводы и паяльником поочерёдно отпаять.
Для скорости обмена 28800 нормально конфигурируется. Ошибка всего 0.16%, а допускается до 2% (страница 147 в даташите для ATmega8).
Значит ошибка в другом. Может быть в разрядности данных.
Вот, для примера ссылочки по RS-232:
http://www.gaw.ru/html.cgi/txt/interface/index.htm
http://www.gaw.ru/html.cgi/txt/interfac ... /index.htm
http://www.softelectro.ru/rs232.html
Главное - не делать резких движений. Проверить регистры установки скорости. Ошибка может быть самой неожиданной.
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: Atmega8. Работа от генератора на 12 МГц
Ну, вообще, судя по графикам в даташитах, уход частоты не большой - сотые доли процента/ на градус. Если изначально настроить частоту UART максимально точно - то ошибок быть не должно. Тогда вопрос к ТС. Скорее всего, тот настроил частоту близко к границе возникновения ошибки. и при незначительном изменении температуры частота выходит за предел допустимого. Либо микросхема GSM не соответствует описанию. И ее скорость отличается от ДШ.
Re: Atmega8. Работа от генератора на 12 МГц
У Вас установлен кварц на 20 МГц, а вопрос был по внутреннему RC-генератору.Alkul писал(а):Я гонял свои устройства в термокамере при температуре от -40 до +60. Ежесекундно по UART устройствам посылался запрос данных и устройства в ответ посылали эти данные. Частота контроллера - 20МГц, скорость порта - 19200. Не было ни единого сбоя в обмене.ИС-пытатель писал(а):Я думал, мож кто на реальном устройстве запаривался, проверял...
Re: Atmega8. Работа от генератора на 12 МГц
Извиняюсь за дезинформацию, скорость обмена стоит 57600, ибо используется еще режим удвоения скорости.
Сейчас столкнулся со следующей проблемой: настроил фьюзы на работу от внутреннего источника на 8 МГц (CKSEL3...0 = 0010), однако по факту передача ведется успешно на 14400 (т.е. в 4 раза медленнее, проверял терминальной программой), а вот задержки программные больше в 4 раза.
Видимо тактовая частота также изменена на 4, в чем может быть дело, я честно говоря совсем запутался.
Сейчас столкнулся со следующей проблемой: настроил фьюзы на работу от внутреннего источника на 8 МГц (CKSEL3...0 = 0010), однако по факту передача ведется успешно на 14400 (т.е. в 4 раза медленнее, проверял терминальной программой), а вот задержки программные больше в 4 раза.
Видимо тактовая частота также изменена на 4, в чем может быть дело, я честно говоря совсем запутался.
Re: Atmega8. Работа от генератора на 12 МГц
Все прикидки надо вести от скорости обмена, а не подбором флагов.kushman писал(а):Извиняюсь за дезинформацию, скорость обмена стоит 57600, ибо используется еще режим удвоения скорости.
Сейчас столкнулся со следующей проблемой: настроил фьюзы на работу от внутреннего источника на 8 МГц (CKSEL3...0 = 0010), однако по факту передача ведется успешно на 14400 (т.е. в 4 раза медленнее, проверял терминальной программой), а вот задержки программные больше в 4 раза.
Видимо тактовая частота также изменена на 4, в чем может быть дело, я честно говоря совсем запутался.
Перевести на тактирование от кварца и искать ошибку. У Вас же действия другие - то переключаем на RC, то на кварц, с тайным пожеланием того, что ATmeg'е станет стыдно и она заработает.
Смысла в установке удвоенной скорости нет. Ошибка в установке скорости, что там, что там - одна и та же 0.16%.
Поставить тактирование от кварца и искать ошибку в программе. Посмотреть осциллографом, что выдает МК. Читать литературу. Только так можно найти ошибку. Всяческие шарахания ни к чему хорошему не приведут. Даже, если и заработает, Вы не поймёте почему.
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: Atmega8. Работа от генератора на 12 МГц
Двойная скорость ухудшает работу схемы фильтрации помех в UART. + сужает возможный диапазон ошибки погрешности частоты при условии нормальной работы.
Re: Atmega8. Работа от генератора на 12 МГц
А если невидимо?Видимо
Дрыгаем ногой, смотрим осциллографом.
Нет осциллографа, берём логический анализатор.
Нет вообще ничего - включаем секундомер на телефоне... нет телефона - ртом произносим "раз секунда, два секунда"....
Если инжанер или как его там, разработчик на AVR, не хочет соображать и быть хитрым самостоятельно, тогда ему лучше пойти в солдаты например. Соображать за солдата специальный командир назначен и уполномочен. А вместо хитрости у солдата - исполнительность плюс Устав наизусть. У хорошего солдата.
В зале подсказывают, что конкретно вот у этого сабжа CKDIV8 нет.
Зато предлагают нарисовать карандашом на бумажке: 0b01010101, 0b00010001, 0b00000001... почему-то предлагают рисовать именно такие байты.
И ещё предлагают задуматься на тему: программа с десятью ошибками может случайно сработать правильно... в какой-то ситуации... а потом одну ошибку исправляем - а с оставшимися девятью ошибками программа не работает уже совсем. Но потом меняется ситуация, и опа: опять всё правильно!
Убирай всё лишнее.
Не уверены в клоке - главный и единственный цикл "светодиод, миллион нопов, повторить".
В клоке уверены - приступаем к проверке трансмита, добавляем в цикл передачу 0xAA...
(вот и кто-то из предыдущих ораторов другими словами выразился)
Re: Atmega8. Работа от генератора на 12 МГц
Ну вот, заработал он от внещнего кварца на 12 МГц, CKSEL3...0=1110, CKOPT=0. Но один фиг, скорость UART в 12 раз ниже, задержки по времени в 12 раз больше. Совсем ничего не могу понять, от чего так происходит?
Советы учел, двойную скорость использовать не буду
Советы учел, двойную скорость использовать не буду
Re: Atmega8. Работа от генератора на 12 МГц
1 МГц интернал резисторно-конденсаторный осциллятор.
Применительно к тому, что в данном контексте называется словом "fuses", цифры 0/1 сами по себе не имеют смысла - надо уточнять, какое состояние ячейки в кристалле обозначается нулём и какое единицей.
А это каждый обозначает как он хочет.
Надёжный способ понять, что в конкретной ситуации значит 0 и что соответственно 1 - считать заведомо не бывший в употреблении кристалл, сравнить прочитанное с документацией.
Применительно к тому, что в данном контексте называется словом "fuses", цифры 0/1 сами по себе не имеют смысла - надо уточнять, какое состояние ячейки в кристалле обозначается нулём и какое единицей.
А это каждый обозначает как он хочет.
Надёжный способ понять, что в конкретной ситуации значит 0 и что соответственно 1 - считать заведомо не бывший в употреблении кристалл, сравнить прочитанное с документацией.
Re: Atmega8. Работа от генератора на 12 МГц
Регистры конфигурации неправильно установлены. Чего тут гадать?kushman писал(а):Ну вот, заработал он от внещнего кварца на 12 МГц, CKSEL3...0=1110, CKOPT=0. Но один фиг, скорость UART в 12 раз ниже, задержки по времени в 12 раз больше. Совсем ничего не могу понять, от чего так происходит?![]()
Скачиваем книжки по AVR и читаем. Даташиты читаем, благо там всё подробно расписано. Метод "научного тыка" требует очень больших затрат времени, сравнимых со строительством пирамид.
Re: Atmega8. Работа от генератора на 12 МГц
В CodeVisionAVR установленная галочка значит установленный бит, т.е. равный 0. Например, CKOPT является установленным.
Я понимаю, что дело в регистрах, но делителя частоты у Atmega8 нету, а регистр OSCCAL используется только для внутреннего генератора. Вот сейчас опять просмотрел даташит, и хоть убейте, не вижу регистров, которые еще могут повлиять на тактовую частоту
Я понимаю, что дело в регистрах, но делителя частоты у Atmega8 нету, а регистр OSCCAL используется только для внутреннего генератора. Вот сейчас опять просмотрел даташит, и хоть убейте, не вижу регистров, которые еще могут повлиять на тактовую частоту
Re: Atmega8. Работа от генератора на 12 МГц
Этой гадостью (CodeVisionAVR) не пользуюсь.kushman писал(а):В CodeVisionAVR установленная галочка значит установленный бит, т.е. равный 0. Например, CKOPT является установленным.
Я понимаю, что дело в регистрах, но делителя частоты у Atmega8 нету, а регистр OSCCAL используется только для внутреннего генератора. Вот сейчас опять просмотрел даташит, и хоть убейте, не вижу регистров, которые еще могут повлиять на тактовую частоту
Имел ввиду регистры конфигурации USART.
Re: Atmega8. Работа от генератора на 12 МГц
UART у меня конфигурируется следующим образом (код из даташита):
Все фьюзы выставлены на работу от внешнего кварца на 12 МГц. Второе сообщение приходит не через 1 сек., как заложено в программе, а через 12. А скорость передачи по факту 2400, хотя настраивается в программе на 28800, т.е. в 12 раз ниже.
Может ли быть такое, что контроллер на самом деле не настроился на работу от внешнего кварца, а молотит от внутреннего? Хотя фьюзы установленны на внешний.
Код: Выделить всё
#define FOSC 12000000 // Clock Speed
#define BAUD 28800
#define MYUBRR (FOSC/(16*BAUD))-1
void UART_Init(unsigned int UBRR)
{
UBRRH=(unsigned char)(UBRR>>8);
UBRRL=(unsigned char)(UBRR);
UCSRB=(1<<RXEN)|(1<<TXEN);
UCSRC=0x86;
UCSRA=0x00;
}
void main(void) {
UART_Init(MYUBRR);
printf("\r\nUART_test 1\r\n");
delay_ms(1000);
printf("UART_test 2\n\r");
}
} Может ли быть такое, что контроллер на самом деле не настроился на работу от внешнего кварца, а молотит от внутреннего? Хотя фьюзы установленны на внешний.


