ts-7000
[Top] [All Lists]

[ts-7000] TS-7390 - Sample program button.c not working for me

To:
Subject: [ts-7000] TS-7390 - Sample program button.c not working for me
From: "happy_plattler" <>
Date: Fri, 27 Mar 2009 17:57:44 -0000
Hi everyone,

I am trying to get the sample program from the files section to work on the 
TS-7390 (see code at the end). But it is not working as expected.

I get it compiled, not a problem. When I comment out the while loop I get the 
LED flashing so that part is working.

So I must be wrong with the physical button part. Looking at the documentation 
of the TS-7370 preliminary manual page 3 I assume that they are talking about 
PIN 17 on the 40 PIN JTAG/DIO header as DIO pin 1 and PIN 18 would be DIO pin 2 
(ground). I am assuming shortcutting those two pins equals a push of a button. 
Now if I do this and release it nothing happens. Well I thought perhaps they 
mean DIO pin 5 (or DIO_00) as first DIO input pin but nothing is happening here 
either.

Any suggestions where I am heading the wrong way?

Thanks a lot,

Ole



// filename button.c
// connect a button to DIO pin 1 and ground
// blinks green and red led on the ts-7200 when button is pressed
//
// compile arm-linux-gcc -o button button.c
//

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

int main(int argc, char **argv)
{
   volatile unsigned int *PEDR, *PEDDR, *PBDR, *PBDDR, *GPIOBDB;
   int i;
   unsigned char state;
   unsigned char *start;
   int fd = open("/dev/mem", O_RDWR);


   start = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 
0x80840000);
   PBDR = (unsigned int *)(start + 0x04);     // port b
   PBDDR = (unsigned int *)(start + 0x14);    // port b direction register

   PEDR = (unsigned int *)(start + 0x20);     // port e data

   PEDDR = (unsigned int *)(start + 0x24);    // port e direction register
   GPIOBDB = (unsigned int *)(start + 0xC4);  // debounce on port b

   *PBDDR = 0xf0;                             // upper nibble output, lower 
nibble input
   *PEDDR = 0xff;                             // all output (just 2 bits)
   *GPIOBDB = 0x01;                           // enable debounce on bit 0
   
   state = *PBDR;                             // read initial state
   while (state & 0x01) {                     // wait until button goes low
      state = *PBDR;                          // remember bit 0 is pulled up 
with 4.7k ohm
   }
   

   // blink 5 times, sleep 1 second so it's visible
   for (i = 0; i < 5; i++) {
      *PEDR = 0xff;
      sleep(1);
      *PEDR = 0x00;
      sleep(1);
   }
   close(fd);
   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