• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z przerwaniami AVR

Cloud VPS
0 głosów
152 wizyt
pytanie zadane 3 lutego 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)

Programuję komunikację uC z PC. Do wysyłania i odbierania "wiadomości" używam Treminal v1.9b. Mam taki kod:

#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include <string.h>
#include <avr/interrupt.h>
#include <stdlib.h>

void print_char(char znak)
{
	if( bit_is_set(UCSRA, UDRE) )
	{
		_delay_ms(10);
		UDR=znak;
		loop_until_bit_is_set(UCSRA, TXC);
	}
}

volatile char co = 'x';

int main(void)
{
	UBRRL = 51;//9600 8mhz
	UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE);
	UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

	sei();

	while(1)
	{
		print_char(co);
	}
}

ISR(USART_RXC_vect)
{
	co='y';
}

Po uruchomieniu uC w konsoli pojawiają się znaki 'x', po próbie wysłania czegokolwiek przestają wyskakiwać znaki 'x', jakby program się zawiesił lub przerwanie nie wróciło do programu. (po wysłaniu czegokolwiek do uC w konsoli powinny zacząć się pojawiać 'y'). Gdzie jest problem? Dodatkowo mam jeszcze jedno pytanie - jak przekazać zmienną do przerwania? (żeby zmienna 'co' była w funkcji main, a nie globalna)?

1 odpowiedź

0 głosów
odpowiedź 9 lutego 2020 przez Oscar Nałogowiec (29,360 p.)
W obsłudze przerwania od odbiornika nie pobierasz odebranego znaku - przerwanie pozostanie aktywne i procek będzie ciągle wchodził w jego obsługę.

Podobne pytania

0 głosów
1 odpowiedź 587 wizyt
pytanie zadane 14 listopada 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)
+1 głos
1 odpowiedź 293 wizyt
pytanie zadane 13 kwietnia 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)
0 głosów
0 odpowiedzi 469 wizyt
pytanie zadane 22 czerwca 2021 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)

93,459 zapytań

142,453 odpowiedzi

322,722 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...