Перейти к содержанию
    

Xenia

Модератор FTP
  • Постов

    4 838
  • Зарегистрирован

  • Победитель дней

    2

Весь контент Xenia


  1. Моя оплошность - при перечислении пропустила его, а потом, говоря про второй вариант, подразумевала его. Я согласна, что этот способ самый лучший.
  2. Существуют 2 способа зажигания светодиодов от МК: 1-ый способ, когда МК выдает на порт напряжение, от которого горит светодиод. В этом случае светодиод подключается между выводом МК и землей. 2-ой способ, когда светодиод горит от цифрового питания, а МК закорачивает его своим портом накоротко, чем гасит. В этом случае светодиод подключается между выводом МК и плюсом цифрового питания. Баластный резистор для ограничения тока нужен в любом из этих случаев, как это уже подсказали ранее. Практика показывает, что МК легче выдерживает большой ток при закоротке на землю, чем ток, который ему приходится отдавать вовне. Отсюда предпочтительнее реализовывать 2-ой способ. Т.е. зажечь светодиод, подсоединив его одним концом к цифровой земле, а другим концом через сопротивление 1 ком к шине питания. При этом пин порта МП присоединяется к точке соединения светодиода и сопротивления. Высокий уровнь или Z-состояние не мешают светодиоду светиться, а низкий уровень закорачивает светодиод, пропуская весь ранее протекающий через него ток на землю. Несмотря на то, что в даташите на МК допускаются достаточно высокие токи через порт, там же упоминается ограничение на СУММАРНЫЙ допустимый ток. Поэтому управлять сразу десятком светодиодов достаточно стрёмно. Тогда уж лучше взять какую-нибудь сборку из 8 логических элементов "НЕ" и переключать светодиоды через нее.
  3. На WinXP работает, а на Vista не загружается драйвер. Что делать? В обеих случаях CDC использует фирменный драйвер от Microsoft под названием UsbSer.sys. При стандартной установке системы этот драйвер не ставится, но он имеется в базе driver.cab и оттуда при необходимости ставится в директорию System32\drivers\. Обычно этот драйвер используют многочисленные USB-модемы, для коих целей он и составлялся. Проект at90usb128-demo-cdc-1_0_3.zip тоже базируется на этом драйвере, поэтому для его установки прилагается только inf-файл, который использует стандартный драйвер UsbSer.sys. Но вот беда - под Vista этот inf-файл не срабатывает. Вот здесь - http://forums.microsoft.com/MSDN/showpost....51&siteid=1 - на микрософтовском форуме, народ ругается про то же самое. А кто-то составляет свои версии inf-файла - http://blog.bigreat.org/2007/11/25/at91sam...-windows-vista/ (правда не для AT90USB128, а для AT91SAM7). Вопреки опасениям, UsbSer.sys в системе Vista имеется - его дата 02.11.2006 и он длинее на 2560 байт того, который поставляется с WinXP. Отзовитесь, кому удалось запустить CDC-проект под Vista или помогите советом, где раздобыть подходящий inf-файл для этой цели. =============== P.S.: Кажется в другом проекте at90usb162-cdc-1_0_1.zip есть inf-файл, в заголовке которого поминается Vista: ; Windows 2000, XP & Vista setup File for AT90USBxx2 demo Пока не успела проверить заработает с ним или нет.
  4. Если бы не ваш пост, я бы никогда не полезла искать последнюю ревизию даташита. А самой найти такую ошибку невозможно.
  5. А я действовала по ревизии А (7593A-AVR-02/06) - там было 101. Вашу ревизию D я тоже нашла, и действительно в ней написаное иное - 110. Но ведь ревизия G (7593G-AVR-03/08) - последняя и только что вышла, и согласно ей для AT90USB128 права ревизия А, а для AT90USB64 права ревизия D. Но ведь у вас AT90USB128 и по ревизии D у вас заработало. Выходит, что последнняя ревизия снова вернулась к первоначальному ошибочному утверждению относительно AT90USB128? Да, заработало. Вам огромное спасибо!
  6. А у вас какой МК? Скачала последний даташит с сайта ATMEL: [PDF] AT90USB1286, AT90USB1287, AT90USB646, AT90USB647 (455 pages, revision G, updated 03/08) Действительно, в марте появились изменения. Однако вот что там сказано: External XTAL required for USB operation (MHz) = 16 Clock Division Factor = 8 PLLP2=1, PLLP2=0, PLLP2=1 (1) Note: 1. For AT90USB128x only. Do not use with AT90USB64x. PLLP2=1, PLLP2=1, PLLP2=0 (2) Note: 2. For AT90USB64x only. Do not use with AT90USB128x. У меня AT90USB647, значит я и виновата, что использовала программу для AT90USB1287. Но ведь и в голову не могло придти, что в этом месте может быть расхождение!
  7. Укажите, пожалуйста, где вы это исправили! У меня та же проблема, только я ошибки в упор не вижу. В config.h переопределила на частоту 16 МГц: #define FOSC 16000 В хидере pll_drv.h все написано совершено правильно: #elif (FOSC==16000) #define Pll_start_auto() Start_pll(PLLx03) где PLLx03 определено выше как: #define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) ) Так и быть должно согласно даташиту: Табл. 6-13 XTAL=16 MHz Clock Devision Factor=8 PLLP2=1 PLLP1=0 PLLP0=1 Где здесь ошибка?
  8. Между подачей команды чтения UDR0=(RREG | 0x00) и собственно чтением a0=UDR0, согласно даташита, необходимо сделать паузу, как минимум, в 50 (!) циклов ADC-clock. Иначе одни нули прут. Если ваш МК работает на более высокой частоте, чем АЦП, то его тактов потребуется еще больше. Это только когда в регистры пишут задержка не нужна, а когда читают - обязательна. А ваше ожидание - это ожидание отправки байта, этого мало. P.S. Ожидание короче писать не через конструкцию do-while, а просто через while. Вот так: while( (UCSR0A & (1<<UDRE0)) == 0);
×
×
  • Создать...