Shopping Cart


Your Cart is currently empty.

Home Produkten
Digit-LS

De Digit-LS is een programmeerbare multi-IO interface die geprogrammeerd en bestuurd kan worden via uw PC middels een USB-verbinding. De Digit-LS is gebaseerd op de Microchip PIC 18F4550 microcontroller waardoor u gebruik kunt maken van alle functionaliteit van deze controller. De Digit-LS wordt geleverd met een ingebouwd besturingssysteem dat alle USB-communicatie voor u afhandelt. Het enige wat u moet doen is uw gewenste USB-configuratie uploaden met de bijbehorende code die de gegevens afhandelt die worden ontvangen en verzonden via de USB-verbinding. Bovendien is het mogelijk om code continu uit te laten voeren door het systeem voor bijvoorbeeld real-time monitoring. U heeft geen programmeerapparatuur nodig, de Digit-LS kan zichzelf programmeren met de software die beschikbaar is op onze website.

Demonstratievideo

Onderstaande video (in het Engels) toont middels de voorbeeldsoftware (verkrijgbaar via onze website) hoe de interactie tussen de Digit-LS en de computer verloopt. Deze video kunt u gebruiken om ideeën op te doen voor het ontwikkelen van uw eigen toepassingen.

 

 

 

Specificaties

  • USB connector
  • Indicatielampjes voor voeding en status (LEDs)
  • "Reset" and "Load" drukknoppen
  • 30 digitale input / output pins
  • 12-kanaals 10-bit A/D omzetter
  • 2 Capture/Compare/PWM modules
  • Serial port (USART) met afzonderlijke connector op module
  • SPI/I2C-poort
  • 4 timer modules
  • 16 kB programmageheugen beschikbaar voor eigen configuratie-software
  • 1 kB SRAM datageheugen beschikbaar
  • 256 bytes EEPROM datageheugen beschikbaar met eenvoudige toegang via API
  • Automatische afhandeling van het USB protocol, programmeren van callback functies voor USB events is voldoende
  • Permanent uitvoeren van eigen software op module
  • Stroomvoorziening via USB of extern
  • Drivers beschikbaar voor Windows XP 32-bit, Windows Vista 32-bit en Windows 7 32-bit.
  • Linux compatibility via libusb

USB communicatie met een Digit-LS

Om te beginnen met het besturen van een Digit-LS, dient u de volgende stappen te realiseren: 

  • Ontwikkel een Custom Configuration voor de Digit-LS, dit is een stuk programmacode waarin u aangeeft hoe de USB-Interface er uit moet zien en de code aanlevert die uitgevoerd moet worden om de data te verwerken die via de USB-verbinding wordt ontvangen en verzonden.
  • Programmeer de Digit-LS met deze code via de USB-kabel en de programmeersoftware dlscoder.exe (beschikbaar via onze website).

Om vanuit de PC te communiceren met de Digit-LS, ontwikkelt u code die de volgende stappen uitvoert:

  • Bepaal de "device name" die door het Plug-and-Play-systeem is toegewezen aan uw Digit-LS
  • Open een file handle naar het endpoint van de Digit-LS waarmee u wilt communiceren
  • Schrijf of lees data net zoals u dat naar of van een file zou doen
  • Sluit de file handle wanneer de communicatie gereed is

Onderstaande programmaregels geven een indruk hoe dit in zijn werk gaat. Merk op dat programmacode met een lichtblauwe achtergrond de code is die op de Digit-LS draait terwijl programmacode met een lichtgroene achtergrond op de PC actief is.

Voor de Digit-LS dient u een USB-Interface layout te definiëren tezamen met callback-functies voor het afhandelen van USB-events. Een eenvoudige layout ziet er ongeveer als volgt uit (enkele details weggelaten ten behoeve van het overzicht):

rom EndPointInfoT    Info_EndPointIntf1[] = {
    "LEDS",                    /* Endpoint Name              */
    EP_LEDS_Init,              /* Init Handler               */
    EP_LEDS_Transaction,       /* Transaction Handler        */
    EP_LEDS_Exit,              /* Exit Handler               */
    &EP_LEDS_Buf,              /* Pointer to OUT Buffer      */
    NULL,                      /* Pointer to IN Buffer       */
   FALSE,                     /* Use MarioMatic             */
{
...
}
}

Om het endpoint uit deze layout te kunnen benaderen, heeft u een file handle nodig. Deze kunt u openen door de device name die is toegekend door Windows tijdens het aansluiten van de Digit-LS, en de naam van het betreffende endpoint samen te voegen (net zoals bijvoorbeeld de naam van een directory en de naam van een bestand in die directory). Het totale pad krijgt dan deze vorm:

