Proszę zobaczyć, że w przykładach kodu do inicjalizacji UART-a
a). w przypadku asm posłużono się nazwami rejestrów: UBRRL oraz UBRRH b). w przypadku C posłużono się nazwami rejestrów: UBRR0L oraz UBRR0H
Niechlujstwo i niedbałość, czy może założono jakiś inteligentny kompilator C, który "poradzi" sobie zarówno z obiema nazwami rejestrów?
Jakkolwiek, by nie było, myślę, że warto o tym wspomnieć, jeśli będzie planowany kolejny odcinek z RS232.
Dodam, że kompilator użyty według tutoriali pana Mirka ze środowiskiem Eclipse nie radzi sobie (w przypadku Atmega32) z nazwami sugerowanymi przez datasheet w przykłądowym kodzie na inicjalizację:
a po zmianie (jak na przykłądzie kodu ASM), problem znika:
Przyjmuję tę zasadę (postaram się zapamiętać), jak również uważam, że "brzydko" i nieprofesjonalnie wyglądają takie nieścisłości w oficjalnych dokumentach tak znanego dostawcy mikrokontrolerów. Zwłaszcza, że sytuacja była niemal identyczna w dwóch notach z brzegu, za jakie chwyciłem (Atmega32 oraz Atmega644P). 644P ma dwa uarty, ale tam z kolei nazwa innego rejestru była przekręcona.
Morał z tego taki, trzymając nawet oficjalny dokument Atmela w ręku warto mieć się na baczności. Przekręcanie nazw rejestrów pojawia się dosyć często (prawdopodobnie "jadą" z jakiegoś uniwersalnego szablonu do not, i przykładowo fragment w ASM potrafi odnosić się do "innych" rejestrów, a fragment w C do innych. Oczywiście i tak miło z ich strony, że w ogóle zamieszczają przykładowe kody źródłowe.
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników