• Finaly a board that doesn't look like my kids drew it.

    jlbrian703/17/2016 at 15:49 0 comments

  • Fail 3-9-16

    jlbrian703/10/2016 at 03:52 0 comments

    lwiplib.c Line 192

    Edit 3-10-2016:

    I think I fixed the problem. From the instructions on the TI Page (http://processors.wiki.ti.com/index.php/LAUNCHXL2_RM57L:_lwIP_Demo)

    Where it says to change the function on balls T4 and U7. HALCoGen show this.

    The problem is that there is not MII_RX_AVCLK4 or MII_TX_AVCLK4 on these balls, and selecting MII_RXCLK and MII_TX_CLK show a conflict.

    So, switching MII_RXCLK from T4 to K19, and MII_TX_CLK from U7 to D19, and going back to the pin muxing tab, and setting the pins there removed the conflict.

    I got the following output form ccs

    I have to wait until the mac address is added to the network to know if this actually fixed anything.

    I couldn't make any headway after the MAC address was added to the network. The board would hang while trying to resolve the ip address. I rolled back to last nights code, and it worked the first time.

    However after restarting the board I got the same results as last night. This works intermittently at best.

    I may try this with a static IP, and see if I get better results, otherwise I'm going to go with the TM4C1294XL

  • Multiple ADC Inputs

    jlbrian703/09/2016 at 17:41 0 comments

    void main(){
            adcData_t adc_data; //ADC Data Structure
    	adcData_t *adc_data_ptr = &adc_data; //ADC Data Pointer
    
    	unsigned int NumberOfChars;
    	uint16 trimmer_val;
    	uint16 hyd_pos_val;
    	uint16 air_pos_val;
    	uint32 adc_id;
    
            adcInit();
    
            while(1){
    		adcStartConversion(adcREGx, adcGroup1); //Start ADC conversion
    		while(!adcIsConversionComplete(adcREGx, adcGroup1)); //Wait for ADC conversion
    		int i;
    		for (i=3; i > 0; i--){
    			adcGetData(adcREGx, adcGroup1, adc_data_ptr); //Store conversion into ADC pointer
    			adc_id = adc_data_ptr->id;
    
    			switch (adc_id){
    			case 6:
    				trimmer_val = adc_data_ptr->value;
    
    				NumberOfChars = ltoa(trimmer_val,(char *)command);
    				sciDisplayText(sciREGx, (uint8_t*)"Trimmer: 0x", sizeof("Trimmer: 0x"));
    				sciSend(sciREGx, NumberOfChars, command);
    				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
    				break;
    			case 10:
    				hyd_pos_val = adc_data_ptr->value;
    
    				NumberOfChars = ltoa(hyd_pos_val,(char *)command);
    				sciDisplayText(sciREGx, (uint8_t*)"HYD_POS: 0x", sizeof("HYD_POS: 0x"));
    				sciSend(sciREGx, NumberOfChars, command);
    				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
    				break;
    			case 17:
    				air_pos_val = adc_data_ptr->value;
    
    				NumberOfChars = ltoa(air_pos_val,(char *)command);
    				sciDisplayText(sciREGx, (uint8_t*)"AIR_POS: 0x", sizeof("AIR_POS: 0x"));
    				sciSend(sciREGx, NumberOfChars, command);
    				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
    				break;
    			default:
    				sciDisplayText(sciREGx, (uint8_t*)"ADC ERROR", sizeof("ADC ERROR"));
    				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
    				break;
    			}
    		}
            }
    }

    FIFO - spnu562: 22.2.1.9.1

  • Anecdote 2 pg. 28 "Embedded Software Development for Safety Critical Systems"

    jlbrian703/08/2016 at 23:51 0 comments

    "One company for which I worked purchased a copy of one of the safety standards for me - a single reader license. Unfortunately, when the PDF version was downloaded, it was marked on every page with the name of the person within the company's purchasing department who had actually placed the order. Strictly, only that person was allowed to read it, and I was not allowed to look at it."

    Are there any open safety standards, or otherwise to compete with the iec/iso standards? If not why not.

  • Interrupts

    jlbrian703/08/2016 at 17:25 0 comments

    HL_Notification.c:

    /* USER CODE BEGIN (11) */
    extern void gioInterruptHandler();
    /* USER CODE END */
    #pragma WEAK(gioNotification)
    void gioNotification(gioPORT_t *port, uint32 bit)
    {
    /*  enter user code between the USER CODE BEGIN and USER CODE END. */
    /* USER CODE BEGIN (22) */
        gioInterruptHandler();
    /* USER CODE END */
    }

    HL_Sys_Main.c:

    /* USER CODE BEGIN (2) */
    /* Choosing the SCI module used depending upon the device HDK */
    #define sciREGx    sciREG1
    
    void     sciDisplayText        (sciBASE_t *sci, uint8_t *text,uint32_t length);
    void    gioInterruptHandler();
    
    /* USER CODE END */
    
    
    
    /* USER CODE BEGIN (4) */
    void sciDisplayText(sciBASE_t *sci, uint8_t *text,uint32_t length)
    {
        while(length--)
        {
            while ((sci->FLR & 0x4) == 4); /* wait until busy */
            sciSendByte(sci,*text++);      /* send out text   */
        };
    }
    
    void gioInterruptHandler(){
    	sciDisplayText(sciREGx, (uint8_t*)"INTERRUPT GENERATED", sizeof("INTERRUPT GENERATED"));
    	sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
    }
    //This function is already in HL_notification.c
    /* sci notification (Not used but must be provided)
    void sciNotification(sciBASE_t *sci, uint32_t flags)
    {
    	return;
    }*/
    /* USER CODE END */