реклама на сайте
подробности

 
 
> проблемы с настройкой модуля USB в AT91SAM7S256
coolzero
сообщение Oct 24 2007, 06:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135



Добрый день , уважаемые форумчане
Помогите начинающему работать с USB.
Щупаю пример от Атмеля at91_demo_massstorage_fs
Возникло несколько вопросов по работе модуля USB:

1.При запуске проги , но не подключённом у-ве к хосту вижу что постоянно влетаю в прерывание
по флагу ENDBUSRES, которое вообще должно возникать при подключениие к хосту .
Флаг этот должен сбрасываться следующим кодом

AT91F_UDP_DisableIt( USBDEV_BASE_UDP, DISABLE_ALL_IT );
AT91F_UDP_InterruptClearRegister( USBDEV_BASE_UDP, CLEAR_ALL_IT );
AT91F_UDP_EnableIt( USBDEV_BASE_UDP, AT91C_UDP_EPINT0| AT91C_UDP_RXSUSP
| AT91C_UDP_RXRSM | AT91C_UDP_EXTRSM
| AT91C_UDP_SOFINT );

но почему то код не работает , флаг ENDBUSRES остаётся взведённым .
И вообще состояние регистров не меняется и в итоге прога постоянно крутится в прерывании.

2. Первоначально маска прерываний конфигурится в состояние по умолчанию - прерывание только по
флагу RXRSM .
При нормальной работе модуля , при подключении к хосту по этому флагу возникает прерывание ,
такой же вышепреведённый код отрабатывает нормально , начинается процесс нумерации.

А иногда бывает что у-во подключено , а никакой реакции на компе нет , прерывания только по ENDBUSRES , по RXRSM прерывания нет , у-во на компе не видно .
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dron_Gus
сообщение Oct 26 2007, 12:45
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Код


/*
typedef struct _AT45_Device{
  int buflen;
  int pages;
  int blocks;
  char pagebits;
  char sign;
  const char * name;
}AT45_Device;
*/
#define AT45_Types  8
const AT45_Device AT45_Type[AT45_Types]=
  {
    { 264, 4096,  512,  9,  0,   "Unknown"},
    { 264,  512,   64,  9,  3, "AT45DB011"}, // 1  Mbit
    { 264, 1024,  128,  9,  5, "AT45DB021"}, // 2  Mbit
    { 264, 2048,  256,  9,  7, "AT45DB041"}, // 4  Mbit
    { 264, 4096,  512,  9,  9, "AT45DB081"}, // 8  Mbit
    { 528, 4096,  512, 10, 11, "AT45DB161"}, // 16 Mbit
    { 528, 8192, 1024, 10, 13, "AT45DB128"}, // 32 Mbit
    {1056, 8196, 1024, 11, 15, "AT45DB642"}  // 64 Mbit
  };



FS_AT45_InitSPI(void)
  {
  AT91PS_SPI pSPI = AT91C_BASE_SPI0;

  // enable peripheral clock for SPI
  AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, (1 << AT91C_ID_SPI0));

  // SPI enable and reset
  if (!(pSPI->SPI_CR & AT91C_SPI_SPIEN))
    {
    pSPI->SPI_CR = AT91C_SPI_SWRST;
    pSPI->SPI_CR = AT91C_SPI_SPIDIS;
    pSPI->SPI_CR = AT91C_SPI_SPIEN;
    }
  // SPI mode: master, fixed periph. sel., FDIV=0, fault detection disabled
  pSPI->SPI_MR  = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS;

  // set chip-select-register
  // SPI mode 0: 8 bits per transfer, CPOL=0, ClockPhase=0, DLYBCT = 0
  //pSPI->SPI_CSR[AT45_SPI_CSRNum] = /*AT91C_SPI_CPOL |*/ AT91C_SPI_NCPHA | AT91C_SPI_BITS_8 | AT91C_SPI_CSAAT | (0xFF << 8);

  // SPI mode 3: 8 bits per transfer, CPOL=1, ClockPhase=1, DLYBCT = 0
  pSPI->SPI_CSR[AT45_SPI_CSRNum] = AT91C_SPI_CPOL | /*AT91C_SPI_NCPHA |*/ AT91C_SPI_BITS_8 | 0x0F << 8;
