Image36 (9)

Image36 (9)



■ Programowanie

BOOT... - dwie ostatnie pożycie, a trzy ostatnie bity, związane są z możliwością sainupro-gramowania układu. Zajmiemy się nimi przy okazji tworzenia własnego bootloadera. M161C - tryb kompatybilności z układem ATmcgalól, który został wycofany z produkcji. Tryb ten polega w praktyce na wyłączeniu niektórych z udogodnień nowszego układu. Zostawmy bit niezaprogramowany („1”).

HODLE VEL2..0 - włączenie układu zerowania procesora przy zbyt niskim napięciu zasilania. Dostępne są cztery wartości napięcia, przy którym układ będzie zerowany; 1,8V, 2.3V; 2,7V; 4.3V. Domyślnie układ HDD jest wyłączony. Polecam zmianę tego ustawienia. W przypadku zegara do 8MHz zerowanie powinno następować przy napięciu zasilania me niższym niż 2.3V.

Fusy - podsumowanie

Opis ten z konieczności był bardzo skrótowy. Uznałem jednak, że chociażby pobieżne zaznaczenie istnienia bitów konfigurujących układ oraz ich przeznaczenia pozwoli zaoszczędzić początkującym Czytelnikom dodatkowych stresów w poszukiwaniu przyczyny niedziałania układu. Najczęstszym przypadkiem. z jakim się spotkałem, była zwykle niespodziewana częstotliwość taktowania związana z pozostawieniem domyślnego ustawienia bitów CKSEL. Wydawać by się to mogło zabawne, gdy to opisuję, jednak jest to problem dość trudny do wykrycia, jeśli nie wie się. gdzie szukać - procesor przccicz działa, do wszystkich rejestrów wpisano trzykrotnie przeliczone wartości, podłączony (fizycznie) kwarc ma dobrą wartości... a w oknie terminala ciągle zamiast ładnego przywitania pojawiają się „krzaki”.

Dociekliwi Czytelnicy odnajdą dokładne informacje w dokumentacji procesora ATmcgal62 i wierzę, że powyższy opis ułatwi zadanie.

Niezależnie od przenoszonego programu, w każdym przypadku rozpoczynamy od modyfikacji pliku makefile poprzez przypisanie jak na obrazku, informując kompilator o wybraniu innego procesora.

p# nrr”

MC u =Catmeqal62^

Przenoszenie programu LEDMulti

Program napisaliśmy w części 4 kursu. Jeśli przechowujesz na dysku poprzednie programy, gorąco polecam Ci wykonanie opisanych zmian samodzielnie.

Po pierwsze, przyjrzyjmy się różnicy połączeń na obu płytkach. Przedstawia je tabela 4. Domyślasz się już, co na tej podstawie powinniśmy zrobić? Jeśli nie pamiętasz już, w jaki sposób pisaliśmy program we wrześniu, zerknij do kodu. Zwykle blisko początku pliku umieszczone były przypisania stałych symbolicznych odpowiednim wyprowadzeniom. Jest to pierwszy punkt naszych zmian. Zmieniony fragment kodu przedstawia listing 47.

Jeśli chodzi o zegar, mamy dwie możliwości. Albo włożymy w płytkę taki sam rezonator i układ skonfigurujemy do pracy na zewnętrznym kwarcu, albo wykorzystamy wewnętrzny generator RC i program jakoś dostosujemy do nowej, większej częstotliwości pracy (trzecią możliwością jest zupełnie nieząjmowan.e się sprawą i pozwolenie, aby cały program działał 2x szybciej ;) Ze względu na większą atrakcyjność, z edukacyjnego punktu widzenia, zajmiemy się drugą możliwością. Zrobimy to najprościej, jak się da. Wewnętrzny generator pracuje z częstotliwością 8MHz. Jednak układ ATmega!62 został wyposażony w programowalny dzielnik częstotliwości wybranego źródła zegara. Włączmy go zaraz na starcie programu. Pokazuje to listing 48. Aby zabezpieczyć rejestr CLKPR przed przypadkową zmianą wartości, zapis do niego wymaga specjalnej sekwencji działań. Najpierw wpisujemy wartość, w której ustawiony jest jedynie bit CLłCPCE. Od tej chwili rejestr można będzie zapisywać przez cztery następujące po sobie cykle maszynowe.

Nasz programik wykorzystuje timerO do obsługi przemiatama wyświetlacza. Czy możemy zegar, o tym samym oznaczeniu, występujący w nowym procesorze, wykorzystać w' podobny sposób? Zajrzyjmy do dokumentacji. Oba zegary są ośmiobitowe. Okazuje się, że są do siebie bardzo podobne. Najlepszy obraz występujących różnic i podobieństw' pokazuje rysunek 36. Widzimy na nim rejestry sterujące naszym hcznikiem w- obu procesorach. Zauważamy, że rejestr)' występujące w procesorze ATmegal 62 są niejako rozwinięciem tych z AT90S2313. Nazwy

