Problem z WinAVR?
Masz problem? Zapytaj na forum elektroda.pl
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
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 ?
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
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.
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
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