Код
#include <avr/io.h>
#include <avr/eeprom.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#define F_CPU 1000000UL // 1 MHz
#include <util/delay.h>
void delay_us(uint16_t t)
{
int i;
if (t > 10)
for (i=0;i<t/10;i++)
_delay_us(10);
else
_delay_us(t);
}
void delay_ms(uint16_t t)
{
int i;
if (t > 10)
for (i=0;i<t/10;i++)
_delay_ms(10);
else
_delay_ms(t);
}
int ds_reset()
{
int r=0;
PORTA &= ~(1<<4);
DDRA |= (1<<4); // DQ = 0;
delay_us(500); // 480us minimum
DDRA &= ~(1<<4); // DQ in
delay_us(80); // waits 15-60us and then
r = (PINA & (1<<4)); // capture the presence pulse (60-240us)
delay_us(400);
return !r;
}
#include <avr/eeprom.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#define F_CPU 1000000UL // 1 MHz
#include <util/delay.h>
void delay_us(uint16_t t)
{
int i;
if (t > 10)
for (i=0;i<t/10;i++)
_delay_us(10);
else
_delay_us(t);
}
void delay_ms(uint16_t t)
{
int i;
if (t > 10)
for (i=0;i<t/10;i++)
_delay_ms(10);
else
_delay_ms(t);
}
int ds_reset()
{
int r=0;
PORTA &= ~(1<<4);
DDRA |= (1<<4); // DQ = 0;
delay_us(500); // 480us minimum
DDRA &= ~(1<<4); // DQ in
delay_us(80); // waits 15-60us and then
r = (PINA & (1<<4)); // capture the presence pulse (60-240us)
delay_us(400);
return !r;
}
все время возвращает 0. В чем может быть проблема?
Если в датчике то как его можно быстро и просто проверить?