ts-7000
[Top] [All Lists]

[ts-7000] LCD program turnsoff network port.

To:
Subject: [ts-7000] LCD program turnsoff network port.
From: "Art" <>
Date: Mon, 11 Sep 2006 16:21:36 -0000
It seems when I run my LCD program(isn't quite working yet but will 
compile).  it disables the network port.  the lights on the network 
port stop flashing when I execute the following line.

63:  *LCD_Control = lucCmd|LCD_E;

so far I think I have everything write with the LCD except for 
timmings.  but I need to figure out why it turns off the Network.  I 
am using a TS-7200 board.  I use telnet and ftp to develope.  So now 
to fix this trouble I have to reboot every time I run the LCD 
program.  


Is there a way to reset the network port after it has been turn off?  
from the serial port.   I have tried "ifconfig eth0 restart".  Below 
is the program I am using..



#include<unistd.h>
#include<sys/types.h>
#include<sys/mman.h>
#include<stdio.h>
#include<fcntl.h>
#include<string.h>
#include<time.h>

#define GPIOBASE        0x80840000
//#define MODELBASE       0x22000000
//#define TS7300  0x03
#define PADR    0
#define PADDR   (0x10 / sizeof(unsigned int))
#define PAMASK  0x7F  
#define PCDR    (0x08 / sizeof(unsigned int))
#define PCDDR   (0x18 / sizeof(unsigned int))
#define PCMASK  0x01  
#define PHDR    (0x40 / sizeof(unsigned int))
#define PHDDR   (0x44 / sizeof(unsigned int))

// These delay values are calibrated for the EP9301 
// CPU running at 166 Mhz, but should work also at 200 Mhz
#define SETUP   15
#define PULSE   36
#define HOLD    22

#define COUNTDOWN(x)    asm volatile ( \
  "1:\n"\
  "subs %1, %1, #1;\n"\
  "bne 1b;\n"\
  : "=r" ((x)) : "r" ((x)) \
);

//volatile unsigned int *model_ptr;
//unsigned int model;
volatile unsigned int *gpio;
/*
volatile unsigned int *phdr;
volatile unsigned int *phddr;
volatile unsigned int *pcdr;
volatile unsigned int *pcddr;
volatile unsigned int *padr;
volatile unsigned int *paddr;
*/

void command(unsigned int);
void writechars(unsigned char *);
unsigned int lcdwait(void);
void LCD_SETUP(void);

volatile unsigned char *LCD_Control, *LCD_Control_DR, *LCD_Data, 
*LCD_Data_DR, *GPIOBDB;

#define LCD_E 8
#define LCD_RW 2
#define LCD_RS 4

struct timespec gTime;

void lcdCommand(unsigned char lucCmd, unsigned char lucDataAddress, 
int liWait)
{
  unsigned int lucCount;
  *LCD_Data = lucDataAddress;
  *LCD_Control = lucCmd|LCD_E;
  gTime.tv_sec = 0;
  gTime.tv_nsec = 6400;
  nanosleep(&gTime,NULL);
  *LCD_Control = lucCmd;
  gTime.tv_sec = 0;
  gTime.tv_nsec = 6400;
  nanosleep(&gTime,NULL);
}

void LCD_SETUP(void)
{
        int fd;
        unsigned char *start;
        fd = open("/dev/mem", O_RDWR|O_SYNC);
        start = mmap(0, getpagesize(), 
          PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIOBASE);
        gpio = (unsigned int *)(start);
        LCD_Control = (unsigned char *)(start + 0x40); // LCD_EN 
LCD_RS LCD_WR
        LCD_Control_DR = (unsigned char *)(start + 0x44); // LCD_EN 
LCD_RS LCD_WR Direction Register
        LCD_Data = (unsigned char *)(start + 0x0); // LCD Data Values
        LCD_Data_DR = (unsigned char *)(start + 0x10); // LCD Data 
Values Direction Register
        //*LCD_Control = 0x38;
        *LCD_Data_DR = 0xff;
        *LCD_Control_DR |= 0x38;
   close(fd);
  gTime.tv_sec = 0;
  gTime.tv_nsec = 20000;
  nanosleep(&gTime,NULL);
  lcdCommand(0,16+32,41);
  gTime.tv_sec = 0;
  gTime.tv_nsec = 4100;
  nanosleep(&gTime,NULL);
  lcdCommand(0,16+32,1);
  gTime.tv_sec = 0;
  gTime.tv_nsec = 100;
  nanosleep(&gTime,NULL);
  lcdCommand(0,16+32,0);
  lcdCommand(0,0x38,0);  // Function Set
  lcdCommand(0,12,0);  // Display On
  lcdCommand(0,1,0);  // Clear Display
  lcdCommand(0,6,5);  // increment   
}

/* This program takes lines from stdin and prints them to the
 * 2 line LCD connected to the TS-7200 LCD header.  e.g
 *
 *    echo "hello world" | lcdmesg
 * 
 * It may need to be tweaked for different size displays
 */

int main(int argc, char **argv) {
        int i = 0;

        LCD_SETUP();
        //*LCD_Data_DR = 0xffffffff;
        //*LCD_Data_DR = 0x0;
        //*LCD_Control_DR |= 0x38;
        //*LCD_Data = 0;
        while (getchar()!=EOF)
        {
        //  *LCD_Data = ~(*LCD_Data);
        //  *LCD_Control = (*LCD_Control)^0x38;
  gTime.tv_sec = 0;
  gTime.tv_nsec = 20000;
  nanosleep(&gTime,NULL);
          //sleep(1);
  *LCD_Control ^= LCD_E;
        }
        *LCD_Data_DR = 0x0;
        *LCD_Control_DR &= ~0x38;
        return 0;
}







 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ts-7000/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/ts-7000/join
    (Yahoo! ID required)

<*> To change settings via email:
     
    

<*> To unsubscribe from this group, send an email to:
    

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU