Jump to content

hamidkavianathar

Members
  • Posts

    1
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

hamidkavianathar's Achievements

Newbie

Newbie (1/14)

  1. Hello I have built a usb rubber with at32uc3b1256. but it does not work. when I plug it in to my computer, I receive this error :"A request for the USB device descriptor failed". could anyone tell me, what I should do? thanks. I've used a 12 MHz crystal. this is the conf_clock file: /** * \file * * \brief Chip-specific system clock manager configuration * * Copyright (c) 2011 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #ifndef CONF_CLOCK_H_INCLUDED #define CONF_CLOCK_H_INCLUDED // ===== System Clock Source Options //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RCSYS //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_OSC0 #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL0 // ===== PLL0 Options #define CONFIG_PLL0_SOURCE PLL_SRC_OSC0 //#define CONFIG_PLL0_SOURCE PLL_SRC_OSC1 #define CONFIG_PLL0_MUL 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ #define CONFIG_PLL0_DIV 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ // ===== PLL1 Options #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 //#define CONFIG_PLL1_SOURCE PLL_SRC_OSC1 #define CONFIG_PLL1_MUL 8 /* Fpll = (Fclk * PLL_mul) / PLL_div */ #define CONFIG_PLL1_DIV 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ // ===== System Clock Bus Division Options //#define CONFIG_SYSCLK_CPU_DIV 1 /* Fcpu = Fsys/(2 ^ CPU_div) */ //#define CONFIG_SYSCLK_PBA_DIV 1 /* Fpba = Fsys/(2 ^ PBA_div) */ //#define CONFIG_SYSCLK_PBB_DIV 1 /* Fpbb = Fsys/(2 ^ PBB_div) */ // ===== Peripheral Clock Management Options //#define CONFIG_SYSCLK_INIT_CPUMASK ((1 << SYSCLK_SYSTIMER) | (1 << SYSCLK_OCD)) //#define CONFIG_SYSCLK_INIT_PBAMASK (1 << SYSCLK_USART0) //#define CONFIG_SYSCLK_INIT_PBBMASK (1 << SYSCLK_HMATRIX) //#define CONFIG_SYSCLK_INIT_HSBMASK (1 << SYSCLK_MDMA_HSB) // ===== USB Clock Source Options //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_OSC0 //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 #define CONFIG_USBCLK_DIV 1 /* Fusb = Fsys/(2 ^ USB_div) */ #endif /* CONF_CLOCK_H_INCLUDED */ and this is the conf_usb.h file: /** * \file * * \brief USB configuration file * * Copyright (c) 2009 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #ifndef _CONF_USB_H_ #define _CONF_USB_H_ #include "compiler.h" /** * USB Device Configuration * @{ */ //! Device definition (mandatory) #define USB_DEVICE_VENDOR_ID USB_VID_ATMEL #define USB_DEVICE_PRODUCT_ID USB_PID_ATMEL_AVR_HIDKEYBOARD #define USB_DEVICE_MAJOR_VERSION 1 #define USB_DEVICE_MINOR_VERSION 0 #define USB_DEVICE_POWER 100 // Consumption on Vbus line (mA) #define USB_DEVICE_ATTR \ (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_SELF_POWERED) // (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_BUS_POWERED) // (USB_CONFIG_ATTR_SELF_POWERED) // (USB_CONFIG_ATTR_BUS_POWERED) //! USB Device string definitions (Optional) #define USB_DEVICE_MANUFACTURE_NAME "ALVAND" #define USB_DEVICE_PRODUCT_NAME "HAMEDAN" // #define USB_DEVICE_SERIAL_NAME "12...EF" /** * Device speeds support * @{ */ //! To define a Low speed device //#define USB_DEVICE_LOW_SPEED //! To authorize the High speed #if (UC3A3||UC3A4) //#define USB_DEVICE_HS_SUPPORT #endif //@} /** * USB Device Callbacks definitions (Optional) * @{ */ #define UDC_VBUS_EVENT(b_vbus_high) main_vbus_action(b_vbus_high) #define UDC_SOF_EVENT() main_sof_action() #define UDC_SUSPEND_EVENT() main_suspend_action() #define UDC_RESUME_EVENT() main_resume_action() //! Mandatory when USB_DEVICE_ATTR authorizes remote wakeup feature #define UDC_REMOTEWAKEUP_ENABLE() main_remotewakeup_enable() #define UDC_REMOTEWAKEUP_DISABLE() main_remotewakeup_disable() //! When a extra string descriptor must be supported //! other than manufacturer, product and serial string // #define UDC_GET_EXTRA_STRING() //@} //@} /** * USB Interface Configuration * @{ */ /** * Configuration of HID Keyboard interface * @{ */ //! Interface callback definition #define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable() #define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable() #define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value) //@} //@} /** * USB Device Driver Configuration * @{ */ //@} //! The includes of classes and other headers must be done at the end of this file to avoid compile error #include "udi_hid_kbd_conf.h" #include "main.h" #include "ui.h" #endif // _CONF_USB_H_ and this is my main.c file: /** * \file * * \brief Main functions for Keyboard example * * Copyright (c) 2009-2011 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #include "compiler.h" #include "preprocessor.h" #include "board.h" #include "gpio.h" #include "sysclk.h" #include "sleepmgr.h" #include "conf_usb.h" #include "udc.h" #include "udd.h" #include "ui.h" //volatile static bool main_b_kbd_enable = false; volatile static bool main_b_kbd_enable = true; /*! \brief Main function. Execution starts here. */ int main(void) { irq_initialize_vectors(); cpu_irq_enable(); // Initialize the sleep manager sleepmgr_init(); sysclk_init(); board_init(); ui_init(); ui_powerdown(); ui_wakeup_enable(); volatile uint32_t freq = sysclk_get_cpu_hz(); freq ++; LED_Toggle(LED3); // Start USB stack to authorize VBus monitoring udc_start(); //udc_attach(); if (!udc_include_vbus_monitoring()) { // VBUS monitoring is not available on this product // thereby VBUS has to be considered as present main_vbus_action(true); } // The main loop manages only the power mode // because the USB management is done by interrupt while (true) { #ifdef USB_DEVICE_LOW_SPEED // No USB "Keep a live" interrupt available in low speed // to scan keyboard interface then use main loop if (main_b_kbd_enable) { static uint16_t virtual_sof_sub = 0; if (700 == virtual_sof_sub++) { virtual_sof_sub = 0; static uint16_t virtual_sof = 0; ui_process(virtual_sof++); } } #else sleepmgr_enter_sleep(); #endif } } void main_vbus_action(bool b_high) { //if (b_high) { // Attach USB Device udc_attach(); //} else { // VBUS not present //udc_detach(); //} } void main_suspend_action(void) { ui_powerdown(); } void main_resume_action(void) { ui_wakeup(); } void main_sof_action(void) { if (!main_b_kbd_enable) return; ui_process(udd_get_frame_number()); } void main_remotewakeup_enable(void) { ui_wakeup_enable(); } void main_remotewakeup_disable(void) { ui_wakeup_disable(); } bool main_kbd_enable(void) { main_b_kbd_enable = true; return true; } void main_kbd_disable(void) { main_b_kbd_enable = false; } /** * \mainpage ASF USB Device HID Keyboard * * \section intro Introduction * This example shows how to implement a USB Device HID Keyboard * on Atmel MCU with USB module. * The application note AVR4903 provides information about this implementation. * * \section startup Startup * The example uses the buttons or sensors available on the board * to simulate a standard keyboard. * After loading firmware, connect the board (EVKxx,XPlain,...) to the USB Host. * When connected to a USB host system this application provides a keyboard application * in the Unix/Mac/Windows operating systems. * This example uses the native HID driver for these operating systems. * * \copydoc UI * * \section example About example * * The example uses the following module groups: * - Basic modules: * Startup, board, clock, interrupt, power management * - USB Device stack and HID modules: * <br>services/usb/ * <br>services/usb/udc/ * <br>services/usb/class/hid/ * <br>services/usb/class/hid/keyboard/ * - Specific implementation: * - main.c, * <br>initializes clock * <br>initializes interrupt * <br>manages UI * - specific implementation for each target "./examples/product_board/": * - conf_foo.h configuration of each module * - ui.c implement of user's interface (buttons, leds) */
×
×
  • Create New...