Witam,
mam program napisacy w bascomie po kompilacji i wgraniu do 90S2313 wszytko jest ok, po załadowaniu to Tiny2313 wszytko działa z wyjątkiem komunikacji po RS-232, z tego co czytałem to w tiny jest inny układ transmisji bardziej rozbudowany. I pytanko jako zmiany trzeba wprowadzić aby wszystko było ok?
Z 'góry' dzięki
UART kontra USART w 90S2313 i Tiny2313
-
ZbeeGin
Problem z Tiny2313 to jego bity konfigurujące (fuse bits). Jeśli ich nie zmieniałeś to procesor pracuje z częstotliwością 1MHz (wewnętrzny oscylator 8MHz z podziałem przez 8 ) i dlatego komunikacja nie działa.
Opisz w jaki sposób będziesz taktował procesor (kwarc, układ RC, zewnętrzny lub wewnętrzny oscylator) i z jaką częstotliwością będzie miał pracować. Wtedy możemy Ci zaproponować jak ustawić te bity.
-
ZbeeGin
OK. Najpierw zajmijmy się bitami konfiguracji ATTiny2313. AT90s2313 nie jest aż tak skomplikowany, więc nie trzeba go konfigurować. Zakładam też, że używasz programatora wbudowanego w BASCOM, gdyż tam jest o wiele łatwiej i trudniej o błąd.
Uruchamiasz programator ze środowiska BASCOM-a i po poprawnym wykryciu procesora na liście Chip powinien się pojawić ATtiny2313. Pod spodem znajdują się zakładki, z których wybierasz Lock and Fuse Bits. Po chwili w oknie powinna się pojawić bieżąca konfiguracja odczytana z układu. Jeśli się nie pojawi - naciśnij Refresh. W części Fusebits klinij na linię Fusebit C i z rozwijanej listy obok wybierz 1 : Divide clock by 8 disabled. Teraz klinij na linię Fusebit A987 i znów z listy wybierz jedną z dwóch ostatnih pozycji xxxx : xxxx external XTAL. Teraz naciśnij odbokowany przycisk Write FS po prawej. Jeśli masz podłączony i prawidłowo działający kwarc to ponowna identyfikacja procesora powinna odbyć się bez problemów. Aby sprawdzić czy ustawienia się zachowały naciśnij Refresh.
Reszta bitów nas w tej chwili nie interesuje. Lecz muszę Ci zwrócić uwagę na dwa z części Fusebits High: Fusebit I oraz Fusebit D. Pod żadnym pozorem nie zmieniaj ich bez wyraźnej potrzeby! Straciłbyś w ten sposób możliwość programowania procesora w układzie - przez ISP.
Teraz zajmiemy się transmisją. Aby transmisja przebiegała wg Twoich założeń, to na początku programu powinny się znaleźć dwie dyrektywy:
Pierwsza określa w Hz czestotliwość z jaką pracuje procesor, np. częstotliwość kwarcu. Druga zaś określa prędkość transmisji w bodach (bps) z jaką będzie pracował układ U(S)ART. Tu także drobna uwaga: Jeśli użyjesz $BAUD to musisz użyć także $CRYSTAL, gdyż te dyrektywy powinny występować razem (odwrotnie już nie trzeba).
Warto jescze w pierwszej linijce programu dopisać:
by kompilator wiedział z jakim procesorem będzie miał do czynienia.
Uruchamiasz programator ze środowiska BASCOM-a i po poprawnym wykryciu procesora na liście Chip powinien się pojawić ATtiny2313. Pod spodem znajdują się zakładki, z których wybierasz Lock and Fuse Bits. Po chwili w oknie powinna się pojawić bieżąca konfiguracja odczytana z układu. Jeśli się nie pojawi - naciśnij Refresh. W części Fusebits klinij na linię Fusebit C i z rozwijanej listy obok wybierz 1 : Divide clock by 8 disabled. Teraz klinij na linię Fusebit A987 i znów z listy wybierz jedną z dwóch ostatnih pozycji xxxx : xxxx external XTAL. Teraz naciśnij odbokowany przycisk Write FS po prawej. Jeśli masz podłączony i prawidłowo działający kwarc to ponowna identyfikacja procesora powinna odbyć się bez problemów. Aby sprawdzić czy ustawienia się zachowały naciśnij Refresh.
Reszta bitów nas w tej chwili nie interesuje. Lecz muszę Ci zwrócić uwagę na dwa z części Fusebits High: Fusebit I oraz Fusebit D. Pod żadnym pozorem nie zmieniaj ich bez wyraźnej potrzeby! Straciłbyś w ten sposób możliwość programowania procesora w układzie - przez ISP.
Teraz zajmiemy się transmisją. Aby transmisja przebiegała wg Twoich założeń, to na początku programu powinny się znaleźć dwie dyrektywy:
Kod: Zaznacz cały
$crystal = 4000000
$baud = 9600Warto jescze w pierwszej linijce programu dopisać:
Kod: Zaznacz cały
$regfile "attiny2313.dat"
Ostatnio zmieniony 07 sie 2006, 16:35 przez ZbeeGin, łącznie zmieniany 2 razy.