When you change the direction of some pin to output and send there 0, what
voltage you can measure on the pin? Is there 0 V? I suppose the pull-up
resistor is pulling up the voltage only when there is log 1 on the pin?
I connect the led directly to the DIO_1 pin and thru the resistor to the
ground. Is this correct? The LED is still lighting :-(
pin DIO_1 LED 3k resistor GND
==========| -------->|----------===---------- |=====
I tried:
/sys/class/gpio# echo 8 > export
/sys/class/gpio# echo out > gpio8/direction
/sys/class/gpio# echo 0 > gpio8/value
/sys/class/gpio# cat gpio8/value
1
Also this:
int fd = open("/dev/mem", O_RDWR|O_SYNC);
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
*PBDDR = 0xff; // output
*PBDR = 0xff;
sleep(1);
*PBDR = 0x00;
sleep(1);
close(fd);
return 0;
I expected 0 and 1 output on the DIO_1, but the led is still lighting..
What am I doing wrong?
Dalibor
> Answer: This code does work on my system.
>
> --- In "Clark" <> wrote:
>>
>> Let's see if we can't focus this discussion a little better. Is this
>> the same deal I face attempting to access GPIO? Joel said I need to use
>> a read-modify-write instruction, yet the TS sample code 'button.c'
>> shows the naive approach of using simple assignment in C. Thus the
>> question to me is does this sample code work? Why not?
>>
>> / 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|O_SYNC);
>>
>> 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;
>> }
>>
>>
>> --- In dalibor@ wrote:
>> >
>> > > can someone confirm the DIO pins work on the ts-7260 using the
>> provided
>> > > scripts ?
>> > >
>> > >
>> >
>> > Hello,
>> > probably the same problem,
>> >
>> > I am not able to control DIO pins from user space. Tried C code via
>> > registers, peekpoke, GPIO kernel modules, but nothing worked. The pins
>> are
>> > still high (log 1). LED connected to the pin is still lighting.
>> >
>> > The only thing I managed is to read the pins, when I connect it to
>> ground,
>> > I can read log 0, log 1 when disconnected.
>> >
>> > Thanks in advance for any tips..
>> >
>> > Dalibor
>> >
>>
>
>
>
------------------------------------
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/
|