Potrzebuję porady.
Przeznaczenie układu jest banalne - zewnętrzny czujnik dla stacji pogodowej.
Generalnie układ działa tak, że co 15 min wybudza się, zbiera wszystkie dane i je wysyła radiem, następnie zasypia.
Tryb uśpienia konfiguruję tak:
Tak usypiam po skończonej pracy:
A to robię zaraz po przebudzeniu w przerwaniu od zegara (nie wiem czy potrzebnie, skoro i tak przerwanie wybudza procesor?):
Tak konfigurję zegar ULP generujący sygnał wybudzający (tutaj co ok. 1 min.):
Wzbogaciłem układ w pluwiometr z kontaktronem, który generuje impulsy co określoną objętość deszczu. Impulsy chcę zliczać, a następnie wraz z pozostałymi danymi przesyłać do centrali. W czasie deszczu impulsów może być kilkadziesiąt, a nawet kilkaset w ciągu tych 15 minut spania procesora.
Teraz pytanie: jak to zrobić, żeby nie wybudzać procesora przerwaniem tylko po to, żeby zwiększyć jakiś licznik o 1 (słownie: jeden)? Zastanawiam się np. na takim rozwiązaniem, żeby zaprzęgnąć do pracy system zdarzeń i żeby zdarzenie przerwania, powiedzmy INT0 powodowało zwiększenie wartości jakiegoś licznika, np TC0 - mógłbym wtedy co te 15 minut sprawdzać rejestr timera i go zerować. Tylko czy warto?
Przeznaczenie układu jest banalne - zewnętrzny czujnik dla stacji pogodowej.
Generalnie układ działa tak, że co 15 min wybudza się, zbiera wszystkie dane i je wysyła radiem, następnie zasypia.
Tryb uśpienia konfiguruję tak:
Kod: C / C++
Tak usypiam po skończonej pracy:
Kod: C / C++
A to robię zaraz po przebudzeniu w przerwaniu od zegara (nie wiem czy potrzebnie, skoro i tak przerwanie wybudza procesor?):
Kod: C / C++
Tak konfigurję zegar ULP generujący sygnał wybudzający (tutaj co ok. 1 min.):
Kod: C / C++
Wzbogaciłem układ w pluwiometr z kontaktronem, który generuje impulsy co określoną objętość deszczu. Impulsy chcę zliczać, a następnie wraz z pozostałymi danymi przesyłać do centrali. W czasie deszczu impulsów może być kilkadziesiąt, a nawet kilkaset w ciągu tych 15 minut spania procesora.
Teraz pytanie: jak to zrobić, żeby nie wybudzać procesora przerwaniem tylko po to, żeby zwiększyć jakiś licznik o 1 (słownie: jeden)? Zastanawiam się np. na takim rozwiązaniem, żeby zaprzęgnąć do pracy system zdarzeń i żeby zdarzenie przerwania, powiedzmy INT0 powodowało zwiększenie wartości jakiegoś licznika, np TC0 - mógłbym wtedy co te 15 minut sprawdzać rejestr timera i go zerować. Tylko czy warto?