Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Kuroro

Pages: [1]
1
NXPTM M522XX, KINETIS and i.MX RT / IP V6 on kinetis
« on: April 22, 2011, 08:35:54 AM »
Hi mark

I saw that the kinetis version of utasker support the IP v6, i do some test on the tower kit and i was able to ping the board but neither the web serer nor the ftp was available.
Did these function was currently supported by utasker for kinetis on IPv6 ?

Thank's
Best regard

2
Hi mark

I would like to know if the beta version of utasker for kinetis currently include usb masse storage to SD card ?, an also if utasker currently use the esdhc port available on the kinetis with utfat ?

Thank's
Best regard

3
NXPTM M522XX, KINETIS and i.MX RT / Simulator and SD card
« on: October 22, 2010, 11:11:25 AM »
Hi marc

did It's possible to use ufat and sd card on the simulator ?
This is not specified in the ufat documentation

Thank's


4
NXPTM M522XX, KINETIS and i.MX RT / Generate file problem
« on: May 31, 2010, 08:59:08 AM »
Hi mark

I tried to use the generate file to download a file stored in SD card, to do that i use the same technique that you use in the original project.
So i split my file in chunk of 280 byte until i reach the EOF.

That work fine for small file < 10ko but when i tried to download bigger file the download process stop to a random size, like if it lost the communication with the utasker webserver.

In my project I used socket, so it's possible that these socket crash the generate file process ?

Thank's

5
utFAT / Ufat use
« on: May 04, 2010, 10:51:16 AM »
Hi mark

I have a strange behaviour wise ufat, i try to write the same file many time ,each time i had new data to previous one.
The problem is that it look that the last write command was not executed, for example if want to write 4 time the same string i need to execute 5 time the write command.

Here's the code I used, did I done something wrong ?

I call multi_write()

Code: [Select]
UTDIRECTORY *ptr_utDirectory = 0;
char Init_Tmp[300];

void Write_XML_Data(char* Nom_Fichier)
{
UTFILE utFile;
char ID[] = "test.txt";
char Version[] = "1.0";
char Type[] = "THL";
char First_Use = 0;
char *Last_Entry = 0;
char File_Open = 0;


if (ptr_utDirectory == 0)
{
    ptr_utDirectory = utAllocateDirectory(DISK_D, UT_PATH_LENGTH); // allocate a directory for use by this module associated with D: and reserve its path name string length
    }
    if (!(ptr_utDirectory->ucDirectoryFlags & UTDIR_VALID)) // directory not valid
    {       
    if (utOpenDirectory(0, ptr_utDirectory) != UTFAT_SUCCESS) // open the root directory
   
        fnDebugMsg("No SD-Card ready\r\n");
        return;
        }
    }


    utFile.ptr_utDirObject = ptr_utDirectory;


if (utOpenFile(Nom_Fichier, &utFile, (UTFAT_OPEN_FOR_READ | UTFAT_OPEN_FOR_WRITE | UTFAT_CREATE)) != UTFAT_PATH_IS_FILE) // change the directory location
fnDebugMsg("Create file failed\r\n");



if(utFile.ulFileSize == 0)
First_Use = 1;


if(First_Use == 1)
{
Last_Entry = uStrcpy(Init_Tmp,XML_Header);
Last_Entry = uStrcpy(Last_Entry,"<head Version=\"");
Last_Entry = uStrcpy(Last_Entry,Version);
Last_Entry = uStrcpy(Last_Entry,"\" Type=\"");
Last_Entry = uStrcpy(Last_Entry,Type);
Last_Entry = uStrcpy(Last_Entry,"\" Id=\"");
Last_Entry = uStrcpy(Last_Entry,ID);
Last_Entry = uStrcpy(Last_Entry,"\">\n");
}
else
{
utSeek(&utFile, 0, UTFAT_SEEK_END);
 
Last_Entry = uStrcpy(Init_Tmp,"\n<Data>");
Last_Entry = uStrcpy(Last_Entry,"\n\t<Ts>");
Last_Entry = uStrcpy(Last_Entry,"1272962844");
Last_Entry = uStrcpy(Last_Entry,"</Ts>");
Last_Entry = uStrcpy(Last_Entry,"\n\t<Tc_1>");
Last_Entry = uStrcpy(Last_Entry,"32.2");
Last_Entry = uStrcpy(Last_Entry,"</Tc_1>");
Last_Entry = uStrcpy(Last_Entry,"\n\t<Tc_2>");
Last_Entry = uStrcpy(Last_Entry,"24.2");
Last_Entry = uStrcpy(Last_Entry,"</Tc_2>");
Last_Entry = uStrcpy(Last_Entry,"\n</Data>");
}

