• Welcome to LusoRobótica - Robótica em Português.
 

sfr05

Started by tiagosilva510, 29 de May de 2011, 12:38

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Sérgio_Sena

Esse sensor é bastante simples de usar, concerteza que consegues converter esse código PIC para o AVR, não ?

É que ficar à espera de alguém que te dê o trabalho feito, pode demorar tempo, se aparecer.

A internet é grande. De certeza que já alguém usou esse sensor com um AVR.
basta usar o Google.

;)
Cumprimentos,
Sérgio Sena

Electronic Gear for Musicians

Instagram

senso

Manda-me o sensor lá para meio de Julho que é quando tenho tempo livre que eu faço-te o código e depois mando o sensor para trás.
Avr fanboy

tiagosilva510

Boas amigos, tentei fazer o codigo do zero, para tal comecei por:

#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <delay.h>

void startRange(void);
//unsigned int getEcho(void);
void setup(void);

int main(void)
{
setup();

// unsigned int range;

while(1)
{
startRange(); // Send a high on the trigger pin to start a ranging

}
}

void startRange(void)
{
PORTD = 0b00000001; // Send trigger pin high
_delay_us(10);     // Wait 10us...
PORTD = 0b00000000;
_delay_us(10);
}

void setup(void)
{
DDRD = 0x01; // Port D pin 0 ouput all others input
}


se usar um valor tipo 250ms este bocado de codigo funciona na perfeiçao, no entanto com 10 us obtenho no osciloscopio sempre cerca de 3.6ms, sei que deve ter haver com o temporizador interno do atmega, alguem me pode dar uma ajuda a configurar? estes 10 us servem para dar o impulso no trigger do srf05.

cumprimentos

senso

Onde é que está o #define F_CPU?
Tens de o definir antes de fazer include do delay.h para ele saber o que fazer, esse código de certeza que te está a dar warning quanto a isso e tu não estás a ligar ao warning..
Avr fanboy

tiagosilva510

defenindo isso ja dara tal como pretendo?

tiagosilva510

defeni tal como sugeriste, no entanto ainda me deu mais warnings assim..

#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#define F_CPU 1000000
#include <delay.h>

void startRange(void);
//unsigned int getEcho(void);
void setup(void);

int main(void)
{
setup();

// unsigned int range;

while(1)
{
startRange(); // Send a high on the trigger pin to start a ranging

}
}

void startRange(void)
{
PORTD = 0b00000001; // Send trigger pin high
_delay_us(10);     // Wait 10us...
PORTD = 0b00000000;
_delay_us(10);
}

void setup(void)
{
DDRD = 0x01; // Port D pin 0 ouput all others input
}



tá aí os warnings :


../sonar.c:4:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
In file included from ../sonar.c:5:
C:\Users\Tiago Silva\Desktop\..\..\..\WinAVR-20090313\avr\include\avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
In file included from C:\Users\Tiago Silva\Desktop\..\..\..\WinAVR-20090313\avr\include\avr/delay.h:37,
                 from ../sonar.c:5:
c:/winavr-20090313/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"

senso

Estás a compilar em -O0 porque o default é -Os ou -O2.
Avr fanboy

CBX

se o F_CPU estiver na 1º linha o warning desaparece

a localização do delay é <util/delay.h>

não sei se é relevante mas assim os warnings desaparecem

senso

Mas esta linha:

c:/winavr-20090313/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"


Diz claramente que ele desligou as optimizações do compilador e está a compilar em -O0.
Avr fanboy

tiagosilva510

fiz tal como disseram.. defeni na 1ª linha, mudei o nome a livraria, udei para -os, deu 2 warnings


../sonar.c:1:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition

senso

Não podes ter duas vezes o F_CPU, se for igual não tem mal, mas se forem diferentes vai dar barraca, pois ele vai assumir o ultimo que leu e esse pode não ser o que estás á espera..
Avr fanboy

tiagosilva510

ja esta sem warnings..

mas o que esta diferente do inicial é apenas a livraria que estava mal defenida, assim ja me vai dar o tempo que pretendo?

senso

Sim, mais ou menos meia duzia de clocks, mas isso é bastante fiavel.
Avr fanboy

tiagosilva510

ok, amanha ja testo, quanto aos fuses nao sei como resolver isto =/ n estou a conseguir enviar..



senso

Isso é porque de certeza que programas-te os fuses errados.
Avr fanboy