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.
Kwarc
wszystko jest w pomocy dla Bascoma ...... wystarczy przeczytać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.
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 
-
K_o_n_r_a_d
- Użytkownik
- Posty: 123
- Rejestracja: 29 lip 2005, 10:21
- Lokalizacja: Lublin
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)