if(utWriteFile(&utFile,(unsigned char*)Init_Tmp,uStrlen(Init_Tmp)) != UTFAT_SUCCESS)
fnDebugMsg("Write failed\r\n");

utCloseFile(&utFile);

}

void multi_write(void)
{
Write_XML_Data("test1");
Write_XML_Data("test1");
Write_XML_Data("test1");
Write_XML_Data("test1");
Write_XML_Data("test1");
}

The result obtained :

<?xml version="1.0" encoding="ISO-8859-1"?>
<head Version="1.0" Type="THL" Id="test.txt">

<Data>
   <Ts>1272962844</Ts>
   <Tc_1>32.2</Tc_1>
   <Tc_2>24.2</Tc_2>
</Data>
<Data>
   <Ts>1272962844</Ts>
   <Tc_1>32.2</Tc_1>
   <Tc_2>24.2</Tc_2>
</Data>
<Data>
   <Ts>1272962844</Ts>
   <Tc_1>32.2</Tc_1>
   <Tc_2>24.2</Tc_2>
</Data>
<Data>

6
NXPTM M522XX, KINETIS and i.MX RT / ethernet direct connection problem
« on: February 24, 2010, 04:06:00 PM »
Hi

I actually try the utasker demo with the web server, when i plug the board and my computer to a switch everything work's fine, the ftp and the web server.
But when i connect directly the board to the computer with a crossover cable the connection is unstable and some time i lost the connection when i tried to access to the web server.

When i look what happen with wireshark it seem that some tcp segment was lost.

Did they have some special option to set for a direct connection ?

Thank's

7
utFAT / Initialisation failure
« on: February 23, 2010, 05:19:39 PM »
Hi

I'm trying to use utFAT with the demo provided with utasker.

But during the card initialisation the command ACMD41 return an error, i read the SDRAM datasheet but i don't see why this command could give an error.
As this state of the initialisation the voltage and the card version was already checked.
The problem could be caused by an incompatible card ?


Thank's 

8
NXPTM M522XX, KINETIS and i.MX RT / Utasker interrupt handle
« on: July 23, 2008, 08:39:32 AM »
Hi mark

The idea is to sample a data every 10µs, when it's done in the scan complete interupt i would like to store the data and drive an output.

So my question is :

- Where is the interupt handle called when a scan is complet ?
I think's is _ADC_convertA_interrupt bu I'm not certain.

Code: [Select]
adc_setup.int_type = ADC_INTERRUPT;                                  // identifier when configuring
    adc_setup.int_adc_bit = 7;                                        // ADC channel 7
    adc_setup.int_adc_mode = (ADC_CONFIGURE_ADC | ADC_CONFIGURE_CHANNEL | ADC_SEQUENTIAL_MODE | ADC_SINGLE_ENDED | ADC_LOOP_MODE | ADC_START_OPERATION); // single ended configuration in loop mode
    adc_setup.int_adc_speed = (unsigned char)(BUS_CLOCK/100000);         // 100KHz sampling (must be between 100kHz and 5MHz)
    adc_setup.int_priority = CAN15_INTERRUPT_PRIORITY; // Priorité de l'interuption généré
    adc_setup.int_adc_int_type = ADC_END_OF_SCAN_INT;                    // Interuption a la fin de chaque echantillonage
    fnConfigureInterrupt((void *)&adc_setup);                            // configure and start operation
 

I do it but i'm no certain to go in the right way

