Skocz do zawartości

Pomocna odpowiedź

to ja się jeszcze zapytam, ponieważ nie mam teraz "pod ręką" programatora, a znalazłem przy okazji czytania wątku błąd u siebie(który mógł powodować, że nie działa):

czy tą funkcję USART_Recive można zastąpić przerwaniem:

volatile uint8_t byte=0;
ISR(USART_RX_vect)
{
byte = UDR0;
}

jeśli porównujemy w pętli zmienną byte oczywiście?

(piszę na atMega168)

Autora prosiłbym o zamieszczenie kodu programu, który mu działa, to może moje zacznie działać 🙂

też bym prosił o poprawiony kod. Ja prędkość mam odpowiednią, zmniejszyłem do 4800 dla pewności, błąd wynosi 0.2%, więc raczej nie tu tkwi błąd. Gdy wysyłam znak '1' z telefonu to wyświetla mi się na terminalu ta cyfra, więc problem tkwi raczej w programie na mikrokontroler 😖

  • 2 miesiące później...

Wybaczcie że odświerzam ale i nie wrzuciłem kodu i mam pewien problem onieważ z powodów studiów i pracy zostawiłem moduł razem z procesorem na polce i teraz do niego sięgnąłem - no i nie działa 🙂 Oto mój kod:

#include <avr/io.h>
#include <util/delay.h>               
#define F_CPU 12000000L
#define BAUD 57600
#define MYUBRR F_CPU/16/BAUD-1

void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);

UBRRL = (unsigned char)ubrr;

/* Enable receiver and transmitter */

UCSRB = (1<<RXEN)|(1<<TXEN);

/* Set frame format: 8data, 1stop bit */

UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);
}


unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}



int main(){

unsigned char recive;
DDRB=0x01;
DDRD=0x02;
USART_Init(MYUBRR);



while(1){
   recive = USART_Receive();

   if(recive == '1'){
       PORTB&=~0x00;
       _delay_ms(500);
   }else{
   PORTB|=0x01;
   }

}

return 0;
}

Jedyne co było zmienione to poprawione błędy które były wczesniej, zmieniona pętla głowna i tyle. Ostatnio mi to działało cudownie, nawet sterowałem autkiem rc z telefonu. Teraz niestety nic nie działa. Czy widać jakieś kary godne błędy ?? Bardzo proszę o pomoc.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...