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

Problem z przerwaniami AVR

VPS Starter Arubacloud
0 głosów
127 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,340 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ź 419 wizyt
pytanie zadane 14 listopada 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)
+1 głos
1 odpowiedź 239 wizyt
pytanie zadane 13 kwietnia 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)
0 głosów
0 odpowiedzi 396 wizyt
pytanie zadane 22 czerwca 2021 w Mikrokontrolery przez Mavimix Dyskutant (8,420 p.)

93,025 zapytań

141,990 odpowiedzi

321,292 komentarzy

62,371 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...