//  pSPI->SPI_CR = AT91C_SPI_SPIEN;

//  if(pSPI->SPI_SR & AT91C_SPI_SPIENS)
//    printf("SPI initialized...\n");
  }

  

// Read DataFlash status register
__ramfunc char FS_AT45_ReadStatus(U8 Unit)
  {
  char s;
  FS_AT45_DisableCS(Unit);
  FS_AT45_EnableCS(Unit);
  FS_AT45_RW(StatusReg);
  s = FS_AT45_RW(0xFF);
  FS_AT45_DisableCS(Unit);
  return s;
  }

int FS_AT45_InitDev(U8 Unit)
  {
  char result;
  int i;

  result = FS_AT45_ReadStatus(Unit);
//  printf("AT45 status %X\r\n", result);
  AT45_Devs[Unit] = &(AT45_Type[0]);
  for (i = AT45_Types; i >= 0; i--)
    if (((result >> 2) & 0x0F) == AT45_Type[i].sign)
      break;
  AT45_Devs[Unit] = &AT45_Type[i];
  if (i != 0)
    return 0;
  else
    return 1;
  }



int FS_AT45_InitDevice(U8 Unit)  // Called from AddDevice. Usually the first call to the driver
  {
  int result, i;
  char prev_dev;

  FS_AT45_InitPIO();
  FS_AT45_InitSPI();
  FS_AT45_DisableCS(Unit);
  prev_dev = FS_AT45_Select(AT45_SPI_CSRMask);
  FS_AT45_SetSpeed(AT45_MIN_SPEED);  //slow during init
  for(i=0;i<41;i++)
    FS_AT45_RW(0xFF);
  FS_AT45_SetSpeed(AT45_MAX_SPEED);
  result = FS_AT45_InitDev(Unit);
  //DataAbort will be detected if we use printf here! FS bag?
/*  if (result != 0)
    {
    printf("Error init AT45 devise No %d\n\r", Unit);
    }
  else
    {
    printf("Found %s\n\r", AT45_Devs[Unit]->name);
    }*/
  FS_AT45_Select(prev_dev);
  return result;
  }


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- coolzero   проблемы с настройкой модуля USB в AT91SAM7S256   Oct 24 2007, 06:16
- - aaarrr   1. Скорее всего, флаг сбрасывается нормально, а Ва...   Oct 24 2007, 07:14
|- - coolzero   Цитата(aaarrr @ Oct 24 2007, 11:14) 1. Ск...   Oct 24 2007, 08:04
|- - aaarrr   Цитата(coolzero @ Oct 24 2007, 12:04) По ...   Oct 24 2007, 08:27
|- - coolzero   [quote name='aaarrr' date='Oct 24 2007...   Oct 24 2007, 09:00
|- - aaarrr   Цитата(coolzero @ Oct 24 2007, 13:00) Мне...   Oct 24 2007, 09:10
|- - Kitsok   У меня подтяжка сделана как в Olimex SAM7-P256, вс...   Oct 24 2007, 09:11
- - KAlex   Цитата(coolzero @ Oct 24 2007, 10:16) Щуп...   Oct 24 2007, 09:23
|- - aaarrr   Цитата(KAlex @ Oct 24 2007, 13:23) Что то...   Oct 24 2007, 09:37
- - ljerry   Цитата(coolzero @ Oct 24 2007, 10:16) 1.П...   Oct 24 2007, 09:51
- - _4afc_   Цитата(coolzero @ Oct 24 2007, 10:16) Щуп...   Oct 24 2007, 10:01
- - coolzero   Изменил подтяжку вместо питания USB на 3.3 В , фла...   Oct 24 2007, 11:05
|- - _4afc_   Цитата(coolzero @ Oct 24 2007, 14:47) В п...   Oct 24 2007, 11:10
- - coolzero   А чем мне может помешать управление энергопотребле...   Oct 24 2007, 11:10
|- - _4afc_   Цитата(coolzero @ Oct 24 2007, 15:10) А ч...   Oct 24 2007, 11:23
- - coolzero   М-да что то не получается Из проводника диск форм...   Oct 24 2007, 11:44
|- - _4afc_   Цитата(coolzero @ Oct 24 2007, 15:29) Не ...   Oct 24 2007, 11:45
- - coolzero   вот оно что , я то думаю где собака порылась насч...   Oct 24 2007, 12:02
|- - _4afc_   Цитата(coolzero @ Oct 24 2007, 16:02) вот...   Oct 24 2007, 12:26
- - coolzero   А если я поменяю PID\VID - у меня проблем с д...   Oct 24 2007, 12:40
- - Dron_Gus   У меня sam7x нормально работает с AT45 и ("на...   Oct 24 2007, 12:43
- - coolzero   Значит надо рыть в другую сторону , возможно дейст...   Oct 24 2007, 13:04
- - Dron_Gus   Вы не забываете блокировать доступ "из" ...   Oct 24 2007, 13:34
- - coolzero   Да вроде нет - програмка пока отладочная , кроме u...   Oct 25 2007, 05:15
|- - Calculator   Цитата(coolzero @ Oct 25 2007, 11:15) Мал...   Oct 25 2007, 07:54
- - coolzero   Всё возможно , надо проверить , спасибо ... Но во...   Oct 25 2007, 08:51
- - Dron_Gus   Я описание ФАТ давно читал, но не длинное ли имя ф...   Oct 25 2007, 09:53
|- - _4afc_   Цитата(Dron_Gus @ Oct 25 2007, 13:53) Я о...   Oct 25 2007, 10:21
- - coolzero   Так точно , похоже на то . Длину имен подрезал, ст...   Oct 25 2007, 10:23
|- - Calculator   Цитата(coolzero @ Oct 25 2007, 16:23) Так...   Oct 25 2007, 10:42
|- - _4afc_   Цитата(coolzero @ Oct 25 2007, 14:23) Так...   Oct 25 2007, 11:20
- - coolzero   Написано достаточно много , но есть строка Revisio...   Oct 25 2007, 11:05
- - coolzero   Плата на пластиковых пеньках , стола не касается ....   Oct 25 2007, 11:37
|- - _4afc_   Цитата(coolzero @ Oct 25 2007, 15:37) Пла...   Oct 25 2007, 11:46
- - coolzero   Текстолита , увы , сейчас под рукой нет ... Не сов...   Oct 25 2007, 12:05
|- - _4afc_   Цитата(coolzero @ Oct 25 2007, 16:05) Тек...   Oct 25 2007, 12:33
- - Dron_Gus   Какой размер сектора Вы используете? Хотя у AT45 р...   Oct 25 2007, 12:45
|- - _4afc_   Цитата(Dron_Gus @ Oct 25 2007, 16:45) Как...   Oct 25 2007, 14:48
- - coolzero   Таблица ФАТ и соответствующие сектора меняются На...   Oct 25 2007, 13:08
- - Dron_Gus   Цитата(coolzero @ Oct 25 2007, 17:08) пра...   Oct 25 2007, 13:22
- - coolzero   Надо попробовать   Oct 25 2007, 13:38
- - Dron_Gus   2 _4afc_, что-то наверное уже поздно... "ниас...   Oct 25 2007, 14:55
|- - _4afc_   Цитата(Dron_Gus @ Oct 25 2007, 18:55) Я т...   Oct 26 2007, 11:17
- - coolzero   Погонял свой девайс , мнение такое сложилось - кос...   Oct 26 2007, 12:09
- - coolzero   Спасибо Dron_Gus , буду разбираться . А какое знач...   Oct 26 2007, 12:55
- - coolzero   а какая команда чтения датафлеш используется ?   Oct 29 2007, 07:38
- - coolzero   Поигрался с настройками SPI , не понятно Девайс к...   Oct 29 2007, 09:26
- - Dron_Gus   Где-то на форуме обсуждались проблеммы и особеност...   Oct 29 2007, 10:34
- - coolzero   Уважаемые форумчане , где то видел мессагу , про т...   Oct 31 2007, 08:59


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 13:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.0146 секунд с 7
ELECTRONIX ©2004-2016