Atmega8. Работа от генератора на 12 МГц

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение ИС-пытатель »

Да, прикол в том, что эти ребята уже сдали одну подобную тему без кварца. И она у них прокатила (видимо, в России большие проблемы с военными экспертами). Я сам недавно работаю, но от всего увиденного глаза на лоб лезут... Техника, которая работает в диапазоне температур почти от -100 до 100 градусов цельсия не имеет никакой стабилизации по температуре и задействует внутренний RC. А цена каждой единицы продукции больше полумиллиона.. :o
Реклама
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

Проблему запуска МК решил кардинальным образом - окусил ножки и впаял новый МК (точнее кроватку под него, ибо не хочу больше откусывать ноги :) ). Сейчас все нормально, программатор видит его.

По поводу ухода частоты сказать не могу, не измерял, но могу сказать, что все работает при комнатной температуре, но достаточно его вынести на балкон, как команды перестают доходить (на приеме - GSM модуль, у него светодиод моргает, когда он переваривает команду). 1-2 пройдут и все, приехали.

Значит сейчас стоят кондеры по 15 пФ, и кварц на 12 МГц. Фьзы сейчас такие (см. приложение)
Вложения
fuse.jpg
(138.17 КБ) 269 скачиваний
Реклама
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

kushman писал(а):Проблему запуска МК решил кардинальным образом - окусил ножки и впаял новый МК (точнее кроватку под него, ибо не хочу больше откусывать ноги :) ). Сейчас все нормально, программатор видит его.
Ну, это зря. Лучше бы проблему решить. Потом этот опыт пригодится.
Не спросил, корпус какой - DIP или TQFP.

А вот, что меня интересует - какая скорость обмена по UART?
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

Корпус - DIP. Скорость обмена 28800.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Engineer_Keen »

ИС-пытатель писал(а):Насколько уходит частота внутреннего генератора контроллера при изменении температуры на 1 градус и на 10 градусов?
СпойлерИзображение
ИС-пытатель писал(а):Хотя тема военная и копеечный кварц заметно улучшил бы ее характеристики.
Вы там это... Опухли что ли? Военку так проектировать, диверсанты блин :kill: :facepalm:
Вложения
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 МГц

Сообщение Alkul »

ИС-пытатель писал(а):Я думал, мож кто на реальном устройстве запаривался, проверял...
Я гонял свои устройства в термокамере при температуре от -40 до +60. Ежесекундно по UART устройствам посылался запрос данных и устройства в ответ посылали эти данные. Частота контроллера - 20МГц, скорость порта - 19200. Не было ни единого сбоя в обмене.
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

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 не соответствует описанию. И ее скорость отличается от ДШ.
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

Alkul писал(а):
ИС-пытатель писал(а):Я думал, мож кто на реальном устройстве запаривался, проверял...
Я гонял свои устройства в термокамере при температуре от -40 до +60. Ежесекундно по UART устройствам посылался запрос данных и устройства в ответ посылали эти данные. Частота контроллера - 20МГц, скорость порта - 19200. Не было ни единого сбоя в обмене.
У Вас установлен кварц на 20 МГц, а вопрос был по внутреннему RC-генератору.
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

Извиняюсь за дезинформацию, скорость обмена стоит 57600, ибо используется еще режим удвоения скорости.

Сейчас столкнулся со следующей проблемой: настроил фьюзы на работу от внутреннего источника на 8 МГц (CKSEL3...0 = 0010), однако по факту передача ведется успешно на 14400 (т.е. в 4 раза медленнее, проверял терминальной программой), а вот задержки программные больше в 4 раза.
Видимо тактовая частота также изменена на 4, в чем может быть дело, я честно говоря совсем запутался.
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

kushman писал(а):Извиняюсь за дезинформацию, скорость обмена стоит 57600, ибо используется еще режим удвоения скорости.

Сейчас столкнулся со следующей проблемой: настроил фьюзы на работу от внутреннего источника на 8 МГц (CKSEL3...0 = 0010), однако по факту передача ведется успешно на 14400 (т.е. в 4 раза медленнее, проверял терминальной программой), а вот задержки программные больше в 4 раза.
Видимо тактовая частота также изменена на 4, в чем может быть дело, я честно говоря совсем запутался.
Все прикидки надо вести от скорости обмена, а не подбором флагов.
Перевести на тактирование от кварца и искать ошибку. У Вас же действия другие - то переключаем на RC, то на кварц, с тайным пожеланием того, что ATmeg'е станет стыдно и она заработает.
Смысла в установке удвоенной скорости нет. Ошибка в установке скорости, что там, что там - одна и та же 0.16%.

Поставить тактирование от кварца и искать ошибку в программе. Посмотреть осциллографом, что выдает МК. Читать литературу. Только так можно найти ошибку. Всяческие шарахания ни к чему хорошему не приведут. Даже, если и заработает, Вы не поймёте почему.
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение ИС-пытатель »

