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

 
 
> Помогите с at90usb162.
arbuz
сообщение Aug 1 2013, 06:22
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 9-04-11
Пользователь №: 64 241



День добрый. Обращаюсь за помощью-подсказкой. Начал изучение интерфейса USB, для этого приобрёл контроллер at90usb162. Решил познать всё с нуля. Проштудировав datasheet, и прочую литературу занялся написание прошивки на языке С в AVR Studio 4. Написав пару программа моргания диодом и ответом на нажатие кнопочки, решил приступить к написанию программы для USB. Сейчас затык на этапе получения пакета SETUP от хоста т.е. ПК. Подскажите, пожалуйста, где ошибка. Код прошивки прилагается.
CODE
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>


#define F_CPU 16000000UL


#include <util/delay.h>



int main()
{
DDRC |= 1 << DDC6; // Порт С - как выход

MCUSR &= ~(1 << WDRF);
wdt_disable();

clock_prescale_set(clock_div_1);

//CLKPR = 0x80; // Бит разрешение изменения делителя
//CLKPR = 0x00; // Установка делителя на 1 F = 16 MHz

PORTC |= (1 << PC6); // РС6 - зажечь диод

//REGCR = (1 << REGDIS);

UDIEN = 0x00; //
UDINT = 0x00; //

USBCON |= (1 << USBE);

USBCON &= ~(1 << FRZCLK);

PLLCSR |= (1 << PLLP0); // Установить делитель PLL
if ((PLLCSR & 0x1C) == 0x04)
PORTC = 0x00; // Потушить диод
PLLCSR |= (1 << PLLE); // Enable PLL
while((PLLCSR & 0x01) != 0x01) // Захват в петле PLL
PORTC = 0x00; // Потушить диод
PORTC |= (1<<PC6); // РС6 - зажечь диод

/*------Начало настройки нулевой КТ------*/
UENUM = 0x00; // Нулевая конечая точка
//UECONX |= 0x29; // Бит разрешения работы КТ + бит сброса переключения данных
UECONX |= (1 << STALLRQ);
UECONX |= (1 << EPEN); // Бит разрешения работы КТ + бит сброса переключения данных
//UECFG0X = 0x81; // Bulk, in
//UECFG0X = 0x00; // Control, out
//UECFG0X = 0x01; // Control, in
//UECFG1X = 0x36; // 64 байта, 2-ой банк, выделение буфера
UECFG1X = 0x32; // 64 байта, 1 банк, выделение буфера
//UECFG1X = 0x10; // 16 байт, 1 банк, очистка буфера
while ((UESTA0X & 0x80) != 0x80) // Проверка корректности настройки КТ
PORTC = 0x00; // Потушить диод, диод горит - КТ сформировалась корректно*/
/*------Конец настройки КТ------*/
PORTC |= (1<<PC6); // РС6 - зажечь диод
//UERST |= 0x01; // Сброс нулевой конечной точки
//UERST = 0x00; // Очистка, для завершения броса и начала использования FIFO.
UENUM = 0x00; // Выбор нулевой КТ

UDCON &= ~(1 << DETACH);

while((UDINT & 0x04) != 0x04)
PORTC = 0x00; // Потушить диод, ожидание флага Start of Frame
PORTC |= (1<<PC6); // РС6 - зажечь диод
UDINT &= ~(1 << SOFI);
while((UEINTX & 0x08) != 0x08)
PORTC = 0x00; // Потушить диод, ожидание пакета SETUP, бит RXSTPI
PORTC |= (1<<PC6); // РС6 - зажечь диод

while(1);
return 0;
}


Сообщение отредактировал IgorKossak - Aug 1 2013, 06:31
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
arbuz
сообщение Aug 1 2013, 11:15
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 9-04-11
Пользователь №: 64 241



Остаётся вопрос, почему после того как ловится бит прихода SOF, бит прихода маркера SETUP не устанавливается?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- arbuz   Помогите с at90usb162.   Aug 1 2013, 06:22
- - kovigor   Цитата(arbuz @ Aug 1 2013, 09:22) решил п...   Aug 1 2013, 08:27
- - arbuz   Спасибо за совет. Читал и Гука, и Агурова, и перев...   Aug 1 2013, 08:50
|- - kovigor   Цитата(arbuz @ Aug 1 2013, 11:50) Спасибо...   Aug 1 2013, 08:59
|- - Rimsky   Цитата(arbuz @ Aug 1 2013, 17:50) Спасибо...   Aug 13 2013, 11:12
|- - fractcon   Цитата(arbuz @ Aug 1 2013, 15:15) Остаётс...   Aug 1 2013, 11:40
|- - arbuz   Цитата(fractcon @ Aug 1 2013, 15:40) Вот ...   Aug 8 2013, 19:15
- - vgo1   Цитата(arbuz @ Aug 1 2013, 10:22) День до...   Aug 11 2013, 12:31
- - Alex11   Я тут давным-давно выкладывал проект под 162 мегу:...   Aug 11 2013, 22:16
- - controller_m30   Моё предложение такое, что надо сначала проверить ...   Aug 13 2013, 17:15
- - arbuz   Спасибо всем за подсказки, результат - положительн...   Aug 15 2013, 07:05
- - vgo1   После того как поймали RXSTPI. сделайте 8 последов...   Aug 15 2013, 10:21
|- - arbuz   Цитата(vgo1 @ Aug 15 2013, 14:21) После т...   Aug 16 2013, 12:18
- - arbuz   Процесс пошёл, пришёл пакет SETUP, флаг RXSTPI уст...   Sep 2 2013, 06:43
- - arbuz   Хост присылает запрос GET_DESCRIPTOR, ответом высы...   Nov 25 2013, 11:21


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

 


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


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