Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Гениальная логика! Одна ошибка исправляется при помощи другой(+)

Отправлено Tolik 26 января 2009 г. 17:02
В ответ на: И каким же образом отслеживались Ваши изменения и как именно изменялся код инициализации железа? Вами доказана причинно-следственная связь между этими событиями? Примеры в студию. отправлено пользователем Doppler 26 января 2009 г. 16:15

IAR for ARM 4.42.
Пример STR912-SK-IAR\uIP_webserver, файл STR912_enet.c

void tapdev_init(void) // инициализация Ethernet
{
volatile Int32U i;
GPIO_InitTypeDef GPIO_InitStructure;

EnetDmaTx.Tx.EnetTxSR.Valid = 0;
EnetDmaRx.Rx.EnetRxSR.Valid = 0;
// Init Sys
// Reset
SCU_AHBPeriphReset(__ENET,ENABLE);
// Clock enable
SCU_AHBPeriphClockConfig(__ENET,ENABLE);
// Reset release
SCU_AHBPeriphReset(__ENET,DISABLE);

// MII_PHYCLK Enable
SCU_PHYCLKConfig(ENABLE);

ENET_SCR_bit.SRESET = 1; // MAC DMA Software reset

// Assign pins to the MII interface
// Enable GPIO clocks
SCU_APBPeriphClockConfig(__GPIO0 | __GPIO1 | __GPIO5, ENABLE);
// Release GPIO reset
SCU_APBPeriphReset(__GPIO0 | __GPIO1 | __GPIO5, DISABLE);

// GPIO0 All pins Default Input function
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_Init(GPIO0, &GPIO_InitStructure); // Ошибка1! Эта функция выключает MII(default input)необходимый для работы Ethernet драйвера и включает альтернативные входы порта 0.

// GPIO1 0,5,6 inputs
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_6;
GPIO_Init(GPIO1, &GPIO_InitStructure);

// GPIO1 1,2,3,4,7 Push-Pull outputs Alt func 2
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; // Ошибка2! Этот параметр включает альтернативные входные функции хотя порты используются как выходы - тем самым делает невозможным использование этих функций вдальнейшем
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |\
GPIO_Pin_4 | GPIO_Pin_7;
GPIO_Init(GPIO1, &GPIO_InitStructure);

// GPIO5 2,3 Push-Pull outputs Alt func 2
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;//Ошибка2. Смотри выше
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
GPIO_Init(GPIO5, &GPIO_InitStructure);
...
}

Дальше идет исправление ошибок при помощи новых ошибок!
файл drv_hd44780_I.c
void HD44780_IO_Init (void)
{
GPIO_InitTypeDef GPIO_InitStructure;

// Enable GPIO clocks
SCU_APBPeriphClockConfig(__GPIO8 | __GPIO9, ENABLE);
// Release GPIO reset
SCU_APBPeriphReset(__GPIO8 | __GPIO9, DISABLE);

// IO configure
SCU->GPIOEMI &= ~1;
SCU->GPIOTYPE[9] &= ~(LCD_RS | LCD_E | LCD_RW | LCD_LIGHT);
GPIO9->DDR |= LCD_RS | LCD_E | LCD_RW | LCD_LIGHT;

GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Disable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
GPIO_InitStructure.GPIO_Pin = LCD_DATA;
GPIO_Init(GPIO8, &GPIO_InitStructure); // Ошибка3 которая исправляет Ошибку1! Входной параметр GPIO8 является недопустимым для некоторых полей GPIO_InitStructure. Этот параметр меняет содержимое некоторых регистров GPIO0 - тем самым исправляет Ошибку1.
...
}



Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 69:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru