|
USB своими руками для sam7x256, или проблемы с которыми я столкнулся. |
|
|
|
Jan 28 2011, 08:54
|

Участник

Группа: Участник
Сообщений: 22
Регистрация: 21-04-09
Пользователь №: 48 029

|
Доброе время суток всем. Имеем sam7x256, интерфейс USB, и небольшой опыт (3 проекта я не считаю опытом) работы с этим кристалом. С AVR и MC51 опыт достаточно большой, но с ARM-ом сталкнулся год назад. RS, CAN, ADC, SPI, TWI, AIC ну, в общем вся переферия кристалла поддалась о особых трудностей с этим не возникло. Но, ниразу мне не приходилось делать что либо для USB. Однако интересовался, читал (и это форум в том числе), смотрел, слушал... Я вообще долго не задаю вопросы пока уже совсем не упрусь в стенку. Понимаю, что те, кто разобрался в вопросе сечас могут закричать, что "там все просто" или "возьми примеры и не парься", но я человек дотошный и пытаюсь разобраться в каждой мелочи. При этом никогда не отказываю в объяснениях... Однако сейчас объяснить надо мне, да и другим думаю тоже будет интересно. Я может буду задавать ламерские вопросы, но прошу отнестись ко мне с лояльной стороны и не судить за это строго. И так. 1. Судя из того, что я вычитал и прочитал. Работа UDP в background-е меня не устраивает и хотелось бы настроить работу через AIC. Но сталкнулся с такой проблемой: Как задать первоначальные настройки для UDP? Просто задали тактирование и все? А потом пытаемся ловить ENDBUSRES? или же надо запретить передатчик TXDIS перед настройкой? 2. При простой подаче тактирования (ну, частоту я соблел  ), UDP_ISR чистый (т.е. равен 0) как белый лист, какие бы "приседансы" не делались. и посему ENDBUSRES я просто не вижу. Ни включение ни выключение резисторя на D+ не приводят никчему. Хотя посылки от хоста осцилографом я вижу прекрасно. Пересброс питания, reset и включение выключения кабеля эфект нулевой. 3. Несколько раз контроллер UDP таки запускался и я даже залетал по вектору прерывания в обработку прерываний от UDP, но ниодин из битов регистра UDP_ISR не детектируется. Создавалось впечатление, что я залетел туда случайно, но из прерывания он не выходит. Т.е. крутится там и все. Я принудительно в конце процедуры вставил очистку всех прерываний от UDP как в AIC так и в UDP_ICR. А прерывание все равно вызывается и непонятно чем  4. Из-за всего этого я не могу идти дальше, посему вопросов связанных с самим протоколом я задать не смогу. Однако хочу задать вопрос по поводу отладки самого контроллера UDP. В keil нет ничего, что с ним связано. Для отладки другой переферии мне было достаточно keil debuger, а тут..? С UDP пришлось устанавливать "светодиодные метки" но, это жутко неудобно. Как и чем проверять работу кода для UDP в keil ? Понимаю, что вопросы может быть даже немного к "стыду моему", но еще раз прошу отнестить снисходительно к ним. PS Я специально не привожу и не хочу, чтобы приводили куски кода, потому как хочу понять сам процесс и принцип.
--------------------
Уважающая себя схема, как уважающая себя женщина, никогда с первого раза не даст того, что от нее хотят. (с) мое
|
|
|
|
|
 |
Ответов
|
Mar 4 2011, 07:39
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 25-01-11
Из: Москва
Пользователь №: 62 467

|
то, что было на PLL, я и проверял, выводя наружу, с разными делениями. поскольку 48MHz МК может получить из 96MHz PLL, я решил до UDP частота доходит в порядке. CODE Mode_USR EQU 0x10 Mode_FIQ EQU 0x11 Mode_IRQ EQU 0x12 Mode_SVC EQU 0x13 Mode_ABT EQU 0x17 Mode_UND EQU 0x1B Mode_SYS EQU 0x1F
I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
; Internal Memory Base Addresses FLASH_BASE EQU 0x00100000 RAM_BASE EQU 0x00200000
;// <h> Stack Configuration (Stack Sizes in Bytes) ;// <o0> Undefined Mode <0x0-0xFFFFFFFF:8> ;// <o1> Supervisor Mode <0x0-0xFFFFFFFF:8> ;// <o2> Abort Mode <0x0-0xFFFFFFFF:8> ;// <o3> Fast Interrupt Mode <0x0-0xFFFFFFFF:8> ;// <o4> Interrupt Mode <0x0-0xFFFFFFFF:8> ;// <o5> User/System Mode <0x0-0xFFFFFFFF:8> ;// </h>
UND_Stack_Size EQU 0x00000000 SVC_Stack_Size EQU 0x00000008 ABT_Stack_Size EQU 0x00000000 FIQ_Stack_Size EQU 0x00000000 IRQ_Stack_Size EQU 0x00000080 USR_Stack_Size EQU 0x00000400
ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \ FIQ_Stack_Size + IRQ_Stack_Size)
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE USR_Stack_Size __initial_sp SPACE ISR_Stack_Size Stack_Top
;// <h> Heap Configuration ;// <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF> ;// </h>
Heap_Size EQU 0x00000000
AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit
; Reset Controller (RSTC) definitions RSTC_BASE EQU 0xFFFFFD00 ; RSTC Base Address RSTC_MR EQU 0x08 ; RSTC_MR Offset
;/* ;// <e> Reset Controller (RSTC) ;// <o1.0> URSTEN: User Reset Enable ;// <i> Enables NRST Pin to generate Reset ;// <o1.8..11> ERSTL: External Reset Length <0-15> ;// <i> External Reset Time in 2^(ERSTL+1) Slow Clock Cycles ;// </e> ;*/ RSTC_SETUP EQU 1 RSTC_MR_Val EQU 0xA5000401
; Embedded Flash Controller (EFC) definitions EFC_BASE EQU 0xFFFFFF00 ; EFC Base Address EFC0_FMR EQU 0x60 ; EFC0_FMR Offset EFC1_FMR EQU 0x70 ; EFC1_FMR Offset
;// <e> Embedded Flash Controller 0 (EFC0) ;// <o1.16..23> FMCN: Flash Microsecond Cycle Number <0-255> ;// <i> Number of Master Clock Cycles in 1us ;// <o1.8..9> FWS: Flash Wait State ;// <0=> Read: 1 cycle / Write: 2 cycles ;// <1=> Read: 2 cycle / Write: 3 cycles ;// <2=> Read: 3 cycle / Write: 4 cycles ;// <3=> Read: 4 cycle / Write: 4 cycles ;// </e> EFC0_SETUP EQU 1 EFC0_FMR_Val EQU 0x00320100
;// <e> Embedded Flash Controller 1 (EFC1) ;// <o1.16..23> FMCN: Flash Microsecond Cycle Number <0-255> ;// <i> Number of Master Clock Cycles in 1us ;// <o1.8..9> FWS: Flash Wait State ;// <0=> Read: 1 cycle / Write: 2 cycles ;// <1=> Read: 2 cycle / Write: 3 cycles ;// <2=> Read: 3 cycle / Write: 4 cycles ;// <3=> Read: 4 cycle / Write: 4 cycles ;// </e> EFC1_SETUP EQU 0 EFC1_FMR_Val EQU 0x00320100
; Watchdog Timer (WDT) definitions WDT_BASE EQU 0xFFFFFD40 ; WDT Base Address WDT_MR EQU 0x04 ; WDT_MR Offset
;// <e> Watchdog Timer (WDT) ;// <o1.0..11> WDV: Watchdog Counter Value <0-4095> ;// <o1.16..27> WDD: Watchdog Delta Value <0-4095> ;// <o1.12> WDFIEN: Watchdog Fault Interrupt Enable ;// <o1.13> WDRSTEN: Watchdog Reset Enable ;// <o1.14> WDRPROC: Watchdog Reset Processor ;// <o1.28> WDDBGHLT: Watchdog Debug Halt ;// <o1.29> WDIDLEHLT: Watchdog Idle Halt ;// <o1.15> WDDIS: Watchdog Disable ;// </e> WDT_SETUP EQU 1 WDT_MR_Val EQU 0x00008000
; Power Mangement Controller (PMC) definitions PMC_BASE EQU 0xFFFFFC00 ; PMC Base Address PMC_MOR EQU 0x20 ; PMC_MOR Offset PMC_MCFR EQU 0x24 ; PMC_MCFR Offset PMC_PLLR EQU 0x2C ; PMC_PLLR Offset PMC_MCKR EQU 0x30 ; PMC_MCKR Offset PMC_SR EQU 0x68 ; PMC_SR Offset PMC_MOSCEN EQU (1<<0) ; Main Oscillator Enable PMC_OSCBYPASS EQU (1<<1) ; Main Oscillator Bypass PMC_OSCOUNT EQU (0xFF<<8) ; Main OScillator Start-up Time PMC_DIV EQU (0xFF<<0) ; PLL Divider PMC_PLLCOUNT EQU (0x3F<<8) ; PLL Lock Counter PMC_OUT EQU (0x03<<14) ; PLL Clock Frequency Range PMC_MUL EQU (0x7FF<<16) ; PLL Multiplier PMC_USBDIV EQU (0x03<<28) ; USB Clock Divider PMC_CSS EQU (3<<0) ; Clock Source Selection PMC_PRES EQU (7<<2) ; Prescaler Selection PMC_MOSCS EQU (1<<0) ; Main Oscillator Stable PMC_LOCK EQU (1<<2) ; PLL Lock Status PMC_MCKRDY EQU (1<<3) ; Master Clock Status
;// <e> Power Mangement Controller (PMC) ;// <h> Main Oscillator ;// <o1.0> MOSCEN: Main Oscillator Enable ;// <o1.1> OSCBYPASS: Oscillator Bypass ;// <o1.8..15> OSCCOUNT: Main Oscillator Startup Time <0-255> ;// </h> ;// <h> Phase Locked Loop (PLL) ;// <o2.0..7> DIV: PLL Divider <0-255> ;// <o2.16..26> MUL: PLL Multiplier <0-2047> ;// <i> PLL Output is multiplied by MUL+1 ;// <o2.14..15> OUT: PLL Clock Frequency Range ;// <0=> 80..160MHz <1=> Reserved ;// <2=> 150..220MHz <3=> Reserved ;// <o2.8..13> PLLCOUNT: PLL Lock Counter <0-63> ;// <o2.28..29> USBDIV: USB Clock Divider ;// <0=> None <1=> 2 <2=> 4 <3=> Reserved ;// </h> ;// <o3.0..1> CSS: Clock Source Selection ;// <0=> Slow Clock ;// <1=> Main Clock ;// <2=> Reserved ;// <3=> PLL Clock ;// <o3.2..4> PRES: Prescaler ;// <0=> None ;// <1=> Clock / 2 <2=> Clock / 4 ;// <3=> Clock / 8 <4=> Clock / 16 ;// <5=> Clock / 32 <6=> Clock / 64 ;// <7=> Reserved ;// </e> PMC_SETUP EQU 1 PMC_MOR_Val EQU 0x00000602 PMC_PLLR_Val EQU 0x10053C01 PMC_MCKR_Val EQU 0x00000001
PRESERVE8
; Area Definition and Entry Point ; Startup Code must be linked first at Address at which it expects to run.
AREA RESET, CODE, READONLY ARM
; Exception Vectors ; Mapped to Address 0. ; Absolute addressing mode must be used. ; Dummy Handlers are implemented as infinite loops which can be modified.
Vectors LDR PC,Reset_Addr LDR PC,Undef_Addr LDR PC,SWI_Addr LDR PC,PAbt_Addr LDR PC,DAbt_Addr NOP ; Reserved Vector ; LDR PC,IRQ_Addr LDR PC,[PC,#-0xF20] ; Vector From AIC_IVR ; LDR PC,FIQ_Addr LDR PC,[PC,#-0xF20] ; Vector From AIC_FVR
Reset_Addr DCD Reset_Handler Undef_Addr DCD Undef_Handler SWI_Addr DCD SWI_Handler PAbt_Addr DCD PAbt_Handler DAbt_Addr DCD DAbt_Handler DCD 0 ; Reserved Address IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler
Undef_Handler B Undef_Handler SWI_Handler B SWI_Handler PAbt_Handler B PAbt_Handler DAbt_Handler B DAbt_Handler IRQ_Handler B IRQ_Handler FIQ_Handler B FIQ_Handler
; Reset Handler
EXPORT Reset_Handler Reset_Handler
; Setup RSTC IF RSTC_SETUP != 0 LDR R0, =RSTC_BASE LDR R1, =RSTC_MR_Val STR R1, [R0, #RSTC_MR] ENDIF
; Setup EFC0 IF EFC0_SETUP != 0 LDR R0, =EFC_BASE LDR R1, =EFC0_FMR_Val STR R1, [R0, #EFC0_FMR] ENDIF
; Setup EFC1 IF EFC1_SETUP != 0 LDR R0, =EFC_BASE LDR R1, =EFC1_FMR_Val STR R1, [R0, #EFC1_FMR] ENDIF
; Setup WDT IF WDT_SETUP != 0 LDR R0, =WDT_BASE LDR R1, =WDT_MR_Val STR R1, [R0, #WDT_MR] ENDIF
; Setup PMC IF PMC_SETUP != 0 LDR R0, =PMC_BASE
; Setup Main Oscillator LDR R1, =PMC_MOR_Val STR R1, [R0, #PMC_MOR]
; Wait until Main Oscillator is stablilized IF (PMC_MOR_Val:AND:PMC_MOSCEN) != 0 MOSCS_Loop LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MOSCS BEQ MOSCS_Loop ENDIF
; Setup the PLL IF (PMC_PLLR_Val:AND:PMC_MUL) != 0 LDR R1, =PMC_PLLR_Val STR R1, [R0, #PMC_PLLR]
; Wait until PLL is stabilized PLL_Loop LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_LOCK BEQ PLL_Loop ENDIF
; Select Clock IF (PMC_MCKR_Val:AND:PMC_CSS) == 1 ; Main Clock Selected LDR R1, =PMC_MCKR_Val AND R1, #PMC_CSS STR R1, [R0, #PMC_MCKR] WAIT_Rdy1 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy1 LDR R1, =PMC_MCKR_Val STR R1, [R0, #PMC_MCKR] WAIT_Rdy2 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy2 ELIF (PMC_MCKR_Val:AND:PMC_CSS) == 3 ; PLL Clock Selected LDR R1, =PMC_MCKR_Val AND R1, #PMC_PRES STR R1, [R0, #PMC_MCKR] WAIT_Rdy1 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy1 LDR R1, =PMC_MCKR_Val STR R1, [R0, #PMC_MCKR] WAIT_Rdy2 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy2 ENDIF ; Select Clock ENDIF ; PMC_SETUP
; Copy Exception Vectors to Internal RAM
IF :DEF:RAM_INTVEC ADR R8, Vectors ; Source LDR R9, =RAM_BASE ; Destination LDMIA R8!, {R0-R7} ; Load Vectors STMIA R9!, {R0-R7} ; Store Vectors LDMIA R8!, {R0-R7} ; Load Handler Addresses STMIA R9!, {R0-R7} ; Store Handler Addresses ENDIF
; Remap on-chip RAM to address 0
MC_BASE EQU 0xFFFFFF00 ; MC Base Address MC_RCR EQU 0x00 ; MC_RCR Offset
IF :DEF:REMAP LDR R0, =MC_BASE MOV R1, #1 STR R1, [R0, #MC_RCR] ; Remap ENDIF
; Setup Stack for each mode
LDR R0, =Stack_Top
; Enter Undefined Instruction Mode and set its Stack Pointer MSR CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #UND_Stack_Size
; Enter Abort Mode and set its Stack Pointer MSR CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #ABT_Stack_Size
; Enter FIQ Mode and set its Stack Pointer MSR CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #FIQ_Stack_Size
; Enter IRQ Mode and set its Stack Pointer MSR CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #IRQ_Stack_Size
; Enter Supervisor Mode and set its Stack Pointer MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #SVC_Stack_Size
; Enter User Mode and set its Stack Pointer MSR CPSR_c, #Mode_USR IF :DEF:__MICROLIB
EXPORT __initial_sp
ELSE
MOV SP, R0 SUB SL, SP, #USR_Stack_Size
ENDIF
; Enter the C code
IMPORT __main LDR R0, =__main BX R0
IF :DEF:__MICROLIB
EXPORT __heap_base EXPORT __heap_limit
ELSE ; User Initial Stack & Heap AREA |.text|, CODE, READONLY
IMPORT __use_two_region_memory EXPORT __user_initial_stackheap __user_initial_stackheap
LDR R0, = Heap_Mem LDR R1, =(Stack_Mem + USR_Stack_Size) LDR R2, = (Heap_Mem + Heap_Size) LDR R3, = Stack_Mem BX LR ENDIF
END
это стартап с установкой частоты CODE /* Enables the 48MHz USB Clock UDPCK and System Peripheral USB Clock */ AT91C_BASE_PMC->PMC_SCER = AT91C_PMC_PCK |AT91C_PMC_UDP; AT91C_BASE_AIC->AIC_IDCR=AT91C_ALL_INT; //zapr int AT91C_BASE_AIC->AIC_ICCR=AT91C_ALL_INT; //sbros int AT91C_BASE_AIC->AIC_EOICR=0xF1F1F1F1;
/* Global USB Interrupt: Mode and Vector with Highest Priority and Enable */ AT91C_BASE_AIC->AIC_SMR[AT91C_ID_UDP] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL |0; AT91C_BASE_AIC->AIC_SVR[AT91C_ID_UDP] = (unsigned long) USB_ISR; AT91C_BASE_AIC->AIC_IDCR=AT91C_ALL_INT; //zapr int AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_UDP);
AT91C_BASE_UDP->UDP_GLBSTATE=0; AT91C_BASE_UDP->UDP_ICR=AT91C_UDP_CLEAR_INT; AT91C_BASE_UDP->UDP_RSTEP=AT91C_UDP_ALL_EP; AT91C_BASE_UDP->UDP_IDR = AT91C_UDP_ALL_INT | AT91C_UDP_ALL_EP; AT91C_BASE_UDP->UDP_IER = AT91C_UDP_ALL_INT | AT91C_UDP_EPINT0; AT91C_BASE_UDP->UDP_CSR[0] = (AT91C_UDP_EPTYPE_CTRL | AT91C_UDP_EPEDS); AT91C_BASE_AIC->AIC_IECR = 0x0000FFFF;
это начальная инициализация UDP CODE void USB_ISR (void) __irq { DWORD isr, csr, bkm, n; while (isr = pUDP->UDP_ISR) {
; /* End of Bus Reset Interrupt */ if (isr & AT91C_UDP_ENDBUSRES) { AT91C_BASE_UDP -> UDP_IDR = AT91C_UDP_ALL_INT | AT91C_UDP_ALL_EP; //Запрещаем все прерывания AT91C_BASE_UDP -> UDP_IER = AT91C_UDP_ALL_INT | AT91C_UDP_EPINT0; //Разрешить прерывание от 0 while ((pUDP->UDP_CSR[0]&(AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL))!=(AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL)) { AT91C_BASE_UDP->UDP_CSR[0] = AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL; } AT91C_BASE_UDP->UDP_ICR = AT91C_UDP_ENDBUSRES; }
/* USB Suspend Interrupt */ if (isr & AT91C_UDP_RXSUSP) { USB_Suspend(); #if USB_SUSPEND_EVENT USB_Suspend_Event(); #endif pUDP->UDP_ICR = AT91C_UDP_RXSUSP; }
/* USB Resume Interrupt */ if (isr & AT91C_UDP_RXRSM) { USB_Resume(); #if USB_RESUME_EVENT USB_Resume_Event(); #endif pUDP->UDP_ICR = AT91C_UDP_RXRSM; }
/* External Resume Interrupt */ if (isr & AT91C_UDP_EXTRSM) { USB_WakeUp(); #if USB_WAKEUP_EVENT USB_WakeUp_Event(); #endif pUDP->UDP_ICR = AT91C_UDP_EXTRSM; }
/* Start of Frame Interrupt */ if (isr & AT91C_UDP_SOFINT) { #if USB_SOF_EVENT USB_SOF_Event(); #endif pUDP->UDP_ICR = AT91C_UDP_SOFINT; }
/* Endpoint Interrupts */ for (n = 0; n < USB_EP_NUM; n++) { if (isr & (1 << n)) { //ВОТ СЮДА ПРОГРАММА НИКОГДА НЕ ПОПАДАЕТ!!!!!(((((
csr = pUDP->UDP_CSR[n];
/* Setup Packet Received Interrupt */ if (csr & AT91C_UDP_RXSETUP) { if (USB_P_EP[n]) { USB_P_EP[n](USB_EVT_SETUP); } /* Setup Flag is already cleared in USB_DirCtrlEP */ /* pUDP->UDP_CSR[n] &= ~AT91C_UDP_RXSETUP; */ }
/* Data Packet Received Interrupt */ bkm = RX_DATA_BK[RxDataBank[n]]; if (csr & bkm) { if (USB_P_EP[n]) { USB_P_EP[n](USB_EVT_OUT); } pUDP->UDP_CSR[n] &= ~bkm; if (DualBankEP & (1 << n)) { RxDataBank[n] ^= 1; } }
/* Data Packet Sent Interrupt */ if (csr & AT91C_UDP_TXCOMP) { // pUDP->UDP_CSR[n] &= ~AT91C_UDP_TXCOMP; if (TxDataBank[n]) { pUDP->UDP_CSR[n] |= AT91C_UDP_TXPKTRDY; TxDataBank[n] = 0; } if (USB_P_EP[n]) { USB_P_EP[n](USB_EVT_IN); } pUDP->UDP_CSR[n] &= ~AT91C_UDP_TXCOMP; }
/* STALL Packet Sent Interrupt */ if (csr & AT91C_UDP_STALLSENT) { if ((csr & AT91C_UDP_EPTYPE) == AT91C_UDP_EPTYPE_CTRL) { if (USB_P_EP[n]) { USB_P_EP[n](USB_EVT_IN_STALL); /* USB_P_EP[n](USB_EVT_OUT_STALL); */ } } pUDP->UDP_CSR[n] &= ~AT91C_UDP_STALLSENT; }
} }
}
*AT91C_AIC_EOICR = 0xF1F1F1F1; /* End of Interrupt */ } это обработчик прерывания собсна. я понимаю, что у многих результат труда это комерческая тайна, но если есть возможность выложите всёже кусок схемы сопряжения с USB разъёмом и PLL фильтр.
|
|
|
|
Сообщений в этой теме
e0000 USB своими руками для sam7x256 Jan 28 2011, 08:54 kovigor Цитата(e0000 @ Jan 28 2011, 11:54) потому... Jan 28 2011, 09:09 e0000 Цитата(kovigor @ Jan 28 2011, 11:09) 1, 2... Jan 28 2011, 09:41  kovigor 1, 2, 3. А вы пробовали разобраться с примерами ? ... Jan 28 2011, 10:04   e0000 Цитата(kovigor @ Jan 28 2011, 12:04) Чтоб... Jan 28 2011, 10:10    kovigor Цитата(e0000 @ Jan 28 2011, 13:10) Спасиб... Jan 28 2011, 10:13     e0000 В принцияпе со стартом самого UDP разобрался.
Оста... Jan 28 2011, 12:21      kovigor Цитата(e0000 @ Jan 28 2011, 15:21) В прин... Jan 28 2011, 12:38       e0000 Цитата(kovigor @ Jan 28 2011, 14:38) Поче... Jan 28 2011, 13:32        kovigor Цитата(e0000 @ Jan 28 2011, 17:32) Правил... Jan 28 2011, 13:38        aaarrr Цитата(e0000 @ Jan 28 2011, 16:32) Я так ... Jan 28 2011, 20:40         e0000 Цитата(aaarrr @ Jan 28 2011, 22:40) Такти... Jan 29 2011, 12:18          aaarrr Цитата(e0000 @ Jan 29 2011, 15:18) 1. ... Jan 29 2011, 12:33 e0000 Продолжение глупых вопросов
У меня ситуация след... Jan 29 2011, 17:46 aaarrr Цитата(e0000 @ Jan 29 2011, 20:46) У меня... Jan 29 2011, 17:51 Chameleon Сброс обязательно будет не один. При подключении у... Jan 31 2011, 12:11 kichnamid Здравствуйте,
а не встречались с такой проблеммой?... Feb 14 2011, 11:48 e0000 Сталкнулся с той-же проблемой...
Приходят только R... Feb 15 2011, 14:55 e0000 Возврат к "только процессор на порту" ре... Feb 15 2011, 17:21 kichnamid странно. у меня устройство запитывается от внешнег... Feb 16 2011, 13:18 e0000 Прошу прощения у всезнаеющего All-a, но я уже не з... Feb 16 2011, 18:46  kovigor Цитата(e0000 @ Feb 16 2011, 21:46) Прошу ... Feb 16 2011, 18:52   e0000 Цитата(kovigor @ Feb 16 2011, 20:52) Что,... Feb 17 2011, 07:53    kovigor Цитата(e0000 @ Feb 17 2011, 10:53) Что за... Feb 17 2011, 09:13 e0000 BusHound
Скачал, поставил...
SETUP пакетов именно ... Feb 17 2011, 10:19 kovigor Цитата(e0000 @ Feb 17 2011, 13:19) К нему... Feb 17 2011, 13:12  e0000 Цитата(kovigor @ Feb 17 2011, 15:12) Есть... Feb 17 2011, 17:42   kovigor Цитата(e0000 @ Feb 17 2011, 20:42) Ситуац... Feb 17 2011, 21:13 shrek У меня сначала знакомства с USB "своими рукам... Feb 21 2011, 08:33 kichnamid "После сброса устройство надо заново проиници... Feb 24 2011, 07:59 shrek Цитата"После сброса устройство надо заново пр... Feb 25 2011, 11:27 kichnamid к моей плате подходят только пару-тройку ENBUSRES,... Mar 1 2011, 11:44 aaarrr Цитата(kichnamid @ Mar 1 2011, 14:44) атм... Mar 1 2011, 15:07 shrek Цитатак моей плате подходят только пару-тройку ENB... Mar 1 2011, 16:25 DmitryM Цитата(shrek @ Mar 1 2011, 19:25) ...
Не... Mar 2 2011, 13:19 shrek Цитатая понимаю, что у многих результат труда это ... Mar 4 2011, 08:26 sergeeff Совет. Мы купили как-то отладочную плату, где во в... Mar 4 2011, 09:04 kichnamid перепроверил схему, сверил с предлагаемой Atmel... Mar 15 2011, 11:51 shrek Вашу схему в студию! Mar 15 2011, 14:39 kichnamid вот кусок схемы относительно интерфейса USB Mar 20 2011, 13:23 aaarrr А где, простите, земля у USB? И зачем эта непонятн... Mar 20 2011, 14:44 kichnamid извиняюсь, забыл дорисовать.
РЦ-цепочка у 5В - эт... Mar 21 2011, 18:24 shrek Под "USB" что в схеме понимается? Земля ... Mar 22 2011, 14:47 kichnamid земля на моей плате общая для всего. под USB поним... Mar 22 2011, 17:32 e0000 Доброе время суток, всезнающий All!
Возвращаюс... Aug 29 2011, 12:05 kovigor Цитата(e0000 @ Aug 29 2011, 15:05) В цело... Aug 29 2011, 13:42 e0000 в том-то и дело, что прерывание не возникает
Но ... Aug 29 2011, 14:47 kovigor Цитата(e0000 @ Aug 29 2011, 17:47) Но есл... Aug 29 2011, 14:58 e0000 - Очень прошу не распространять!
умрет вместе ... Aug 29 2011, 17:42 shrek А у меня наоборот проблема с отправкой пакета разм... Aug 31 2011, 05:29 e0000 Хм....
если у нас прилетает пакет равный размеру к... Aug 31 2011, 11:30 shrek нулевой по идее прилетит последним в кадре если ра... Sep 1 2011, 05:54 e0000 но у меня не прилетает "нулевой пакет" е... Sep 1 2011, 11:32 shrek хотя в принципе в моем обработчике прерываний как ... Sep 2 2011, 05:39 e0000 Ситуация какова...
Я не знаю сколько мне прилетит ... Sep 2 2011, 07:48 shrek Вообще для того чтобы узнать сколько байт прилетел... Sep 6 2011, 11:47 e0000 Обнаружил следующее:
1. Если пакет меньше 64 байта... Sep 8 2011, 14:01 shrek а если 65 байт?)
у некоторых программ для работы с... Sep 9 2011, 11:32 e0000 при 65 принимаю только 64, а последний не вызывает... Sep 12 2011, 09:34 shrek Странно...
А вы прерывания сбрасываете?
А попутно ... Sep 14 2011, 11:18 e0000 Нет не возникает...
Переделали протокол. Сделали е... Sep 16 2011, 06:26 shrek ЦитатаТеперь с передатчиком. Надо ли отправлять ну... Sep 19 2011, 08:02 shrek Недавно кит вернули AT91SAM7A3-EK я на нем запусти... Sep 20 2011, 07:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|