|
|
  |
AT90USB1286, виртуальный COM-порт |
|
|
|
Nov 8 2008, 08:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Xenia @ Nov 8 2008, 00:40)  Заменила кварц 16 МГц на 8 МГц и ... ничего не изменилось. Снова всё та же история - как только напряжение становится ниже 4.4 вольта - МК виснет (обычно он у меня мигает раз в секунду светодиодиком). Может быть у меня какой-нибудь не тот BODLEVEL в фузах прошит? И из-за этого МК на низком напряжении работать не хочет? Подскажите пожалуйста, какие фузы для него надо устанавливать! Только все фузы разом, а не только те, которые понимаете. У меня внешний кварцевый резонатор на 8 МГц, и надо чтобы и МК работал на той же частоте. Хотелось бы, чтобы годилось питание в 4 вольта, а лучше - как можно более низкое. смотрю даташит: Table 8-2. BODLEVEL Fuse Coding(1) Код BODLEVEL 2..0 V 111 BOD Disabled 110 2.0 V 101 2.2 V 100 2.4 V 011 2.6 V 010 3.4 V 001 3.5 V 000 4.3 V в зависимости от установленных фузов BODLEVEL контроллер будет "уходить в reset" при разных напряжениях. выберите нужное вам напряжение и соответствующим образом прошейте фузы.
|
|
|
|
|
Nov 8 2008, 10:16
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Petka @ Nov 8 2008, 11:13)  смотрю даташит: Table 8-2. BODLEVEL Fuse Coding(1) Эту табличку я видела. Мои фузы такие (лог программатора Avreal32): Код Device connected, 90USB647 detected Chip not locked Fuses OSCCAL = 91 CKDIV = 1 CKOUT = 1 SUT = 2 CKSEL = E BLB1 = 3 BLB0 = 3 OCDEN = 1 JTAGEN = 0 WDTON = 1 EESAVE = 1 BOOTSZ = 1 BOOTRST = 1 HWBE = 0 BODLEVEL = 7 Судя по BODLEVEL = 7, я пыталась отключить BOD совсем. Впрочем, не дожидаясь ответа, я перепробовала все BODLEVEL, но лучше от этого не стало. Не подбросит ли кто-нибудь еще идеи, по какой причине AT90USB647 может зависать, при уменьшении питающего напряжения ниже 4.4 вольта?
Сообщение отредактировал Xenia - Nov 8 2008, 10:17
|
|
|
|
|
Nov 8 2008, 12:38
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Petka @ Nov 8 2008, 14:24)  Как вы подключили пин UVCC? На этот вопрос я уже отвечала: Цитата(Xenia @ Nov 5 2008, 12:41)  Схема соединения примитивная - все напряжения одним пучком Vbus+Uvcc+Avcc+Dvcc (Figure 21-3). Внутренний регулятор у меня включен. Криминала тут нет, поскольку согласно Figure 21-3 даташита, такая схема подключения функционирует вплоть до 3.4 в (ниже уже требуется подключаться напрямую к Ucap). Кроме того, если бы я даже совсем обесточила UVCC, то у меня бы только перестал работать USB-канал, но процессор бы не завис. А у меня ниже 4.4 вольта перестает моргать светодиод на выводе порта, переключаемого из прерывания по таймеру T0. Т.е. у меня даже таймер останавливается! Впечатление такое, что кварц "заело".
Сообщение отредактировал Xenia - Nov 8 2008, 12:39
|
|
|
|
|
Nov 8 2008, 13:47
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Petka @ Nov 8 2008, 15:48)  1) а осцильчиком в кварц тыкнуть? 2) а если запитать схему не от USB а от регулируемого источника питания. (d+ и d- НЕ использовать). И тоже понижать напряжение. Схема тоже "остановится"? А чем питание от USB не кошерно?  Я могу запретить, а точнее - вообще не инициализировать USB-сервис, используя чип, как обычный микропроцессор, а не как USB-контроллер. Тогда от USB-порта только одно питание и останется. Если питать от внешнего источника, то происходит тоже самое - как только питание падает до 4.40-4.35 вольта - признаки жизни пропадают. А ткнуть осцильчиком в кварц - моя мечта  . К сожалению, я - программист, а не электронщик. Осциллографа у меня нет. Но надеюсь найти место, где мне удастся им воспользоваться.
Сообщение отредактировал Xenia - Nov 8 2008, 13:50
|
|
|
|
|
Nov 8 2008, 16:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Xenia @ Nov 8 2008, 16:47)  Если питать от внешнего источника, то происходит тоже самое - как только питание падает до 4.40-4.35 вольта - признаки жизни пропадают. А ткнуть осцильчиком в кварц - моя мечта  . К сожалению, я - программист, а не электронщик. Осциллографа у меня нет. Но надеюсь найти место, где мне удастся им воспользоваться. а есть возможность упротить программу например до: Код void main(void){ led_on(); delay_ms(250); led_off(); delay_ms(250); } тоже будет "стопориться" при понижении питания?
|
|
|
|
|
Nov 8 2008, 22:50
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Проблема с напряжением на USB разрешилась совершенно неожиданным образом. Оказалось, что с программированием драйвера было всё в порядке, о чем свидетельствовало значение тока, которое можно посмотреть на вкладке Power устройства USB Hub в девайс-менеджере. Проблема была ... в кабеле! Каждая жила которого имела сопротивление 2.6 ома. Итого в цепи питания (Ubus+Gnd) набиралось 2.6+2.6=5.2 ома, которые при токе 150 мА сажали на себя 5.2*0.15=0.78 вольта. В результате устройство имело для питания 5-0.78=4.22 вольта. Большего с этим кабелем получить было нельзя даже теоретически. Кабель покупала на Буденовском рынке, был в полиэтиленовый мешочек запаян. Продавался как кабель типа A-B для USB 2.0, длина 1 метр (реально оказалось 90 см). Отчего у него такое высокое сопротивление не понимаю. Еще более удивительно, что сопротивление между внешними экранами разъемов достигает 20 ом! Мне и в голову не приходило, что такой короткий кабель может иметь такое большое сопротивление. Кабель попал под подозрение тогда, когда я однажды забыла его отключить во время прошивки через LPT-порт. Еще не начав прошивку, а только лишь присоединив шлейф, я увидела, что мое устройство весело замигало лампочкой. Померив напряжение на МК, я обнаружила, что оно повысилось до 4.6 вольта, на которых устройство уже работало. Стала искать причину прибавки и сильно удивилась, не обнаружив на шлейфе никаких напряжений. Присоединяя все жилы шлейфа по очереди, удалось выследить, что напряжение возрастало в то момент, когда к устройству присоединяли ... землю! Вот тут-то уж померила напряжение между землями компьютера и устройства, которая оказалась как раз равна этой прибавке. В дальнейшем, выясняя ее происхождение, я неминуемо наткнулась на высокое сопротивление жил в соединительном кабеле. Проклиная нехорошими словами злополучный кабель, а отодрала USB-кабель от принтера, с которым тот продавался в комплекте. Тот кабель был вдвое длиннее (2 метра), большего про него узнать не удалось. Принтер же определялся операционкой, как USB 1.1 девайс. Измерив сопротивление принтерного кабеля, я с удовлетворением обнаружила, что оно составляет всего 0.2 ома на жилу, несмотря на то, что жилы в нем вдвое длиннее. Присоединив посредством этого кабеля свое устройство к компьютеру, я получила свои вожделенные 4.9-5.0 вольт, о которых мечтала. Устройство равномерно подмигивало лампочкой, но ... компьютером не определялось. Вообще не видел компьютер моего устройства в упор. Подозреваю, что это потому, что этот кабель не был рассчитан на USB 2.0. И вот сижу я теперь, перед этими двумя кабелями, как старуха у разбитого корыта. Один пропускает USB-сигналы, но пожирает напряжение питания, а другой пропускает напряжение питания, но пожирает USB-сигнал. На дворе воскресенье, магазины, где продают компьютерные прибамбасы, закрыты. А в понедельник куда мне идти, искать этот проклятый провод? Может кто-нибудь в курсе, регламентируется ли где-нибудь омическое сопротивление USB-кабелей в расчете на один погонный метр? Или мне с авометром по магазинам ходить? И еще один вопрос по теме - может ли AT90USB647/1286 работать по протоколу USB 1.1? Т.е. с меньшей скоростью, чем тот рассчитан? Если да, то что для этого нужно? В даташите на этот счет никакой информации не нашла.
Сообщение отредактировал Xenia - Nov 8 2008, 22:51
|
|
|
|
|
Nov 9 2008, 01:27
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Xenia @ Nov 9 2008, 02:50)  Принтер же определялся операционкой, как USB 1.1 девайс. ..... Подозреваю, что это потому, что этот кабель не был рассчитан на USB 2.0. USB 1.1 не синоним full(low)-speed, а USB 2.0 не синоним high-speed. Цитата(Xenia @ Nov 9 2008, 02:50)  Может кто-нибудь в курсе, регламентируется ли где-нибудь омическое сопротивление USB-кабелей в расчете на один погонный метр? Или мне с авометром по магазинам ходить? Universal Serial Bus Specification; Revision 2.0 Я надеюсь она у Вас есть. Chapter 6 Mechanical; 6.6 Cable Mechanical Configuration and Material Requirements 6.6.3 Electrical Characteristics Page 105; Table 6-6. Conductor Resistance Chapter 7 Electrical 7.2 Power Distribution 7.2.2 Voltage Drop Budget Page 175; Figure 7-47. Worst-case Voltage Drop Topology (Steady State) Цитата(Xenia @ Nov 9 2008, 02:50)  И еще один вопрос по теме - может ли AT90USB647/1286 работать по протоколу USB 1.1? Т.е. с меньшей скоростью, чем тот рассчитан? Если да, то что для этого нужно? В даташите на этот счет никакой информации не нашла. Первая страница даташита на AT90USB64/128: • USB Full-speed/Low Speed Device Module with Interrupt on Transfer Completion Анатолий.
Сообщение отредактировал aesok - Nov 9 2008, 01:34
|
|
|
|
|
Nov 9 2008, 22:56
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Разбралась в причине "зависания" МК при понижении напряжения питания ниже 4.4 вольта. Причина оказалась настолько же дебильной, как и сопротивление в соединительном кабеле. Даже признаваться неловко. Начну по-порядку. Осциллографом кварц замерила - ниже 4.4 вольта генерация наличествует. Предположение о том, что не тянет кварц, не оправдалось. Эх, зря я 16 Мгц на 8 Мгц сменяла! Следуя данному мне здесь совету, написала самую простейшую программку типа: Код main() { Lamp_on(); // включаю светодиод for(;;); // бесконечный цикл } При напряжении ниже 4.4 вольта и эта программка, как и ожидалось, не сработала - светодиод не зажегся. Однако самым интересным оказалось то, что при понижении напряжения из работающего состояния в неработающее светодиод гас! Это означало, что МК не зависает, а ресетится! Померила напряжение на ножке RESET - так оно и есть! Напряжение всего 0.4 вольта - при таком значении МК работать не может. Нашла в интернете даташит на микросхему супервизора (MCP100T-450), который формирует сигнал RESET. Так оно и есть - у него Vtrip = 4.5 вольта, а гистерезис от 4.25 в до 4.50 в (в среднем). Как у меня напряжение падало ниже этого уровня, он и вставлял ресет. Судя про всему, быть мне великим электронщиком, когда я своё устройство усмирю!  
Сообщение отредактировал Xenia - Nov 9 2008, 22:56
|
|
|
|
|
Nov 10 2008, 05:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Xenia @ Nov 10 2008, 01:56)  Разбралась в причине "зависания" МК при понижении напряжения питания ниже 4.4 вольта. Причина оказалась настолько же простой, как и сопротивление в соединительном кабеле. ....... Нашла в интернете даташит на микросхему супервизора (MCP100T-450), который формирует сигнал RESET. Так оно и есть - у него Vtrip = 4.5 вольта, а гистерезис от 4.25 в до 4.50 в (в среднем). Как у меня напряжение падало ниже этого уровня, он и вставлял ресет. Так BOD был внешним? Одно из первых что проверяют после питания - ресет. Цитата(Xenia @ Nov 10 2008, 01:56)  Всё у Вас получится.
|
|
|
|
|
Nov 10 2008, 11:41
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(777777 @ Nov 10 2008, 13:35)  Небольшой оффтоп - Xenia, а где вы берете (планируете брать) Vendor ID и Device ID? Форум по этому вопросу я просмотрел, интересует ваш способ. Это не оффтоп, а вопрос как раз по теме. За основу брала "USB библиотеку под AT90USBxxx" выложенную на Сахаре OlegPowerC: http://caxapa.ru/128010.htmlЗатем я ее переписала под себя, вычистив замеченные ошибки: http://caxapa.ru/136120.htmlVendor ID и Device ID остались от Atmel'я, примеры на сайте которого скорее всего послужили OlegPowerC прототипом.
Сообщение отредактировал Xenia - Nov 10 2008, 11:42
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|