|
|
  |
ATMega8535 + внешний кварц на 16 MHz, Глюки. М.б. неправильно спаял? |
|
|
|
Jan 27 2006, 08:51
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Есть устройство. IDE HDD подключает к COM-порту. Просьба не смеяться, так надо! Изначально МК ATmega8535 работал на внутреннем генераторе 4 MHz - все было идеально. Затем понадобилось перевести его на 16 MHz (чтобы поднять частоту USART). Припаял кварц, кондеры по 27pF, подкорректировал микрокод, перепрошил, изменил fuse-bits. Получил нестабильную работу. МК заводится, HDD реагирует нормально (вывод - прием от ПК нормальный), но "входящий трафик" (MK->PC) портится - теряет байты, искажает, но не все. Вернул на внутренний 4 MHz - все нормализовалось. Скорость UART'а пока не менял - 19200.
Схема спаяна монтажными проводками - проволочка из обмотки трансформатора. Единственное, что на мой взгляд вызывает сомнения - кварц припаян к МК проволочками длиной ~3 см. Корпус кварца незаземлен, кондеры припаяны непоср. к ногам кварца, а уже от этих точек - проволочки на МК. Так получилось исторически (неудачная компоновка деталей на плате).
В чем м.б. дело?
Сообщение отредактировал hd44780 - Jan 27 2006, 08:55
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jan 27 2006, 10:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
2 GeorgyBey Светодиодик есть. Специально для таких целей. При включении питания он несколько раз моргает с разной длительностью - на глаз вроде правильно. с периодическим включением проверю. CKOPT вообще никогда не менял (даже не помню включен он или выключен). 2 haker_fox Кондеры припаяны к печатной дорожке "земле" на расстоянии 5 мм друг от друга. Значения для UBRR брал из доки на МК для соотв. частот генератора. Здесь все правильно. Между МК и COM-портом MAX232N со стандартной конденсаторной обвязкой.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jan 27 2006, 16:55
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(hd44780 @ Jan 27 2006, 15:15)  Питание импульсное, от AT-шного БП. От него же и винт питается. На питании есть электролит 1 мкф. В принципе, могу попытаться включить МК от обычного БП. Кварца на 14.7456 пока нет. Смогу купить не раньше чем через неделю. Есть на 12. Кварц на 16 есть еще один, попробую поменять.
А как определить эти "гоночные глюки"? И 12 и 16Mhz будут "глючить". Ставьте хотя бы 11.0592Mhz или любой кратный 115200. В крайнем случае тактируйте от внешнего RC (нужен всего 1 резистор). (установите CKOPT в 0, что подключит внутренний конденсатор 36pf между XTAL1 и GND, R - цепляйте между XTAL1 и Vcc) 7.3Mhz будет при R=1.02kOm уменьшая R будет повышаться частота, т.о. можете выставить себе 11.0592Mhz если производительности на 7.3 будет недостаточно.
|
|
|
|
|
Jan 28 2006, 02:33
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(defunct @ Jan 28 2006, 00:55)  Цитата(hd44780 @ Jan 27 2006, 15:15)  Питание импульсное, от AT-шного БП. От него же и винт питается. На питании есть электролит 1 мкф. В принципе, могу попытаться включить МК от обычного БП. Кварца на 14.7456 пока нет. Смогу купить не раньше чем через неделю. Есть на 12. Кварц на 16 есть еще один, попробую поменять.
А как определить эти "гоночные глюки"?
И 12 и 16Mhz будут "глючить". Ставьте хотя бы 11.0592Mhz или любой кратный 115200. В крайнем случае тактируйте от внешнего RC (нужен всего 1 резистор). (установите CKOPT в 0, что подключит внутренний конденсатор 36pf между XTAL1 и GND, R - цепляйте между XTAL1 и Vcc) 7.3Mhz будет при R=1.02kOm уменьшая R будет повышаться частота, т.о. можете выставить себе 11.0592Mhz если производительности на 7.3 будет недостаточно. Гм... у меня 16 Мгц кварц и скорость 19200 и 4800 не глючит... хотя конечно по даташиту есть ошибка небольшая... может быть попробывать эти скорости?
--------------------
Выбор.
|
|
|
|
|
Jan 28 2006, 10:51
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(defunct @ Jan 27 2006, 19:55)  И 12 и 16Mhz будут "глючить". Ставьте хотя бы 11.0592Mhz или любой кратный 115200. В крайнем случае тактируйте от внешнего RC (нужен всего 1 резистор). (установите CKOPT в 0, что подключит внутренний конденсатор 36pf между XTAL1 и GND, R - цепляйте между XTAL1 и Vcc) 7.3Mhz будет при R=1.02kOm уменьшая R будет повышаться частота, т.о. можете выставить себе 11.0592Mhz если производительности на 7.3 будет недостаточно. Позвольте с вами не согласиться. Согласно стандарта RS232 отклонение в программировании делителя может достигать +/- 10 % (можно легко найти стандарт и прочесть). В данном же случае имеем для 16 МГц и 19200 отклонение всего +0.2 % (согласно даташиту) и это очень хорошая точность. Реально работал по последовательному порту при отклонении 3 % и все было хорошо, при длине передаваемых блоков до 4 кБайт на скорости 57600. Я думаю проблема может быть или в кварце (16 мегагерцовые иногда встречал очень низкого качества), или в программной реализации - возможно буфер передачи-приема портиться или из него не успевают прочесть.
|
|
|
|
|
Jan 28 2006, 20:22
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(ksv198 @ Jan 28 2006, 12:51)  Позвольте с вами не согласиться. Согласно стандарта RS232 отклонение в программировании делителя может достигать +/- 10 % (можно легко найти стандарт и прочесть). В данном же случае имеем для 16 МГц и 19200 отклонение всего +0.2 % (согласно даташиту) и это очень хорошая точность. Принимается, мне надо было написать "могут глючить", вместо "будут глючить". Хорошая точность это 0.0%, и кварцев способных обеспечить данную точность пруд пруди. Насчет 10% Вы вероятно погорячились, или это для 5-ти битовой посылки с двумя стопами?. 0.2% - допустимое отклонение, но здесь имеет место два отступления. 1. Схема собрана на монтаже, кварц припаян проводками, как следствие - частота неминуемо поплывет. 2. Кто говорит о 19200, что это за скорость такая? смешно ведь HDD на 19200 считывать.. Цитата Реально работал по последовательному порту при отклонении 3 % и все было хорошо, при длине передаваемых блоков до 4 кБайт на скорости 57600. Я думаю проблема может быть или в кварце (16 мегагерцовые иногда встречал очень низкого качества), или в программной реализации - возможно буфер передачи-приема портиться или из него не успевают прочесть. Имею совершенно противоположный опыт, с блоками длиной всего 128 байт, кварц 16Mhz, UART на скорости 115200... UART сбоит, почти каждый 2-й блок - ошибка CRC, а ведь согласно даташитам от Atmel на ATmegaXX для 115200 на 16Mhz ошибка составляет -3.5% (U2X=0) и соответственно +2.1% (U2X=1). И если верить Вашим словам, то должно быть все ок. PS: просьба, когда советуете людям работать с тем чем не положено (т.е. заведомо, еще при разработке, закладывать в устройство ошибки, отклонения от стандарта и пр.), приводить ссылки на соотв. стандарты, а лучше всего описание от производителей устройств с которым предполагается работа, где четко сказано, что гарантируется нормальная работа устройства/интерфейса с теми или иными отклонениями в рамках стандарта..
|
|
|
|
|
Jan 30 2006, 07:50
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(defunct @ Jan 28 2006, 23:22)  Хорошая точность это 0.0%, и кварцев способных обеспечить данную точность пруд пруди. Насчет 10% Вы вероятно погорячились, или это для 5-ти битовой посылки с двумя стопами?. 0.2% - допустимое отклонение, но здесь имеет место два отступления. 1. Схема собрана на монтаже, кварц припаян проводками, как следствие - частота неминуемо поплывет. 2. Кто говорит о 19200, что это за скорость такая? смешно ведь HDD на 19200 считывать.. Хорошая точность 0% это мечта  , даже для специально подобранных кварцев. Насчет 10 % это не я придумал. Так было в стандарте RS232. На данный момент , каюсь информация устарела, сейчас там прописано следующее: --------------------------------------------- 3 - For Data and Timing signals, the transit time through the transition region should be a - less than 1ms for bit periods greater than 25ms, b - 4% of the bit period for bit periods between 25ms and 125µs,
c - less than 5µs for bit periods less than 125µs. The rise and fall times of data and timing signals ideally should be equal, but in any case vary by no more than a factor of three. --------------------------------------------- Вот ссылка: RS232 StandartО скорости 19200 говорит сам автор, в самом начале треда. Кстати скорость совсем не смешная, если надо немного служебной информации прочесть, вполне достаточно. Цитата(defunct @ Jan 28 2006, 23:22)  Имею совершенно противоположный опыт, с блоками длиной всего 128 байт, кварц 16Mhz, UART на скорости 115200... UART сбоит, почти каждый 2-й блок - ошибка CRC, а ведь согласно даташитам от Atmel на ATmegaXX для 115200 на 16Mhz ошибка составляет -3.5% (U2X=0) и соответственно +2.1% (U2X=1). И если верить Вашим словам, то должно быть все ок. Если только передавать на комп (контроллер передает, комп принимает) - должно А по приему Атмел не рекомендует отклонение больше 2%. На скорости 115200 проблемы могут быть (и бывают) не только в установки частоты синхронизации, и не только на стороне МК. При использовании 3-х проводной схемы соединения с компом (Rx, Tx, GND) и длине проводов ~50 см уже начинаются проблемы с помехами. Стоит сделать кабель 7-ми проводным и анализировать все сигналы модема, как тут же все становится на места. Однако спорить не буду. По теме - я хотел всего лишь сказать, что при указанном кварце и скорости - должно все чудесно работать. Если не работает - дело скорее всего не в точности установки частот. P.S. Если кого обидел - прошу не судить строго и заранее извиняюсь
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|