www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

XMEGA usb CDC <> UART težave

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marko
Član
Član



Pridružen-a: Sre 07 Jan 2004 15:14
Prispevkov: 755
Aktiv.: 3.18

PrispevekObjavljeno: Sre Jan 07, 2015 10:19 pm    Naslov sporočila:  XMEGA usb CDC <> UART težave Odgovori s citatom

Živjo,

prvič se srečujem z XMEGO in ASF frameworkom (groza) in že imam težave.
RX callback, ki ga naj bi se klical vsakič ko je kaj na vhodu (RX notify), se mi preneha klicati, če v terminal pošljem več znakov hitro. Če pošiljam enega po enega s nekaj 100 ms razmika je ok, če pa prehitro, pa se RX neha izvajati. Glavna zanka v main() sicer teče normalno. V RX callbacku niti ni treba, da je kaj hudo potratnega. Tudi, če se samo vračam z return, ne dela.

Tole je moj callback:

Koda:

void usb_rx(uint8_t port)
{   
   volatile uint8_t ch = 0;
   if (udi_cdc_is_rx_ready())
   {
      ch = udi_cdc_getc();
      udi_cdc_putc(ch);
      
   }
   return;
}




V conf_usb.h pa imam tole:
Koda:

#define  UDI_CDC_ENABLE_EXT(port)    stdio_usb_enable()
#define  UDI_CDC_DISABLE_EXT(port)   stdio_usb_disable()
#define  UDI_CDC_RX_NOTIFY(port)     usb_rx(port)


Če berem in izpisujem v main(), potem dela ok, takole:

Koda:

   while (true)
   {
      if (udi_cdc_is_rx_ready())
      {
         value = udi_cdc_getc();
         udi_cdc_putc(value);
      }
   }


Uporabljam ASF 3.20.1 in USB Device (service) - cdc_stdio

Za kakršenkoli hint se že v naprej lepo zahvaljujem.

_________________
Mondays aren't so bad, it's your job that sucks
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 10 dni


Powered by phpBB © 2001, 2005 phpBB Group