Kwarc

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
użytkownik

Kwarc

Post autor: użytkownik » 19 lis 2005, 23:31

Cześć
Czy podczas kompilacji programu (nie wykorzystuje adnych operacji typu transmisja, ani wait; składa się właściwie tylko z pętli i zmieniania wartości portu) należy podać wartość użytego kwarcu (10.0MHz) w opcjach BASCOM'a lub zadeklarować w treśąci programu? Jeśli tak to gdzie? Czy pozostanie przy domyślnej wartości 11.05 MHz spowoduje tylko innaą prędkość działania, czy może powodować brak działania procesora?

Z góry dzięki za udzielenie odpowiedzi.

bogdan_p
-
Posty: 13
Rejestracja: 24 paź 2005, 18:00

Post autor: bogdan_p » 20 lis 2005, 9:59

Przeznaczenie:
Zmienia ustawienie częstotliwości zegara taktującego procesor. Użycie tej dyrektywy w programie zastępuje wartość podaną w opcjach kompilatora.
Składnia:
$CRYSTAL = wartość
gdzie: wartość Liczba określająca częstotliwość (w Hz!) kwarcu lub oscylatora taktującego procesor. Wartość nie może być zmienną, lub liczbą obliczaną podczas kompilacji.
Opis:
Jeśli istnieje potrzeba użycia innych częstotliwości pracy i szybkości transmisji, niż te które mogą być wybrane w opcjach kompilatora, należy użyć tej dyrektywy.
wszystko jest w pomocy dla Bascoma ...... wystarczy przeczytać

Awatar użytkownika
c4r0
Moderator
Posty: 2152
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 20 lis 2005, 10:52

Ja parę razy wpisałem inną częstotliwość niż powinno być i wtedy tylko waity miały inną długość (przynajmniej tak się na oko wydawało), więc program powinien chodzić tak samo przy każdej podanej wartości, tylko wszystkie wait-y i delay-e będą inne. Ale nie wiem jak się to ma do programowania - czy częstotliwość kwarcu nie ma znaczenia w procesie zapisu do pamięci przez programator. Ale jeśli masz możliwość to zawsze warto podać na wszelki wypadek (wpisując na początku programu np. $CRYSTAL = 12000000) - co Ci szkodzi :wink:

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 20 lis 2005, 12:05

Dyrektywa $CRYSTAL = ... tylko informuje kompilator o wartości częstotliwości dołączonego generatora (nie koniecznie kwarcowy). A co z tego wynika wszystkie programowe np. opóźnienia będą inne. Jeżeli piszemy program który ma zapalać diodę z częstotliwością 1Hz i podamy wartość po $CRYSTAL = ... dwa razy większą niż jest w rzeczywistości to zmieni to tylko tyle, że dioda będzie migała z częstotliwością 0.5Hz, ale jeżeli mamy w programie, np. obsługę programową RS232 (sprzętową też) albo 1Wire to najprawdopodobniej nie zadziała, bo opóźnienia też będą inne. Nie będzie to zazwyczaj miało wpływu na transmisje programową poprzez I2C, SPI, itp. (tam, gdzie czas nie ma znaczenia)

ODPOWIEDZ