Двойная скорость ухудшает работу схемы фильтрации помех в UART. + сужает возможный диапазон ошибки погрешности частоты при условии нормальной работы.
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение nirq »

Видимо
А если невидимо?
Дрыгаем ногой, смотрим осциллографом.
Нет осциллографа, берём логический анализатор.
Нет вообще ничего - включаем секундомер на телефоне... нет телефона - ртом произносим "раз секунда, два секунда"....

Если инжанер или как его там, разработчик на AVR, не хочет соображать и быть хитрым самостоятельно, тогда ему лучше пойти в солдаты например. Соображать за солдата специальный командир назначен и уполномочен. А вместо хитрости у солдата - исполнительность плюс Устав наизусть. У хорошего солдата.



В зале подсказывают, что конкретно вот у этого сабжа CKDIV8 нет.
Зато предлагают нарисовать карандашом на бумажке: 0b01010101, 0b00010001, 0b00000001... почему-то предлагают рисовать именно такие байты.

И ещё предлагают задуматься на тему: программа с десятью ошибками может случайно сработать правильно... в какой-то ситуации... а потом одну ошибку исправляем - а с оставшимися девятью ошибками программа не работает уже совсем. Но потом меняется ситуация, и опа: опять всё правильно!
Убирай всё лишнее.

Не уверены в клоке - главный и единственный цикл "светодиод, миллион нопов, повторить".
В клоке уверены - приступаем к проверке трансмита, добавляем в цикл передачу 0xAA...

(вот и кто-то из предыдущих ораторов другими словами выразился)
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

Ну вот, заработал он от внещнего кварца на 12 МГц, CKSEL3...0=1110, CKOPT=0. Но один фиг, скорость UART в 12 раз ниже, задержки по времени в 12 раз больше. Совсем ничего не могу понять, от чего так происходит? :(

Советы учел, двойную скорость использовать не буду :)
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение nirq »

1 МГц интернал резисторно-конденсаторный осциллятор.

Применительно к тому, что в данном контексте называется словом "fuses", цифры 0/1 сами по себе не имеют смысла - надо уточнять, какое состояние ячейки в кристалле обозначается нулём и какое единицей.
А это каждый обозначает как он хочет.

Надёжный способ понять, что в конкретной ситуации значит 0 и что соответственно 1 - считать заведомо не бывший в употреблении кристалл, сравнить прочитанное с документацией.
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

kushman писал(а):Ну вот, заработал он от внещнего кварца на 12 МГц, CKSEL3...0=1110, CKOPT=0. Но один фиг, скорость UART в 12 раз ниже, задержки по времени в 12 раз больше. Совсем ничего не могу понять, от чего так происходит? :(
Регистры конфигурации неправильно установлены. Чего тут гадать?

Скачиваем книжки по AVR и читаем. Даташиты читаем, благо там всё подробно расписано. Метод "научного тыка" требует очень больших затрат времени, сравнимых со строительством пирамид.
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

В CodeVisionAVR установленная галочка значит установленный бит, т.е. равный 0. Например, CKOPT является установленным.

Я понимаю, что дело в регистрах, но делителя частоты у Atmega8 нету, а регистр OSCCAL используется только для внутреннего генератора. Вот сейчас опять просмотрел даташит, и хоть убейте, не вижу регистров, которые еще могут повлиять на тактовую частоту :dont_know:
Tiller
Опытный кот
Сообщения: 801
Зарегистрирован: Ср июл 03, 2013 23:13:43
Откуда: Россия

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение Tiller »

kushman писал(а):В CodeVisionAVR установленная галочка значит установленный бит, т.е. равный 0. Например, CKOPT является установленным.

Я понимаю, что дело в регистрах, но делителя частоты у Atmega8 нету, а регистр OSCCAL используется только для внутреннего генератора. Вот сейчас опять просмотрел даташит, и хоть убейте, не вижу регистров, которые еще могут повлиять на тактовую частоту :dont_know:
Этой гадостью (CodeVisionAVR) не пользуюсь.
Имел ввиду регистры конфигурации USART.
kushman
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Re: Atmega8. Работа от генератора на 12 МГц

Сообщение kushman »

UART у меня конфигурируется следующим образом (код из даташита):

Код: Выделить всё

#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"); 
    }         
      
} 
Все фьюзы выставлены на работу от внешнего кварца на 12 МГц. Второе сообщение приходит не через 1 сек., как заложено в программе, а через 12. А скорость передачи по факту 2400, хотя настраивается в программе на 28800, т.е. в 12 раз ниже.
Может ли быть такое, что контроллер на самом деле не настроился на работу от внешнего кварца, а молотит от внутреннего? Хотя фьюзы установленны на внешний.
Ответить

Вернуться в «AVR»