-
1. Data: 2014-01-05 01:25:31
Temat: DCF77 a odbieranie bitow AVR
Od: a...@p...pl
Czesc,
chcialbym sie pobawic w odbior DCF77. Nie chce brac gotowcow i
programowac prockow, ale chcialbym wiedziec jak funkcjonuje algorytm
odbioru bitow DCF77'a?
Wiem, ze musze "samplowac" wejscie (z sygnalem DCF'a) i liczyc czas
stanu wysokiego i niskiego. Ale brakuje mi wiedzy jak i w ktorym
momencie UZNAWAC, ze jest 0 (sygnal 100ms) a kiedy jest 1 (sygnal
200ms)...Jak uznac, ze zaczyna sie minuta (brak impulsu)....Ze
zdekodowaniem bitow sam sobie rade, bo to jest wszedzie opisane, ale
jak odbierac te bity???
--
ThinkXtra
-
2. Data: 2014-01-05 10:02:14
Temat: Re: DCF77 a odbieranie bitow AVR
Od: BartekK <s...@d...org>
W dniu 2014-01-05 01:25, a...@p...pl pisze:
> Czesc,
>
> chcialbym sie pobawic w odbior DCF77. Nie chce brac gotowcow i
> programowac prockow, ale chcialbym wiedziec jak funkcjonuje algorytm
> odbioru bitow DCF77'a?
>
> Wiem, ze musze "samplowac" wejscie (z sygnalem DCF'a) i liczyc czas
> stanu wysokiego i niskiego. Ale brakuje mi wiedzy jak i w ktorym
> momencie UZNAWAC, ze jest 0 (sygnal 100ms) a kiedy jest 1 (sygnal
> 200ms)...Jak uznac, ze zaczyna sie minuta (brak impulsu)....Ze
> zdekodowaniem bitow sam sobie rade, bo to jest wszedzie opisane, ale
> jak odbierac te bity???
>
Najłatwiej - jak każdy inny tego typu protokół czasowy - podłącz sygnał
wejściowy do wejścia przerwania INT0/1, i w obsłudze przerwania:
- sprawdzaj wartość timera timer0/1/2 czy który tam masz wolny (jeśli
jest ~100ms to zapisz że odebrano 0, jeśli jest ~200ms, to zapisz że
odebrano 1, jak znacznie więcej niż 200mS = zapisz że zaczyna się
minuta, jak dużo mniej lub coś pomiędzy - błąd/zakłócenie).
- startuj od zera timer (ustawiony tak, by się przez te 200ms nie
przepełnił), by w następnym przerwaniu zbadać ile zliczył (jaki czas
minął).
--
| Bartłomiej Kuźniewski
| s...@d...org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338
173
-
3. Data: 2014-01-05 10:52:19
Temat: Re: DCF77 a odbieranie bitow AVR
Od: szod <b...@a...pl>
W dniu 05-01-2014 10:02, BartekK pisze:
> Najłatwiej - jak każdy inny tego typu protokół czasowy - podłącz sygnał
> wejściowy do wejścia przerwania INT0/1, i w obsłudze przerwania:
> - sprawdzaj wartość timera timer0/1/2 czy który tam masz wolny (jeśli
> jest ~100ms to zapisz że odebrano 0, jeśli jest ~200ms, to zapisz że
> odebrano 1, jak znacznie więcej niż 200mS = zapisz że zaczyna się
> minuta, jak dużo mniej lub coś pomiędzy - błąd/zakłócenie).
> - startuj od zera timer (ustawiony tak, by się przez te 200ms nie
> przepełnił), by w następnym przerwaniu zbadać ile zliczył (jaki czas
> minął).
Musi też mierzyć przerwy, bo trzeba namierzyć początek transmisji. Od
tego trzeba zacząć. Potem odczytywać bity.
-
4. Data: 2014-01-05 10:53:12
Temat: Re: DCF77 a odbieranie bitow AVR
Od: BartekK <s...@d...org>
W dniu 2014-01-05 10:52, szod pisze:
> W dniu 05-01-2014 10:02, BartekK pisze:
>
>> Najłatwiej - jak każdy inny tego typu protokół czasowy - podłącz sygnał
>> wejściowy do wejścia przerwania INT0/1, i w obsłudze przerwania:
>> - sprawdzaj wartość timera timer0/1/2 czy który tam masz wolny (jeśli
>> jest ~100ms to zapisz że odebrano 0, jeśli jest ~200ms, to zapisz że
>> odebrano 1, jak znacznie więcej niż 200mS = zapisz że zaczyna się
>> minuta, jak dużo mniej lub coś pomiędzy - błąd/zakłócenie).
>> - startuj od zera timer (ustawiony tak, by się przez te 200ms nie
>> przepełnił), by w następnym przerwaniu zbadać ile zliczył (jaki czas
>> minął).
>
> Musi też mierzyć przerwy, bo trzeba namierzyć początek transmisji. Od
> tego trzeba zacząć. Potem odczytywać bity.
No to przecież tak jest.
przy "początku transmisji" pierwszy impuls > przerwanie > w przerwaniu
stwierdzamy "nie było to ~100ms ani ~200ms" więc "poprzedni bit ani nie
był 0 ani 1", i nic się nie dzieje, dopiero od tego momentu startuje
timer i odlicza czas, i przy drugim impulsie jest już czas zliczony (i
będzie ~100 lub ~200ms i zostanie zapisany jako odpowiedni bit)
--
| Bartłomiej Kuźniewski
| s...@d...org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338
173
-
5. Data: 2014-01-05 11:26:30
Temat: Re: DCF77 a odbieranie bitow AVR
Od: szod <b...@a...pl>
W dniu 05-01-2014 10:53, BartekK pisze:
> No to przecież tak jest.
> przy "początku transmisji" pierwszy impuls > przerwanie > w przerwaniu
> stwierdzamy "nie było to ~100ms ani ~200ms" więc "poprzedni bit ani nie
> był 0 ani 1", i nic się nie dzieje, dopiero od tego momentu startuje
> timer i odlicza czas, i przy drugim impulsie jest już czas zliczony (i
> będzie ~100 lub ~200ms i zostanie zapisany jako odpowiedni bit)
Nie bardzo rozumiem. Jak przyjdzie impuls to timer zawsze coś tam
zliczy. Czy to będzie 100, czy 200, czy 50ms. Trzeba mierzyć czas
pomiędzy bitami żeby stwierdzić gdzie jest początek. Jak będzie początek
transmisji, to nic Ci nie uruchomi przerwania. Mówiąc inaczej jak
będziesz mierzył tylko bity, to nie namierzysz początku. Uzyskasz tylko
ciąg bitów.
Robiłem dekodowanie sygnału dla własnego zegara, ale nie pamiętam
szczegółów. Dawno to było. W każdym razie dobrze jest skorzystać z
pomocy. Są projekty symulatorów DCF. Wpisuje się godzinę i on nadaje
sygnał jak rzeczywisty DCF. Można sprawdzić czy program dekoduje to
prawidłowo. Zawsze to lepsze niż zastanawianie się czy walnięty program,
czy zakłócona transmisja. Ja też tak robiłem. To był jakiś projekt z netu.