Problem z WinAVR?



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr" <ppiwko_at_nospam_diablo.ict.pwr.wroc.pl>
Subject: Problem z WinAVR?
Date: Sun, 19 Jun 2005 20:45:13 +0200


Witam sredecznie.

Zastanawiam sie dlaczego kompilator WinAVR nie traktuje
jednoznacznie takich oto intrukcji:

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

i druga:

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

Przeciez te dwie instrukcje robia to samo, jednak WinAVR
ustawia te bity inaczej, a symulator z VMLab zglasza mi taki blad:
[PC = $006B, Time = 2.25 ms, {PER}]: USART: Sorry, only 7 and 8 bits
supported

Z gory dziekuje za pomoc.

--
Piotr




Poprzedni Następny
Wiadomość
Spis treści
From: Zbych <abuse_at_nospam_onet.pl>
Subject: Re: Problem z WinAVR?
Date: Sun, 19 Jun 2005 21:07:35 +0200


Piotr wrote:

Przeciez te dwie instrukcje robia to samo, jednak WinAVR
ustawia te bity inaczej, a symulator z VMLab zglasza mi taki blad:
[PC = $006B, Time = 2.25 ms, {PER}]: USART: Sorry, only 7 and 8 bits
supported

Co to znaczy ustawia inaczej ? Końcowa zawartość UCSRC jest taka sama w
obu przypadkach ? Przeglądałeś listingi po kompilacji ?

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr" <ppiwko_at_nospam_diablo.ict.pwr.wroc.pl>
Subject: Re: Problem z WinAVR?
Date: Sun, 19 Jun 2005 21:25:36 +0200


Użytkownik "Zbych" <abuse_at_nospam_onet.pl> napisał

Co to znaczy ustawia inaczej ? Końcowa zawartość UCSRC jest taka sama w
obu przypadkach ? Przeglądałeś listingi po kompilacji ?

Tak, przegladalem listingi po kompilacji i nie ma tam nic na ten temat.
Co do wartosci koncowej UCSRC to jestem przekonany iz jest inna
poniewaz w pierwszym przypadku wogole nie dziala mi USART,
a symulacja zatrzymuje sie wywalajac powyzszy blad.

Dzieki za zainteresowanie.

--
Piotr



Poprzedni Następny
Wiadomość
Spis treści
From: Zbych <abuse_at_nospam_onet.pl>
Subject: Re: Problem z WinAVR?
Date: Sun, 19 Jun 2005 23:23:54 +0200


Piotr wrote:

Tak, przegladalem listingi po kompilacji i nie ma tam nic na ten temat.
Co do wartosci koncowej UCSRC to jestem przekonany iz jest inna
poniewaz w pierwszym przypadku wogole nie dziala mi USART,
a symulacja zatrzymuje sie wywalajac powyzszy blad.

No to wrzuć ten listing z fragmentem odpowiedzialnym za konfigurację
uarta i sprawdź w innym symulatorze (avr studio ?) stan bitów po
skonfigurowaniu uarta zamiast pisać, że ci się coś wydaje.

Poprzedni Następny
Wiadomość
Spis treści
From: Jurek Szczesiul <jerzy.szczesiul_at_nospam_wycin.ep.com.pl>
Subject: Re: Problem z WinAVR?
Date: Sun, 19 Jun 2005 23:20:04 +0200


Sun, 19 Jun 2005 20:45:13 +0200, na pl.misc.elektronika, Piotr napisał(a):

Zastanawiam sie dlaczego kompilator WinAVR nie traktuje
jednoznacznie takich oto intrukcji:

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

i druga:

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

Przeciez te dwie instrukcje robia to samo, jednak WinAVR
ustawia te bity inaczej

No właśnie robią zupełnie coś innego :
UCSRC |= (1<<URSEL);
64: 80 b5 in r24, 0x20 ; 32
66: 80 68 ori r24, 0x80 ; 128
68: 80 bd out 0x20, r24 ; 32
UCSRC |= (1<<USBS);
6a: 80 b5 in r24, 0x20 ; 32
6c: 88 60 ori r24, 0x08 ; 8
6e: 80 bd out 0x20, r24 ; 32
UCSRC |= (3<<UCSZ0);
70: 80 b5 in r24, 0x20 ; 32
72: 86 60 ori r24, 0x06 ; 6
74: 80 bd out 0x20, r24 ; 32

UCSRC |= (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
76: 80 b5 in r24, 0x20 ; 32
78: 8e 68 ori r24, 0x8E ; 142
7a: 80 bd out 0x20, r24 ; 32

Dostęp do UCSRC masz tylko przy jednoczesnie ustawionym bicie URSEL;
więc w pierwszym przypadku przypisania
UCSRC |= (1<<USBS);
UCSRC |= (3<<UCSZ0);
powodują wpis do UBRRH.
Drugi przypadek wykonuje zapis prawidłowo.

--
Pozdrowienia
Jurek Szczesiul

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr" <ppiwko_at_nospam_diablo.ict.pwr.wroc.pl>
Subject: Re: Problem z WinAVR?
Date: Mon, 20 Jun 2005 09:47:03 +0200



Użytkownik "Jurek Szczesiul" <jerzy.szczesiul_at_nospam_wycin.ep.com.pl> napisał

Dostęp do UCSRC masz tylko przy jednoczesnie ustawionym bicie URSEL;

Dziekuje serdecznie za pomoc.

--
Piotr