<device name>\<endpoint name>

In dit voorbeeld zou het er ongeveer als volg uitzien:

\\?\usb#vid_04d8&pid_fd7c#7&350cd513&0&2#{22d34da1-6306-41d8-9377-5c00b735c7be}\LEDS

(Het eerste gedeelte, de "device name", zal waarschijnlijk enigszins afwijken in uw situatie). In het programma dat op de PC draait, haalt u eerst de device name op middels een macro dat beschikbaar is in de header file dlsfdevp.h. Voeg hier de naam van het endpoint aan toe. Tenslotte gebruikt u CreateFile() om een file handle naar dit endpoint te openen. De programmaregels zullen er ongeveer zo uit komen te zien:

/* Get device path */
if (!FIND_DEV_PATH ((LPGUID)&GUID_CLASS_DIGITLS_1_0, NULL, -1,
FullName, sizeof (FullName))) {
    fprintf (stderr, "No Digit-LS found.\n");
    exit (-10);
}
wcscat (FullName, L"\\LEDS");    /* Open device */
hDevice = CreateFile(FullName,
                GENERIC_WRITE,
                0,
                NULL,
                OPEN_EXISTING,
                0,
                NULL );

Middels deze file handle kunt u data verzenden naar het endpoint middels WriteFile(), bijvoorbeeld met de onderstaande code.

UCHAR WriteBytes[8];
WriteBytes[0] = 0;
WriteBytes[0] = 0;
WriteBytes[0] = 1;
WriteBytes[0] = 0;
WriteBytes[0] = 1;
WriteBytes[0] = 0;
WriteBytes[0] = 1;
WriteBytes[0] = 0;

WriteFile(hDevice,
        WriteBytes,
        nrWriteBytes,
        &nrWriteBytes,
        NULL);

Zodra deze data is ontvangen in de Digit-LS wordt de transactie-callbackfunctie aangeroepen die u heeft gedefinieerd in de interface layout, in dit geval EP_LEDS_Transaction(). Stel dat u 8 LEDS heeft aangesloten op de output pins van PORT D op de Digit-LS, dan zullen de onderstaande programmaregels deze LEDs in- of uitschakelen afhankelijk van de data die is verzonden vanaf de PC.

int EP1Transaction(byte EPno, PacketT TransType)
{
   PORTDbits.RD0 = (EP01Buf._byte[0] != 0);
   PORTDbits.RD1 = (EP01Buf._byte[1] != 0);
   PORTDbits.RD2 = (EP01Buf._byte[2] != 0);
   PORTDbits.RD3 = (EP01Buf._byte[3] != 0);
   PORTDbits.RD4 = (EP01Buf._byte[4] != 0);
   PORTDbits.RD5 = (EP01Buf._byte[5] != 0);
   PORTDbits.RD6 = (EP01Buf._byte[6] != 0);
   PORTDbits.RD7 = (EP01Buf._byte[7] != 0);
   APICalls->EPSetOUTReady (EPno, DTS_TOGGLE);
   return 1;
}

De data die vanaf de PC verzonden is, wordt geplaatst in de buffer zoals gedefinieerd in de Interface layout, in dit geval EP01Buf[]. Voor dit endpoint is de buffer 8 bytes groot. Voor ieder byte in de buffer kijkt het programma of deze al dan niet 0 is. Vervolgens wordt de bijbehorende output pin laag of hoog gemaakt zodat de aangesloten LED aan of uit gaat. Tenslotte wordt de API-functie EPSetOUTReady() aangeroepen om de Digit-LS te laten weten dat de verwerking van de data gereed is.

Zodra u klaar bent met het verzenden van data naar de Digit-LS, dient u de file handle weer te sluiten zoals hieronder weergegeven:

CloseHandle (hDevice);

Voor meer informatie over hoe de Digit-LS aangestuurd kan worden, raadpleeg de (Engelse) Digit-LS documentatie.

De Digit-LS is beschikbaar als kant-en-klaar product en als zelfbouwpakket via onze webshop. Als u voor het eerst met een Digit-LS gaat ontwikkelen, raden we aan om een starterkit aan te schaffen waarin ook de MODRC1 module onderdeel van uitmaakt. Hierin zitten een aantal elektronische componenten waarmee u op een eenvoudige manier vertrouwd kunt raken met het aansturen van elektronica via de computer. Voorbeelden en broncode zijn verkrijgbaar via onze website.

Laatste aanpassing op dinsdag 13 april 2010 15:30
 
Copyright Sofrides IO