Li.>ring 48 Włączenie wennętrytego dzielnika częstotliwości zegara procesora.

U Start int main(void)

{

// Dzielenie zeoara CLKPR - i«clkpce:

CLKPR ■ 1«CLKPSC;

um n iininii/nnnnini

// inicjacja LEDDDR • Oxff;

Funkcja

AVT3500

£

<

LED_COM1

PortD8

PortD 5

LEDCOM2

PortD.5

PortD 4

LED.COM3

PuilD.4

PortD.3

LEDCOM4

POTD.3

PortD 2

LED A

PortB.O

LED_B

PonB 1

PnrtB 3

LED_C

PortB 5

LED_D

Por.B.3

PurtB 2

LED_E

HOM14

POI1B6

LED_F

PoftB.5

PortBO

LED G

PortB 6

PortB 7

lED_DP

PortB.7

portO. 1

SW2

PorlD.1

POftE?

Tabela 4 Przyporządkowanie połączeń na obu płytkach dla programu LEDMulti

Fot. 2 Wykorzystanie układu PCF8591 zawartego na płytce AVT3500


Listing 47 Zmienione definicje wypnmwdzeń programu LEDMulti

// Definicje wyprowadzeń tfdefine LED_A 4 tfdefine LED_B 3 tfdefine LED_C 5 tfdpfine l Fr>_0 2 tfdefine l FD_F 6 tfdefine LED_F 0 tfdefine LED_c, 7 tfdefine LED dp 1 #define ledport portb 4define ledddr ddrb tfdefine C0M1 5 fdefire C0M2 4 ?defire C0M3 3 #defire C0M4 2 *defir.e comport portd #defire comddr ddrd *define swport PORTE *define SWDDR CDRE ydefine SWPIN FINE #detine swl 0 tfdefine SW2 2


Przenoszenie programów

Zwracamy się teraz prędko ku tematom znacznie bliższym C. Przeniesiemy dwfa różne, napisane do tej pory piogiamy na naszą nową płytkę. Pierwszym z nich będzie ostateczna wersja obsługi wyświetlacza LED. Drugim będzie napisana ostatnio obsługa przetwornika PCF8591. Specjalnie wybrałem dwa skrajnie różne programy. Oto najważniejsze różnice, na które chcę zwrócić uwagę:

1.    Pierwszy z programów posługuje się wyświetlaczem LED, drugi LCD.

2.    W drugim programie wprowadziliśmy podział na pliki pod względem zadań poszczególnych „modułów”.

3.    Drugi program korzysta z elementu niedostępnego na nowej płytce. Pokażemy, jak w prosty sposób, łącząc obie płytki, rozszerzyć możliwości naszego układu.

46 Styczeń 2006 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
Bez nazwy 7 (10) Dwie ostatnie grupy ładowarek są najczęściej stosowane do przeładunku materiałów gr
Grzyby niedoskonałe2 96 Wyróżnia się tu trzy klasy: Blastcmycetes, Hyphomycetes i Coleomyce-tes, z k
296 KAZIMIERZ I (ż. JADWIGA). VI. 10, ca1): Illustrissima Hedwigis filia regis Polonie1). Dwie ostat
s599 Instalacja Red Hat Linuks ■599 Polecenia programu Disk Druid W ostatnim polu programu znajdują
21088 IMGC39 (2) widomy w skrócie perspektywicznym tylko jedną płaszczyznę, a w następ* nym - dwie.
Ostatnią grupą wskaźników są wskaźniki zadłużenia. Dają się one podzielić na dwie podstawowe grupy,
Str 076 Wstawiając dwie ostatnie zależności do pierwszego równania otrzymamy 2Qi = (0,02 - O,)2 + (0
8 (1387) turą masową, ludową i wysoką. Dwie ostatnie traktowane są jako oparte na działaniach harmon
img382 (6) na pewno a i b, i przypuszczalnie inne, są pisane wstecznie. Pierwsza litera jest uszkodz
DSC38 - środki masowego przekazu i telekomunikacja R    ,,-mvch /. przemysłem. Dwie
Metrologia prawnaOznaczenia wagi nieautomatycznej wg Dyrektywy NAWI dwie ostatnie cyfry roku numer j
11114 Image35 (5) Programowanie ABC... C Warunki Warunki są to pewne specyficzne wyrażenia, które mo

więcej podobnych podstron