PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] SRF05 c Mega8 Problem



avrrobot
20.01.2012, 16:27
Hallo,

Leider habe ich heute schon wieder ein Problem. :(
Heute wollte ich mal meine SRF05 er testen.
Hardware ist ein Atmega8 mit 16 Mhz, welcher I2C Slave ist.
Der eine Anschluss (SRF05 ist im Modus mit nur einem Port) ist B1.
Ach ja: Die LED auf dem SRF05 blinkt sehr schnell.
Ich verwende folgenden code: (Hoffentlich habe ich nicht wieder so einen dämlichen Leichtsinnsfehler wie letztes mal drin)
Über die serielle Schnittstelle bekomme ich dann immer 0 rein.


#include "twislave.h"
#include <util/twi.h>
#include <avr/interrupt.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>


#define SLAVE_ADRESSE 0x50

int main()
{
init_twi_slave(SLAVE_ADRESSE);
DDRB |= (1<<PB1);
i2cdata[0] = 5;
uint16_t leng;
while(1)
{
DDRB |= (1<<PB1);
PORTB |= (1<<PB1);
_delay_us(20);
PORTB &= ~(1<<PB1);
DDRB &= ~(1<<PB1);
while(!(PINB & (1<<PB1)));
while((PINB & (1<<PB1)))
{
leng++;
_delay_us(5);
}
i2cdata[0] = leng;
leng = 0;
_delay_ms(50);
}
}


MfG avrrobot

Edit: Ok, Problem gefunden!

tucow
23.01.2012, 21:51
Teilst Du uns das Problem auch mit? ;)

avrrobot
24.01.2012, 05:57
Ja klar. ;)
Das Problem wr lediglich, dass ich in der ersten Zeile nach dem while(1) (jetzt ist es schon verbessert)
vorher ein
DDRB &= ~(1<<PB1);
statt dem
DDRB |= (1<<PB1);
stehen hatte.
War ein Vertippfehler und kann natürlich nicht funktionieren.

MfG avrrobot