Petka 0 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба Заменила кварц 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" при разных напряжениях. выберите нужное вам напряжение и соответствующим образом прошейте фузы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 8 ноября, 2008 Опубликовано 8 ноября, 2008 (изменено) · Жалоба смотрю даташит: 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 вольта? Изменено 8 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба Судя по BODLEVEL = 7, я пыталась отключить BOD совсем. Впрочем, не дожидаясь ответа, я перепробовала все BODLEVEL, но лучше от этого не стало. Не подбросит ли кто-нибудь еще идеи, по какой причине AT90USB647 может зависать, при уменьшении питающего напряжения ниже 4.4 вольта? Как вы подключили пин UVCC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 8 ноября, 2008 Опубликовано 8 ноября, 2008 (изменено) · Жалоба Как вы подключили пин UVCC? На этот вопрос я уже отвечала: Схема соединения примитивная - все напряжения одним пучком Vbus+Uvcc+Avcc+Dvcc (Figure 21-3). Внутренний регулятор у меня включен. Криминала тут нет, поскольку согласно Figure 21-3 даташита, такая схема подключения функционирует вплоть до 3.4 в (ниже уже требуется подключаться напрямую к Ucap). Кроме того, если бы я даже совсем обесточила UVCC, то у меня бы только перестал работать USB-канал, но процессор бы не завис. А у меня ниже 4.4 вольта перестает моргать светодиод на выводе порта, переключаемого из прерывания по таймеру T0. Т.е. у меня даже таймер останавливается! Впечатление такое, что кварц "заело". Изменено 8 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба А у меня ниже 4.4 вольта перестает моргать светодиод на выводе порта, переключаемого из прерывания по таймеру T0. Т.е. у меня даже таймер останавливается! Впечатление такое, что кварц "заело". 1) а осцильчиком в кварц тыкнуть? 2) а если запитать схему не от USB а от регулируемого источника питания. (d+ и d- НЕ использовать). И тоже понижать напряжение. Схема тоже "остановится"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 8 ноября, 2008 Опубликовано 8 ноября, 2008 (изменено) · Жалоба 1) а осцильчиком в кварц тыкнуть? 2) а если запитать схему не от USB а от регулируемого источника питания. (d+ и d- НЕ использовать). И тоже понижать напряжение. Схема тоже "остановится"? А чем питание от USB не кошерно? :) Я могу запретить, а точнее - вообще не инициализировать USB-сервис, используя чип, как обычный микропроцессор, а не как USB-контроллер. Тогда от USB-порта только одно питание и останется. Если питать от внешнего источника, то происходит тоже самое - как только питание падает до 4.40-4.35 вольта - признаки жизни пропадают. А ткнуть осцильчиком в кварц - моя мечта :). К сожалению, я - программист, а не электронщик. Осциллографа у меня нет. Но надеюсь найти место, где мне удастся им воспользоваться. Изменено 8 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба Если питать от внешнего источника, то происходит тоже самое - как только питание падает до 4.40-4.35 вольта - признаки жизни пропадают. А ткнуть осцильчиком в кварц - моя мечта :). К сожалению, я - программист, а не электронщик. Осциллографа у меня нет. Но надеюсь найти место, где мне удастся им воспользоваться. а есть возможность упротить программу например до: void main(void){ led_on(); delay_ms(250); led_off(); delay_ms(250); } тоже будет "стопориться" при понижении питания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 8 ноября, 2008 Опубликовано 8 ноября, 2008 (изменено) · Жалоба Проблема с напряжением на 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? Т.е. с меньшей скоростью, чем тот рассчитан? Если да, то что для этого нужно? В даташите на этот счет никакой информации не нашла. Изменено 8 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aesok 0 9 ноября, 2008 Опубликовано 9 ноября, 2008 (изменено) · Жалоба Принтер же определялся операционкой, как USB 1.1 девайс. ..... Подозреваю, что это потому, что этот кабель не был рассчитан на USB 2.0. USB 1.1 не синоним full(low)-speed, а USB 2.0 не синоним high-speed. Может кто-нибудь в курсе, регламентируется ли где-нибудь омическое сопротивление 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) И еще один вопрос по теме - может ли AT90USB647/1286 работать по протоколу USB 1.1? Т.е. с меньшей скоростью, чем тот рассчитан? Если да, то что для этого нужно? В даташите на этот счет никакой информации не нашла. Первая страница даташита на AT90USB64/128: • USB Full-speed/Low Speed Device Module with Interrupt on Transfer Completion Анатолий. Изменено 9 ноября, 2008 пользователем aesok Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SKov 0 9 ноября, 2008 Опубликовано 9 ноября, 2008 · Жалоба ... Что там резистор что ли впаяли? Если бы это было так, то при достижении порогового значения наблюдалась бы не отсечка, а линейное уменьшение выдаваемого компьютером напряжения с ростом потребляемого тока на всем диапазоне. Однако такой эффект незамечен. До 100 мА порт исправно выдает свои 5 вольт (у меня 5.05 в) и лишь после преодоления порога ток начинает уменьшаться. Проблема была ... в кабеле! Каждая жила которого имела сопротивление 2.6 ома. Итого в цепи питания (Ubus+Gnd) набиралось 2.6+2.6=5.2 ома, которые при токе 150 мА сажали на себя 5.2*0.15=0.78 вольта. В результате устройство имело для питания 5-0.78=4.22 вольта. Большего с этим кабелем получить было нельзя даже теоретически. ;) ;) ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 9 ноября, 2008 Опубликовано 9 ноября, 2008 (изменено) · Жалоба Разбралась в причине "зависания" МК при понижении напряжения питания ниже 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 в (в среднем). Как у меня напряжение падало ниже этого уровня, он и вставлял ресет. Судя про всему, быть мне великим электронщиком, когда я своё устройство усмирю! :):):) Изменено 9 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба Разбралась в причине "зависания" МК при понижении напряжения питания ниже 4.4 вольта. Причина оказалась настолько же простой, как и сопротивление в соединительном кабеле. ....... Нашла в интернете даташит на микросхему супервизора (MCP100T-450), который формирует сигнал RESET. Так оно и есть - у него Vtrip = 4.5 вольта, а гистерезис от 4.25 в до 4.50 в (в среднем). Как у меня напряжение падало ниже этого уровня, он и вставлял ресет. Так BOD был внешним? :07: Одно из первых что проверяют после питания - ресет. Судя про всему, быть мне великим электронщиком, когда я своё устройство усмирю! :):):) Всё у Вас получится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Visor 0 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба Нашла в интернете даташит на микросхему супервизора (MCP100T-450), который формирует сигнал RESET. Так оно и есть - у него Vtrip = 4.5 вольта, а гистерезис от 4.25 в до 4.50 в (в среднем). Как у меня напряжение падало ниже этого уровня, он и вставлял ресет. А зачем она вам? AT90USB содержит встроенный BOD, параметрируемый и замечательно работающий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба Небольшой оффтоп - Xenia, а где вы берете (планируете брать) Vendor ID и Device ID? Форум по этому вопросу я просмотрел, интересует ваш способ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 42 10 ноября, 2008 Опубликовано 10 ноября, 2008 (изменено) · Жалоба Небольшой оффтоп - Xenia, а где вы берете (планируете брать) Vendor ID и Device ID? Форум по этому вопросу я просмотрел, интересует ваш способ. Это не оффтоп, а вопрос как раз по теме. За основу брала "USB библиотеку под AT90USBxxx" выложенную на Сахаре OlegPowerC: http://caxapa.ru/128010.html Затем я ее переписала под себя, вычистив замеченные ошибки: http://caxapa.ru/136120.html Vendor ID и Device ID остались от Atmel'я, примеры на сайте которого скорее всего послужили OlegPowerC прототипом. Изменено 10 ноября, 2008 пользователем Xenia Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться