<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									GPIO de la raspberry lentisimo - Microcontroladores y Microprocesadores				            </title>
            <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/</link>
            <description>Asociación de Robótica y Domótica de España</description>
            <language>es</language>
            <lastBuildDate>Sun, 17 May 2026 12:24:27 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Re: GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/paged/2/#post-42723</link>
                        <pubDate>Tue, 16 Feb 2016 14:29:03 +0000</pubDate>
                        <description><![CDATA[Pues si, y he acabado en un post de uno que hace una radio FM a 103Mhz, pero para mis usos es demasiado complicado.Es curioso que en el articulo que Phyton sea tan lento (28khz) y amenacen d...]]></description>
                        <content:encoded><![CDATA[Pues si, y he acabado en un post de uno que hace una radio FM a 103Mhz, pero para mis usos es demasiado complicado.<br><br>Es curioso que en el articulo que Phyton sea tan lento (28khz) y amenacen de que java sea de ese orden también :)]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>fusion</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/paged/2/#post-42723</guid>
                    </item>
				                    <item>
                        <title>Re: GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42722</link>
                        <pubDate>Tue, 16 Feb 2016 10:35:06 +0000</pubDate>
                        <description><![CDATA[Has consultado esto?:]]></description>
                        <content:encoded><![CDATA[Has consultado esto?: <a href="http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/">http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/</a>]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>Heli</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42722</guid>
                    </item>
				                    <item>
                        <title>Re: GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42720</link>
                        <pubDate>Tue, 16 Feb 2016 07:53:58 +0000</pubDate>
                        <description><![CDATA[Hecho y el resultado es:Usando mmapGpio:Read : 6.61MhzWrite: 18.81MhzUsando bcm2835:Read: 6.0MhzWrite: 11.2-11.5MhzAdemás las mmapGpio al ser compiladas en vez de instaladas son mas fáciles ...]]></description>
                        <content:encoded><![CDATA[Hecho y el resultado es:<br><br>Usando mmapGpio:<br>Read : 6.61Mhz<br>Write: 18.81Mhz<br><br>Usando bcm2835:<br>Read: 6.0Mhz<br>Write: 11.2-11.5Mhz<br><br>Además las mmapGpio al ser compiladas en vez de instaladas son mas fáciles de usar :)<br><br>El codigo:
<CODE><i>
</i>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;time.h&gt;
#include &lt;chrono&gt;
#include &lt;bcm2835.h&gt;

//Compile and link flags at geany:
//g++ -pthread -std=c++11 -o3 -Wall  -c "%f"
//g++ -pthread -std=c++11   -Wall  -o "%e" "%f" -lbcm2835

//configura gpio outputs e inputs:
void init_gpio();
//Lee estado del puerto de entrada
int lee_puerto(uint8_t puerto) { return bcm2835_gpio_lev(puerto);}
void pone_puerto(uint8_t puerto,uint8_t estado) { bcm2835_gpio_write(puerto, estado);}

using namespace std;
using namespace std::chrono;

class halla_tiempo_c
{
public:
   high_resolution_clock::time_point t1,t2;
   void inicia()    { t1= high_resolution_clock::now();   }
   double halla_tiempo() //retorna el tiempo en segundos
   {
      t2= high_resolution_clock::now();   
      duration&lt;double&gt; time_span = duration_cast&lt;duration&lt;double&gt;&gt;(t2 - t1);
      return time_span.count();
   }
};


int main()
{
   halla_tiempo_c tiempo1;
   printf("nInicializo y compruebo GPIOs:n");
   init_gpio();
   printf("Signal 3 a 0:n");
   pone_puerto(RPI_BPLUS_GPIO_J8_05,0);delay_ms(1);
   int uart_str;
   printf("nInicializo y compruebo RS232:n");
   rs232_setup(uart_str);
   if (uart_str == -1) return -1;
   long i,maxi=10000000L,j=0;
   tiempo1.inicia();
   for (i=0;i&lt;maxi;i++)
   {
//      j=lee_puerto(2);
//      j+=lee_puerto(2);
      pone_puerto(3,1);
      pone_puerto(3,0);
   }
   double t2=tiempo1.halla_tiempo();
   double frecuencia;
   frecuencia=2.0*maxi/t2/1.0e6;
   printf("nTiempo=%lg Frecuencia=%lg Mhzn",t2,frecuencia);
   j=0;
   pone_puerto(3,1);
   j=lee_puerto(2);
//   while( lee_puerto(2)!=1) j++;
   printf("j=%lin",j);
   
    return 1;
}


void init_gpio()
{
   printf("bcm2835_init():n");
   bcm2835_init();
   printf("gpio02 input:n");
   //GPIO2 inputs:
   bcm2835_gpio_fsel(   2, BCM2835_GPIO_FSEL_INPT);      //RPI_BPLUS_GPIO_J8_03 = GPIO2
    //GPIO03 outputs:
   printf("gpio03 output:n");
   bcm2835_gpio_fsel(   3, BCM2835_GPIO_FSEL_OUTP);      //RPI_BPLUS_GPIO_J8_05= GPIO3
}</CODE>]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>fusion</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42720</guid>
                    </item>
				                    <item>
                        <title>Re: GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42718</link>
                        <pubDate>Mon, 15 Feb 2016 05:47:47 +0000</pubDate>
                        <description><![CDATA[Acceder al hardware a través de librerías de alto nivel suele tener ese resultado, demasiadas capas de abstracción hacen que se ralentice todo mucho.Prueba a usar la librería &quot;bcm2835&quot; que e...]]></description>
                        <content:encoded><![CDATA[Acceder al hardware a través de librerías de alto nivel suele tener ese resultado, demasiadas capas de abstracción hacen que se ralentice todo mucho.<br><br>Prueba a usar la librería "bcm2835" que es de bajo-bajo nivel a ver si mejora...<br><br>bcm2835_init<br>bcm2835_gpio_write]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>Heli</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42718</guid>
                    </item>
				                    <item>
                        <title>Re: GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42717</link>
                        <pubDate>Thu, 11 Feb 2016 15:44:19 +0000</pubDate>
                        <description><![CDATA[Por lo que he visto la culpa es de lo lenta que es leyendo del puerto, escribe a razon de 18.56 megamuestras por segundo pero lee a 6.63megamuestras.No he usado overclocking]]></description>
                        <content:encoded><![CDATA[Por lo que he visto la culpa es de lo lenta que es leyendo del puerto, escribe a razon de 18.56 megamuestras por segundo pero lee a 6.63megamuestras.<br>No he usado overclocking]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>fusion</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-42717</guid>
                    </item>
				                    <item>
                        <title>GPIO de la raspberry lentisimo</title>
                        <link>https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-4297</link>
                        <pubDate>Thu, 11 Feb 2016 15:09:45 +0000</pubDate>
                        <description><![CDATA[He hecho el siguiente programa y lo he cargado en la raspberry, empleando para cronometrar la libreria chrono de C++11 
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string...]]></description>
                        <content:encoded><![CDATA[He hecho el siguiente programa y lo he cargado en la raspberry, empleando para cronometrar la libreria chrono de C++11 <br><CODE><i>
</i>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;unistd.h&gt; //read, write, close, usleep
#include &lt;fcntl.h&gt;	//constantes: O_RDWR, O_NOCTTY
#include &lt;termios.h&gt; //rs232
#include &lt;time.h&gt;
#include &lt;chrono&gt;
#include "mmapGpio.h"//gpio OJO!!! modificar base address 0x20 a 0x3F para raspberry2
#include "mmapGpio.cpp"//gpio

mmapGpio rpiGpio1; // instantiate an instance of the mmapGpio class

//20*10/9600=20.83ms
void delay_ms(long int ms) {  	timespec t1,t2;t1.tv_sec=0;t1.tv_nsec=ms*1000*1000; nanosleep(&amp;t1,&amp;t2); }
void delay_us(long int us) {  	timespec t1,t2;t1.tv_sec=0;t1.tv_nsec=us*1000; 		nanosleep(&amp;t1,&amp;t2); }
void delay_mbps(long int mbps) {timespec t1,t2;t1.tv_sec=0;t1.tv_nsec=mbps*(500000000L/BAUDRATE); 	nanosleep(&amp;t1,&amp;t2); }//cambio #V023

//configura gpio outputs e inputs:
void init_gpio();
//Lee estado del puerto de entrada
int lee_puerto(int puerto) { if (rpiGpio1.readPin(puerto) == mmapGpio::HIGH) return 1;else return 0;}
void pone_puerto(int puerto,int estado) { if (estado) rpiGpio1.writePinHigh(puerto );else rpiGpio1.writePinLow( puerto );}

using namespace std;
using namespace std::chrono;

class halla_tiempo_c
{
public:
	high_resolution_clock::time_point t1,t2;
	void inicia() 	{ t1= high_resolution_clock::now();	}
	double halla_tiempo() //retorna el tiempo en segundos
	{ 
		t2= high_resolution_clock::now();	
		duration&lt;double&gt; time_span = duration_cast&lt;duration&lt;double&gt;&gt;(t2 - t1);
		return time_span.count();
	}
};


int main() 
{
	halla_tiempo_c tiempo1;
	printf("===inicio prueba de reloj cronometrando 50 segundos, dar a entern");getchar();
	tiempo1.inicia();
	while (tiempo1.halla_tiempo()&lt;50);
	printf("===fin prueba de reloj cronometrando 50 segundos===============n");
	
	pone_puerto(3,0);delay_ms(1);
	printf("nInicializo y compruebo GPIOs:n");
	init_gpio();
	int uart_str;
	printf("nInicializo y compruebo RS232:n");
	rs232_setup(uart_str);
	if (uart_str == -1) return -1;
	long i,maxi=10000000L,j=0;
	tiempo1.inicia();
	for (i=0;i&lt;maxi;i++)
	{
		pone_puerto(3,1);
		while( lee_puerto(2)!=1) j++;
		pone_puerto(3,0);
		while( lee_puerto(2)!=0) j++;
	}
	double t2=tiempo1.halla_tiempo();
	double frecuencia;
	frecuencia=1.0*maxi/t2/1.0e6;
	printf("nTiempo=%lg Frecuencia=%lg Mhzn",t2,frecuencia);
    return 1;
}

void init_gpio()
{
	//inputs:
    rpiGpio1.setPinDir( 2,mmapGpio::INPUT);
    //outputs:
    rpiGpio1.setPinDir( 3,mmapGpio::OUTPUT);
 }
</CODE>

Entonces he puenteado la GPIO02 con la GPIO03 y segun mi programa pongo un 1 y un 0 a una frecuencia de 2.57Mhz<br><br>He usado para ello la libreria mmapGpio<br><br>¿Teneis alguna manera de hacerlo más rapido?]]></content:encoded>
						                            <category domain="https://www.arde.cc/foro/microcontroladores/">Microcontroladores y Microprocesadores</category>                        <dc:creator>fusion</dc:creator>
                        <guid isPermaLink="true">https://www.arde.cc/foro/microcontroladores/gpio-de-la-raspberry-lentisimo/#post-4297</guid>
                    </item>
							        </channel>
        </rss>
		