Thank's mark

9
NXPTM M522XX, KINETIS and i.MX RT / SPI Crash
« on: June 30, 2008, 02:32:21 PM »
Hi mark

I tried to use the SPI and the file system too, to put the file system in the spi flash.
I got a ST 25P16 spi memory on my personal board so i use the setting included for this memory on my project and when i tried to upload a web page into the spi flash the softward crash.

I don't find where the software crash, have you any track i can explore to find why they crash ?

Thank's a lot 
 

10
NXPTM M522XX, KINETIS and i.MX RT / UART Interupt
« on: June 23, 2008, 04:11:51 PM »
Hello mark

I trie to generate an interupt on a received data but they don't work.

I configure the handler :

Code: [Select]
extern QUEUE_HANDLE fnSetRS485(unsigned char ucDriverMode, uint8 Baud_rate ,uint8 ER )
{
    TTYTABLE tInterfaceParametersRS485;                                       // table for passing information to driver
    tInterfaceParametersRS485.Channel = RS485_UART;                           // set UART channel for serial use
    tInterfaceParametersRS485.ucSpeed = Baud_rate;   // baud rate
    if(ER == RECEPTION)
    {
    tInterfaceParametersRS485.Task_to_wake = TASK_MODBUS;
    }
    tInterfaceParametersRS485.Rx_tx_sizes.RxQueueSize = MODBUS_RX_BUFFER;       // input buffer size
    tInterfaceParametersRS485.Rx_tx_sizes.TxQueueSize = MODBUS_TX_BUFFER;       // output buffer size                        // wake self when messages have been received
    tInterfaceParametersRS485.usConfig = (CHAR_8 | NO_PARITY | ONE_STOP | NO_HANDSHAKE);
    tInterfaceParametersRS485.ucMessageTerminator = '\r';

    if ((SerialPortID = fnOpen( TYPE_TTY, ucDriverMode, &tInterfaceParametersRS485)) != 0) // open or change the channel with defined configurations (initially inactive)
    {
    if(ER == RECEPTION)
    {
    fnDriver( SerialPortID, ( TX_OFF | RX_ON ), 0 );
    }
    if(ER == EMISSION)
    {
    fnDriver( SerialPortID, ( TX_ON | RX_OFF ), 0 );
   
    if(ER == (EMISSION|RECEPTION ))   
    {
    fnDriver( SerialPortID, ( TX_ON | RX_ON ), 0 );
    }
    }
    return SerialPortID;
}

And in the "TASK_MODBUS" i handle the interupt :

Code: [Select]
void fnTacheModbus(TTASKTABLE *ptrTaskTable)
{
QUEUE_HANDLE        PortIDInternal = ptrTaskTable->TaskID;           // queue ID for task input
    unsigned char       ucInputMessage[RX_BUFFER_SIZE];                  // reserve space for receiving messages
   
    while ( fnRead( PortIDInternal, ucInputMessage, HEADER_LENGTH )) // check input queue
    { 
        switch ( ucInputMessage[MSG_SOURCE_TASK] ) // switch depending on message source
        {                 
        case TIMER_EVENT:
            fnRead( PortIDInternal, ucInputMessage, ucInputMessage[MSG_CONTENT_LENGTH]); // read the complete message
            if ((TIME_OUT_FIN_TRAME == ucInputMessage[0]) || (TIME_OUT_NON_REPONSE == ucInputMessage[0]))
            {
            C_Sys_MaitreModbusSci1_Timeout(); // Lancement de la fonction utiliser pour la gestion des 2 TimeOut
            }
        break;   

        case INTERRUPT_EVENT:   
        C_Sys_ModbusSci1Reception(); // Lancement de la fonction de reception a chaque fois qu'un octet et recu
        break;
       
            default :
            break;
        }
    }
}

But the case INTERRUPT_EVENT is not activate when a data is received on the UART.

Did i forgot something ?

Thank's

11
NXPTM M522XX, KINETIS and i.MX RT / Bootloader question
« on: June 03, 2008, 03:28:06 PM »
Hi mark

I read the entire forum but i don't find a answer.

I have personalise the demo for my personal board and they work's fine, now i want to use the softeware udpate feature.

Right now when i building the project i use the M52235EVB_ROM target and it work the boot loader is not include.

If i want to use the bootloader i have juste to choose the bar_min_app_rom right ?

Or i need to do something else ?

Thank's

12
NXPTM M522XX, KINETIS and i.MX RT / Question about LCD
« on: May 22, 2008, 05:05:38 PM »
Hello I have a question about your code :

Code: [Select]
static int fnInitDisplay(int iState)
{
    // After power up the display needs to be idle for >= 30ms. This is ensured by a start up delay of the task

    if ((ucDispCount != 0) && (!fnSendDisplay())) return iState;         // return when display transmitter busy, sending next byte on the way


    if (iState > WRITE_FUNCTION_SET) {
        return iState;                                                   // LCD is busy
    }

    switch (iState) {
    case STATE_INIT:                                                     // initialise the LCD hardware once on startup
        INITIALISE_LCD_CONTROL_LINES();                                  // initialise the LCD hardware once on startup
    case STATE_INITIALISING:
        _fnWriteDisplay(0, INIT_FUNCTION_SET);                           // write function set
        uTaskerMonoTimer( OWN_TASK, T_INIT_WAIT, E_INIT_CONTINUE );      // wait at least 4,1ms the first time and 100us the second time - we do longer waits than necessayr
        break;

    case WRITE_FUNCTION_SET:
        _fnWriteDisplay(0, INIT_FUNCTION_SET);                           // repeat after at least 4,1ms
        _fnWriteDisplay(0, INIT_FUNCTION_SET_MODE);                      // set final value after another 100us (after this the LCD is in the required 4 or 8 bit mode)
        uTaskerStateChange(OWN_TASK, UTASKER_GO);                        // switch to polling mode of operation since BF (Busy Flag) is not valid
        break;

    case STATE_INIT_2:
        fnWriteDisplay(0, (INIT_FUNCTION_SET_MODE | N_BIT | F_BIT));     // 2 line mode, display on
        break;

    case STATE_INIT_3:
        fnWriteDisplay(0, DISPLAY_OFF_NO_CURSOR);
        break;

    case STATE_INIT_4:
        fnWriteDisplay(0, CLEAR_DISPLAY);
        break;


    case STATE_DISPLAY_INITIALISED:
        fnWriteDisplay(0, DISPLAY_ON_NO_CURSOR);

        // At this point the display is clear and the cursor is at the home position.
        // we inform the application that the initialisation has terminated, so that it can start using it
        fnEventMessage(LCD_PARTNER_TASK, TASK_LCD, E_LCD_INITIALISED);
        return STATE_LCD_READY;                                          // we are ready to work....

    case STATE_LCD_SENDING:
        uTaskerStateChange(OWN_TASK, UTASKER_STOP);                      // switch to event mode of operation
        fnEventMessage(LCD_PARTNER_TASK, TASK_LCD, E_LCD_READY);         // we have completed an operation for the application
        break;

    default:                                                             
        if (iState > STATE_LCD_READY) {                                  // writing a pattern
            if (--iState <= STATE_LCD_READY) {                           // last character to be written
                iState = STATE_LCD_SENDING;
            }
            fnWriteLine(ucTXDisp, 1, O_CONTROL_RS);                      // repeat the test pattern
        }
        return iState;
    }

    return (++iState);
}

How it's possible to reach the case : STATE_INIT_2

The code :
 
Code: [Select]
if (iState > WRITE_FUNCTION_SET) {
        return iState;                                                   // LCD is busy
    }

Short circuit the next line.
Could you explain to me how does it work because i don't understand yet .
Thank's

13
NXPTM M522XX, KINETIS and i.MX RT / SP7 and ADC
« on: May 20, 2008, 04:39:05 PM »
Hello

It's possible to use the adc function to do a single ended convertion withou interupt ?

You do no have a simple example of utilisation of the ADC function ?

Thank's a lot !

Pages: [1]