PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GP2D05 funktioniert nicht



barlip
06.04.2007, 20:40
Hallo Ich versuche greade den GP2D05 von Sharp zum laufen zu bekommen aber irgendwie klappt das nicht.
Zur Ansteuerung des Sensores:
Vin muss 56ms lang auf low gestellt sein und dann kann man über
Vout ablesen ob sich ein Gegenstand in Reichweite des Sensores befindet.
(Low ja es befindet sich ein Gegenstand in Reichweite)

Mein Programm sieht folgendermaßen aus:
(eine LED am PortA3 soll leuchten wenn ein Gegenstand in Reichweite
ist, aber sie leichtet immer auf.)

/* Standard Includes */
#include <compat/deprecated.h>
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL
#include <util/delay.h>


int main(void)
{


DDRA = 0b01011111;


for (;;)
{

PORTA = PORTA | ( 1<<PA1 ); //Vin high

PORTA &= ~(1<<PA3); //LED aus

PORTA &= ~(1<<PA1); // Porta1 / Vin auf low
_delay_ms(56);


if ( !(PINA & (1<<PINA2)) ) //wenn pinA2 auf low ist
{
PORTA = PORTA | ( 1<<PA3 ) ; //pa3 high setzten -led an
}



PORTA = PORTA | ( 1<<PA1 ); //Porta1 auf High

for (int i=1; i<=16; i++)
{
_delay_ms(62.5);
}

}



}

Weiß jemand ob diese Pinbelegung des Sensores richtig ist ?
http://www.superrobotica.com/S320100.htm

danke henrik

shaun
06.04.2007, 20:58
Ausser dass Du den Eingang (PA2) als Ausgang definiert hast, ist mir auf den ersten Blick nichts verwerfliches aufgefallen. Ich bevorzuge bei solchen Sachen immer die Benutzung eines Oszilloskops, es ist ärgerlich, die Peripherie zu verdächtigen, wenn der uC gar nicht arbeitet (am "besten" noch, weil ein fuse bit falsch gesetzt ist)