Witam
Mam problem z dogadaniem się Atmegi16 na płytce gotronik z sonarem mobotu
Link.
Korzystam z sprzętowego twi. Funkcje pochodzą ze strony Link
Ze względu na padnięcie strony mobot.pl dołączam dokumentacje do sonaru.
Temat powiązany znalazłem tutaj Link. Próbowałem używać opisanej tam biblioteki mojtwi.h ( dołączonej w tamtym temacie) lecz mimo wszystko zachowanie było takie samo.
Połączenia na płytce PC0 - na SCL sonaru, PC1 na SDA sonaru, reset sonaru pin 5 na przycisk na płytce, gnd i vcc sonaru odpowiednio z wyprowadzeń na płytce testowej. Czy oprócz tych 5 ( właściwie 4) wymagane są inne wyprowadzenia aby sonar działał ?
Po wysłaniu twiwrite(0x03) dioda L2 na czujniku sygnalizująca pomiar zaczyna migać. Nie przechodzi jednak do kolejnego testu. Wydaje mi się że problem może być w braku ustawiania TWINT przez sonar.
TWI_5.C - program glowny
pliki twi.h i twi.c ze strony radzio.dxp.pl
Mam problem z dogadaniem się Atmegi16 na płytce gotronik z sonarem mobotu
Link.
Korzystam z sprzętowego twi. Funkcje pochodzą ze strony Link
Ze względu na padnięcie strony mobot.pl dołączam dokumentacje do sonaru.
Temat powiązany znalazłem tutaj Link. Próbowałem używać opisanej tam biblioteki mojtwi.h ( dołączonej w tamtym temacie) lecz mimo wszystko zachowanie było takie samo.
Połączenia na płytce PC0 - na SCL sonaru, PC1 na SDA sonaru, reset sonaru pin 5 na przycisk na płytce, gnd i vcc sonaru odpowiednio z wyprowadzeń na płytce testowej. Czy oprócz tych 5 ( właściwie 4) wymagane są inne wyprowadzenia aby sonar działał ?
Po wysłaniu twiwrite(0x03) dioda L2 na czujniku sygnalizująca pomiar zaczyna migać. Nie przechodzi jednak do kolejnego testu. Wydaje mi się że problem może być w braku ustawiania TWINT przez sonar.
TWI_5.C - program glowny
#define F_CPU 16000000UL // zegar procesora
#define SCL_CLOCK 100000L //zegar twi
#include <avr/io.h>
#include <util\delay.h>
//#include "twi.c"
void test()
{
DDRA=0xFF;
PORTA=0x00;
_delay_ms(500);
PORTA=0xFF;
_delay_ms(500);
}
void i2c_init(void) {
TWSR = 0; //brak preskalera
//TWBR = ((F_CPU/SCL_CLOCK)-16)/2; dla 16 mhz i 100k SCL wynosi 72
TWBR=72;
}
void main(void) {
test();
i2c_init();
test();
twistart();
_delay_ms(300);
test();
twiwrite(0x03);
test();
twistop();
test();
}pliki twi.h i twi.c ze strony radzio.dxp.pl