Witam
Wykonałem dosyć ciekawy układ odpowiadający za oddymianie pomieszczenia po otrzymaniu sygnału z czujki dymu. Wszystkie opcje oprogramowania i symulacje [na procku] działają ok. Są jednak 2 problemy:
1. Nie umiem uruchomić zegarka na kwarcu 8mhz. Ot mam taki prosty programik:
Zewnętrzny kwarc mam o częstotliwości 8 MHZ. Opis jaki jest do tego programiku:
Kwarc mam wlutowany w miejsce XT1 [ustawione jako input], XT2 [ustawione jako output]. Do tego dwa kondensatory 33p i do masy. Fuse bits próbowałem na wewnętrzny zegar 8mhz [w avrdude]: -U hfuse:w:0xD9:m -U lfuse:w:0xe4:m i na zewnętrzny 8 mhz [kwarc]: -U hfuse:w:0xD9:m -U lfuse:w:0xee:m. No chyba, że się mylę w tych fuse bitach... W każdym razie zegarek stoi
2. Sam sygnał z czujki dymu będzie to 5V brane z układu zasilania uC [przekaźnik itd]. Jednakowoż widzę, że mam problem z wykrywaniem jedynki. Zastosowałem zabezpieczenie przeciwko drganiu styków [programowe] ale niestety to nic nie daje. Wejście jest w stanie wysokiej impedancji zapewne. Jak to się profesjonalnie rozwiązuje? Jakieś rezystory podciągające, czy steruje się 0??
Dziękuję za pomoc
PS. Konfiguracja portów:
Piny:
PC.0 - sygnał z czujnika dymu
PB.6 - XT1
PB.7 - XT2
Wykonałem dosyć ciekawy układ odpowiadający za oddymianie pomieszczenia po otrzymaniu sygnału z czujki dymu. Wszystkie opcje oprogramowania i symulacje [na procku] działają ok. Są jednak 2 problemy:
1. Nie umiem uruchomić zegarka na kwarcu 8mhz. Ot mam taki prosty programik:
$regfile = "m8def.dat" 'Dyrektyway dla kompilatora.
$crystal = 8000000 'Oscylator wewnętrzny o częstotliwości 8MHz.
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0
Config Clock = Soft 'Konfiguracja czasu.
Config Date = Dmy , Separator = / 'Konfig. daty. Dmy=dzień,miesiąc,rok. Seperator=/,albo-,albo. .
Enable Interrupts 'Uruchamiamy odblokowania.
Date$ = "02/08/06" 'Ustawiamy datę od której wystartuje.
Time$ = "12:00:00" 'Ustawiamy czas od którego wystartuje.
Do 'Pętla główna.
Cls 'Czyść Lcd.
Lcd Time$ 'Pobierz aktualny czas.
Locate 1 , 10 'Za wyświetlonym czasem na Lcd napisz: "Czas".
Lcd "Czas" '
Lowerline 'W drugiej linii.
Lcd Date$ 'Pobierz aktualną datę.
Locate 2 , 10 'Za datą na wyświetlaczu napisz: "Data".
Lcd "Data" '
Waitms 100 'Trzymaj chwilę wyświetlony czas.
Loop 'Zamknij pętlę.
End 'Koniec pętli.Zewnętrzny kwarc mam o częstotliwości 8 MHZ. Opis jaki jest do tego programiku:
Cytat:'Kwarc zegarkowy lutujemy w miejsce zewnętrznego kwarcu procesora, a sam procesor uruchamiamy na generatorze wewnętrznym,
'8MHz, ustawiając Fusebit na 0100. Oczywiście datę i czas początkowy musimy wpisać do programu.
'Po skompilowaniu, zegar startuje i zaczyna mierzyć czas.
Kwarc mam wlutowany w miejsce XT1 [ustawione jako input], XT2 [ustawione jako output]. Do tego dwa kondensatory 33p i do masy. Fuse bits próbowałem na wewnętrzny zegar 8mhz [w avrdude]: -U hfuse:w:0xD9:m -U lfuse:w:0xe4:m i na zewnętrzny 8 mhz [kwarc]: -U hfuse:w:0xD9:m -U lfuse:w:0xee:m. No chyba, że się mylę w tych fuse bitach... W każdym razie zegarek stoi
2. Sam sygnał z czujki dymu będzie to 5V brane z układu zasilania uC [przekaźnik itd]. Jednakowoż widzę, że mam problem z wykrywaniem jedynki. Zastosowałem zabezpieczenie przeciwko drganiu styków [programowe] ale niestety to nic nie daje. Wejście jest w stanie wysokiej impedancji zapewne. Jak to się profesjonalnie rozwiązuje? Jakieś rezystory podciągające, czy steruje się 0??
Dziękuję za pomoc
PS. Konfiguracja portów:
'*******************************************************************************
'***************************** konfiguracja we/wy ******************************
'*******************************************************************************
Config Portb = &B10000111
Config Portc = &B0110000
Config Portd = &B11111111
Config 1wire = Portd.1
'*******************************************************************************
'*************************** stany spoczynkowe portow **************************
'*******************************************************************************
Portb = &B00111000
Portc = &B1000000
Portd = &B00000000Piny:
PC.0 - sygnał z czujnika dymu
PB.6 - XT1
PB.7 - XT2
