Wpis z mikrobloga

Mireczki czy ten kod będzie działać?

Jest to odbiornik sygnału 433MHz po UART. Nadajnik cały cały czas nadaje, a mimo to nic mi nie odbiera :/

Zasilanie zarówno nadajnika, jak i odbiornika filtrowane 470uF i 100nF, brak kwarcu.

#include

#include

#include

#ifndef FCPU

//define cpu clock speed if not defined


#define F
CPU 8000000

#endif

//set desired baud rate

#define BAUDRATE 1200

//calculate UBRR value

#define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1)

//define receive parameters

#define SYNC 0XAA// synchro signal

#define RADDR 0x44

#define LEDON 0x11//LED on command

#define LEDOFF 0x22//LED off command

void USARTInit(void)

{

UBRRL=(uint8_t)UBRRVAL;

UBRRH=(UBRRVAL>>8);

UCSRC=(1<
(0<

UCSRB=(1<

}

uint8t USARTvReceiveByte(void)

{

while((UCSRA&(1<

return UDR;

}

ISR(USARTRXCvect)

{

uint8_t data;

data=USART_vReceiveByte();

if(data==LEDON)

{

PORTD = 64;

_delay_ms(100);

}

else

{

PORTD = 0;

}

}

void MainInit(void)

{

DDRD= 64;

PORTD = 64;

sei();

}

int main(void)

{

Main
Init();

USART_Init();

while(1)

{

}

return 0;

}
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kobiaszu: No i git. Weź może podepnij wyjście tego odbiornika pod normalny pin, do innego pinu podłącz led i walnij małego while'a który będzie przepisywał z we na wy - zobaczysz czy coś Ci tam zamiga jak włączysz/wyłączysz nadajnik.
  • Odpowiedz
@zachwiej @Analityk @exti @profesorek92

Proszę o wsparcie tęgie głowy :)

EDIT: Zauważyłem ciekawą rzecz - nawet jak mój zasilacz stabilizowany nie jest podłączony do niczego, a w pobliżu jest nadajnik działający na baterii, to wyraźnie słychać piszczenie w środku przetwornicy :D

A może winę ponosi tutaj brak kwarcu?
  • Odpowiedz
@exti: Czyli jednak trzeba się na to 2,4GHz przesiąść?

Pomęczę się z tym trochę i jak nie da rady to trudno - przesiadka na RF.

Problemem jest znalezienie dobrego tutoriala na gołą atmegę :/
  • Odpowiedz
@kobiaszu: Przede wszystkim kwarc w nadajniku i odbiorniku zamontuj. Wewnętrzny RC skacze wystarczająco mocno by zakłócić USART'a. (tak gdzieś czytałem). Sprawdź czym inicjujesz USART (wartości), ja mam coś takiego:

void usartinit(unsigned int
  • Odpowiedz