Pin INT w PCF jest typu otwarty dren. Potrzebujesz więc rezystor podciągający.
Jeśli w rejestrze kontrolnym 00h bit b2 jest wyzerowany to śmiało można adresować 08h do 0fh jako pamięć RAM. Co do resetu programowego, to po wpisaniu b00000000 pod adres 00h rzeczywiście powinien on nastąpić. Proponuję zrobić taki myk techniczny: wpisy do rej kontrolnego (00h): - najpierw b00000000 czyli nieszczęsny reset; - potem b10000000 (128dec)...
jako ze jestem początkujący to po prostu robię kopiuj i wklej z innych przykładów ;) nie do końca rozumiejąc o co chodzi (C to czarna magia na razie jeszcze). dlatego przydałby ci się jakiś dobry kurs C ;) A w uproszczeniu jak zamienić SIGNAL na ISR - po prostu na razie zamiast SIGNAL pisz ISR tylko podawaj nieco inne nazwy wektorów tych przerwań....
Masz dwie metody: 1) Łatwiejsza - Ustawiasz Clock mode, timer na zero, timer alarm, timer na odliczanie minut, wpisujesz do rejestru alarmu timera 15, czekasz na przerwanie. Po przerwaniu zerujesz rejestr alarmu, zerujesz flagę alarmu i zerujesz timer. Control status register (0x00) = 0000 X1XX Timer register (0x07) = 0 Alarm control register (0x08)...
ogolnie jest zasada tak ze w przerwaniach nie powinno byc jakis procedur opozniajacych, przerwanie powinno sie wykonac , obliczyc i wylaczyc jak najszybciej,glowny program jest od czasowek , komunikacji i2c itp. przynajmniej ja sie staram trzymac tych zasad.czasami mozna je nagiac oczywiscie.to zalezy od zlozonosci projektu. ja PCF8583 obsluguje zawsze...
Miałem podobny problem: Control Status Register (0x00) ustawiony na 0x04 Alarm Control (0x08) ustawiony na 0x90 chciałem uzyskać alarm codziennie o określonej godzinie, a skorzystać chcę z wyjścia INT PCF8583. Wszystko ustawione, a flaga się nie zmienia, nie zmienia się też stan wyjścia INT (ma się zmienić z Hi na Lo) Po sprawdzeniu rejestrów okazało...
Tak wygląda część z przerwaniem. Cały kod jest dość długi i działa poprawnie, tylko z tym mam problem. Nie jestem w stanie wykryć co robię źle. [syntax=c] int k = 0; volatile char licz=0; ISR(INT4_vect) { licz = 1; } ///////PĘTLA GŁÓWNA PROGRAMU int main(void) { sei(); DDRE &= ~(1<<PE4); PORTE = (1<<PE4); DDRA = (1<<PA7); PORTA...
Sprawdź czy w projekcie masz ustawiony właściwy typ procesora
Timery lub lepiej alarm w pcf8583/8563 i przerwanie zewnętrzne
Z bascomem nie pomogę, ale zasady pewnie są podobne. Przenieś multipleksowanie wyświetlacza do przerwania timera.
Witam! Gdy zegar pracuje w trybie zwykłym (nie ustawiono żadnych alarmów) na wyjściu /INT co sekundę występuje stan "aktywny" - sygnał o częstotliwości 1Hz i wypełnieniu 50% Kolega pch wyraźnie napisał, że potrzebuje przerwanie co 100ms a nie co sekunde. Wyjście 1Hz to sygnał raczej jemu nieprzydatny :D (M.)
hmm, a sprawdź samo przerwanie przyciskiem i powiedz jakie zbocze je aktywuje, może jakiś błąd w programie?
Możesz wykorzystać kwarc zegarkowy 32kHz (dokładnie 32.768kHz) i timer 2 mikrokontrolera, lub zegar Pcf8583. Przerwań i tak nie unikniesz jesli nie chcesz zbyt częzto korygować liczonego czasu.Przerwania nie są aż tak straszne, wystarczy zrozumieć jak działają.
Zawsze jak wchodzisz w przerwanie np.On Timer lub w podprogram sub procesor odkłada zawartość pewnych rejestrów na stos (co zajmuje mu ileś us) a po przerwaniu (lub sub-ie) zdejmuje ze stosu (co znowu zajmuje czas). Rachunkowo wygląda wszystko dobrze w programie-ale tylko gdy procesor chodzi z nieskończoną prędkością. A chodzi ze skończoną. A-w tych...
Witam, mam zrobiony zegar czasu rzeczywistego pcf8583, wykorzystuje przerwanie pcf-a od timera, chce wyjscie int podlaczyc do jednego pinu, pin w mikrokontrolerze co chwile sprawdzam. Gdy timer zlicza to na Int jest 1, wykazuje mi wtedy 4,8V, jak juz skonczy to wtedy ma 2,7V, mikrokontroler mi tego nie wychwytuje jako 0, probowalem przez rezystor dac...
Tak, ale klawiatura jest częściej skanowana i trzeba odczekać jakiś czas aby DS przekonwertował temp. a to przerwanie które używam jest od PCF8583
Pętla jest, ale zanim w nią wejdziesz blokowane są przerwania :( To while(1) z tego powodu jest niezbędne.
Zegar działa na przerwanie zewnętrzne (pcf8583) więc może sobie czekać na przycisk ewjścia do menu w nieskończoność. Freddie Chopin czy mógłbyś swój pomysł wyrazić w kodzie ? Ja szlify graficzne kodu robie dopiero kiedy mi zadziała.
Witam wszystkich. Mam problem z nastawieniem alarmu w pcf8583...próbowałem już różnych kombinacji i ciągle nic. Muszę zrobić budzenie procka przerwaniem int generowanym przez ową kośc. Pewnie robię coś nie tak...proszę bardzo o kawałek kodu (najlepiej w bascomie) nastawiającego alarm. ps. kość jest sprawna - datę i godzinę ustawiam i czytam.
uzupelnienie do punktu c: w pcf mozesz ustawic godzine alarmu. wtedy to np. pcf wygeneruje ci przerwanie.
Witam. Szukałem na elektrodzie podobnych tematów, ale jak ktoś się już o takie coś spytał to został zaraz odciągniety od tego pomysłu i proponowano mu robienie takiego czasomierza na uprocku. A ja muszę zrobić to na PCF8583. Już tłumaczę o co chodzi: Mam dosyć skomplikowany układ na ATmega128 (jeszcze nie jest dokończony, ale prawie :) ). Chodzi mi...
Ale szybkie postępy! Dwa programy obsługi PID są do ściągnięcia z MCS Electronics. PCF8583 może też generować prostokąt 1Hz-co można wykorzystać do "odpytywania" o czas w pętli Do...Loop lub w przerwaniach. PCF8583 ma też kilka? dziesiąt bajtów RAM-które można wykorzystać do nastaw. Zwłaszcza przy zasilaniu z baterii przy wyłączonym zasilaniu układu.
Dzięki, mam jeszcze pytanie z innej beczki a mianowicie problem z obsługa przerwania. Config Pind.2 = Input Config Int0 = Low Level On Int0 Przerwanie A = 0 F = 0 Enable Interrupts Enable Int0 Do If Ok = 0 Then Waitms 50 If Ok = 0 Then Sound Buzer , 1 , 100000 Set Buzer Gosub Menu End If End If If F = 1 Then Cls Lcd "przerwanie" Wait 1 Cls...
Na procu jest uruchomiony miernik częstotliwości (stacjonarny). Wykorzystane są dwa 16bitowe timery, uruchomiona jest komunikacja po rs232, zegar czasu na PCF8583 z podtrzymywaniem bateryjnym. Nie bardzo wiem jak to wszystko przełożyć na BASCOM AVR. Na początek spróbuj uruchomić przerwania oraz timer0 w trybie normalnego licznika - tak aby liczył z...
Zainspirowała mnie Twoja odpowiedź To jest niemożliwe. i jeszcze raz sprawdziłem wszystkie ustawiane flagi. Okazało się, że w procedurze inicjalizacji zamiast I2cwbyte &B11000010 'alarm timer 1s int powinno być I2cwbyte &B11001010 'alarm timer 1s int i sprawa rozwiązana - jest przerwanie równo co sekundę. Dzięki za podpowiedzi! Swoją drogą, dokumentacja...
przerwanie na INT da się zaobserwować zwykłym miernikiem.
Witam. Zrobiłem sobie zegarek na pcf 8583, wszystko działa ok tylko nie moge obczaić jak się w nim usawia alarmy a dokładniej przerwanie INT. Podłączyłem końcówke INT (pcf8583) do INT1 (M32) i po włączeniu przerwań układ cały czas wykonuje przerwanie (to normalne bo ciągle jest stan 0 na wejściu). Chce zrobić żeby pcf8583 dawał mi sygnał co 1godz Jak...
Właśnie pilnie potrzebuję biblioteki pcf8583 do proteusa i mam takie pytanko: Skąd ją mogę pobrać?
Dlaczego chcesz odczytywać czas w przerwaniu? Przerwanie powinno być jak najkrótsze. Odczyt danych z pcf-a zrób w pętli głównej a przerwanie wykorzystaj tylko do migania kropką.
Wielkie dzięki za szybką odpowiedź. Zrozumiałem już ideę tych przerwań. Mam jedno pytanie jeszcze wg. tego co zrozumiałem i co napisałeś jako przykład. Programik się kompiluje ale przerwanie nie odpala się (na ten port wchodzi mi sygnał 1Hz z zegarka PCF8583). Nie powinienem jeszcze skonfigurować jakie jest wyzwalanie? Czy zboczem czy stanem czy zmianą?
Koledzy chyba rozwiązałem swój problem..... Więc postanowiłem podłączyć pod ATmega układ PCF8583 i jedno z jedo wyprowadzeń podłącze pod przerwanie Int0 które będzie występowało co 1s niezależnie od taktowania uC i napisanego programu. Co Wy na to, czy to dobre moje rozumowanie????
witam. Napisałem o to taki program: [syntax=basic4gl]On Int0 Przerwanie Nosave Enable Int0 Config Int0 = Change Enable Interrupts Config Portd.7 = Output Dim A As Byte Cls Do Locate 1 , 1 Lcd ; A; Loop End Przerwanie: A = A + 1 Toggle Portd.7 Return [/syntax] pin pd.2 mikroklocka podłączony jest do przerwania int PCF8583 lub pod zwykły przycisk zwierany...
Na szczęście dla mnie w tym projekcie nie jest istotne czy wpiszę 12 czy 16MHz bo z opóźnień procka praktycznie nie korzystam, więc czy wait 1 będzie trwał 1 sekundę czy 1,2 jest mało ważny, a wszystko co związane z czasem robię na PCF8583 i przerwaniach alarmu. Znaczy pracuję na godzinach i minutach a nie na ms czy us. Projekt dość (zegar PCF8583,...
Ale i tak masz stały wzorzec czasu, czyli o więcej niż 1s nie powinno się rozjechać... + - impuls/inkrementacja _ - bezczynność/brak impulsu ______+______+______+______+______+_____... - przebieg impulsu z zegara _______+________+_____+_____+________+__... - inkrementacje sekund i nie ważne ile by nie trwało przeładowywanie timerów i programowych liczników...
Witam, chcę zbudować zegarko-termometr i napotkałem na problem: niemogę sobie poradzić z przerwaniami co 1 sekunde :( chcę aby temperatura była odczytywana co sekunde ale nie mogę jej odczytać :( chciałbym aby ktoś pokazał mi jak ma wyglądać obsługa przerwań :) wyjście INT z PCF8583(32,768MHz) mam podłączone do atmegi pod INT0
Witam! Mam taki problem że układ na bierząco podaje aktualną godzinę z pcf8583. Co 15 sekund pcf uruchamia przerwanie int0 i w tym momencie następuje odczyt i wyświetlenie temperatury. Program działa poprawnie do czasu aż za którymś razem po powrocie z przerwania na ekranie pojawiają sie krzaki ale funkcje z przerwania nadal działają. po dłuższej chwili...
Zasadniczy błąd, jeśli chodzi o przerwania. RTC PCF8583 posiada sprzętowe wyjście przerwania. Co sekundę podaje na nie sygnał. Zatem podłączamy je do jednego z pinów obsługujących przerwanie sprzętowe w procku i to on się martwi co ma zrobić i kiedy. Nie ma potrzeby wykorzystywania Timera procka. PORADA Nigdy nie wykorzystujemy dowolnych pinów procka...
czemu w nocie katalogowej atmela nic o tym rejestrze nie pisze (TCON) :( avr'y są lepiej opisane dokładnie nie wdawałem się w analizę rejestrów 2051 ale wydawało mi się, że nie ma on możliwości zaprogramowania na jakie zbocze ma reagować przerwanie :D
Witam. Dokładnie tak, jak mówi kolega Prodig. Ponieważ nigdy nie używałem Powerdown, więc postanowiłem sprawdzić to wybudzanie. W pętli Do ... Loop było Powerdown i mruganie Ledem, aby sprawdzić, czy układ żyje, a przerwania na Int0 było podawane co 1 sek przez PCF8583. Jeśli w programie (Attiny2313) było: Config Int0 = Rising to program umierał, a...
Witam Oglądam sobie dokumentację do PCF8563 i brakuje mi w nim generowania przerwań (na pinie INT) co sekundę jak robi to PCF8583. Wolałbym nie używać pinu CLKOUT skonfigurowanego do pracy przy 1 Hz. Kiedy używam PCF8583 ATMEGA w przerwaniu zewnętrznym generowanym przez PCF odczytuje sekundy, a jak trzeba to minuty i ... tak dalej. W PCF8563 widzę teoretycznie,...
chyba zrobię to na alarmach w RTC i przerwaniach.
Juz doszedłem do tego co było nie tak. Tak jak mówisz mirek to nie błąd PCF'a lecz mój :D Powodem zawieszenia było czytanie magistrali w przerwaniu. W czasie czytania lub zapisywania następowało drugie przerwanie i tam kolejne czytanie lub zapisywanie. Wywalenie funkcji dotyczących i2c z przerwań pomogło :D
Cześć, z reguły tak to się robi, że podłączasz odbiornik podczerwieni pod przerwanie. Jeżeli program byś pisał w bascomie to prawdopodobnie musi być podłączone pod PIND.2 Jeżeli obsługę RC5 będziesz robił sam to możesz podłączyć pod dowolne przerwanie. Ogólnie zasilanie takiego odbiornika podłącza się przez filtr RC np 100 ohm szeregowo i 10u elektrolit...
Spróbuj ustawić w rejestrze 0x08 wartość 0xD0 a nie 0xA0. Przerwanie jest dostępne tylko gdy włączona jest funkcja alarmu tak podaje PDF. Pozdrawiam
Zastanawiam się jak zrealizować cykliczne budzenie mikrokontrolera ATMEGA8 z jakiegoś "głębszego" trybu oszczędzania energii (inny niż idle)? Ta cykliczność to 1-2 min. Priorytetem jest minimalizacja zużycia energii (zasilanie z baterii). Z tego co wiem to: 1. Można użyć watchdog timerów (wdt). Czyli mikrokontroler budzony byłby co jakieś 2 sek. Trzeba...
Zrób wyświetlanie na przerwaniach i będzie ok
heh, no fakt :-) Czyli wpadłem na ½ rozwiązania. A czy to ma sens, czy dużo zyska się na omijaniu odczytania całego PCFa? Jak to się ma w praktyce na AVR 16MHz i sensownej f TWI (nie za duża, nie za mała)? Dzięki Czy to ma sens :?: Jakiś tam ma ;) Myślę , że jeśli nie masz w kodzie jakiś rygorystycznych ram czasowych , to możesz spokojnie odczytywać...
Witam...nic z tego nie wyszło rozwaliłem tyko w mak resztę programu....za chiny nie wiem jak obsłużyć tego PCF8583 datashety tylko namierzały mi w głowie a jakiegoś prostego przykładowego kodu w C nie znalazłem....menu jak się sypało tak sypie się dalej...nie radze sobie z tymi przerwaniami wychodzą cuda... posiłkując się elektrodą o dadatshetem napisałem...
Żeby zrobić menu - potrzebujesz dodać kolejne funkcje obsługi odczytu i wyświetlania temperatury. Obsługę wyświetlania i poruszania się po menu itd. Ponadto istniejącą procedure obsługi PCF musisz rozszerzyć o procedury odczytu i zapisu daty oraz obsługę budzika. Kolejna sprawa to wprowadzenie przerwań. Tzn. Ustawiasz w PCF odpoowiednią datę budzika...
Witam, mam mały problem: chcę odczytać minuty z układu pcf8583. Wartość tą odczytywałam co sekundę z przerwania INT0, tak samo jak sekundy, tyle że sekundy pokazuje mi dobrze, a minuty się zerują po 10 s. Jak zaczyna się kolejna minuta, to znowu ta dobra wartość mi się pokazuje przez 10 s. a potem się zeruje. Z czego to może wynikać?
Pobierasz czas przy kazdym przejsciu petli, wiec sprawdz jeszcze co sie stanie gdy wyjmiesz pcf8583 z podstawki i uruchomisz układ ... (symulacja braku polaczenia)
Procka wybudza przerwanie z PCF8583 czyli zegarka. Oczywiście zegarek ma własną baterię. Jaki otrzymałem prąd to ciężko powiedzieć, gdyż mam procek w układzie z kilkoma rzeczami i wszystko lutowane SMD więc ciężko powiedzieć ile ciągnie sam procek. Ogólnie wyszło mi 10,9mA. W układzie jest rzeczony PCF, jest pamięć EEPROM I2C, wyświetlacz 44780 i 24...
Witaj Kolego. Z zegarkami RTC philipsa to jest tak: 1. dobrze popatrz czy podłączyłeś przez diodę bateryjkę czy Ci jej nie rozładowuje. 2. Sam napisałeś procedurę I2C czy skopiowałeś od kogoś - dlaczego pytam - otóż jeśli masz jakieś przerwania i masz źle skonfigurowane te nóżki to w momencie kiedy Ty nie zdążysz ich przekonfigurować (mam na myśli SDA)...
No to doczytaj w dokumentacji za co jest to przerwanie odpowiedzialne ;-) Bo na pewno nie za odbiór "przerwania" generowanego przez RTC. Żeby to wykorzystać musisz: 1. Podpiąć wyjście INT kostki PCF8583 do wejścia sprzętowego INTx procesora (np. INT0) 2. korzystać z przerwania INTx (np. INT0), które w domyślnej konfiguracji zegarka będzie w takim układzie...
Jak uzyskać prawidłową incrementację "X"przy korzystaniu z sekund z PCF8583 Kod: If S=00 Then Incr X End If W momencie pojawienia się zer na LCD, X narasta wielokrotnie. Przy wstawieniu Wait LCD ma zacięcia. Albo umieścić to w procedurze przerwania od tego układu
Odpytywanie na sam adres też nie działa (0xA2)?, PCF nie wystawia w tedy ACK? Sprawdź czy rezonator pracuje, jak dobrze pamiętam to domyślnie powinien być sygnał na wyjściu przerwaniu.
1. Musisz podpiąć kwarc 32768Hz do PCF8583 - wszystko zresztą jest opisane w datasheetach. 2. zmienne przechowujące dane powinny mieć atrybut volatile - są wykorzystywane w przerwaniu 3. wyświetlanie na LCD w przerwaniu to nie za dobry pomysł 4. poza tym musisz za każdym razem ustawić odpowiednią pozycję kursora - inaczej dane powędrują Bóg wie gdzie.
Zablokuj przerwania na czas odczytu temperatury, powinno pomoc. Druga opcja to wykorzystać przerwanie zegara i od razu po odczycie czasu wykonać odczyt temperatury i potem wysłać rozkaz konwersji temperatury do DS. Jak podczas nadawania po 1Wire program wykona jakieś przerwanie to będą problemy z DS (przynajmniej ja takie miałem)
Witam Panowie, nie róbcie Hubertowi wody z . . . Hubercie - jeżeli zegar ma być dokładny to procek powinien być sterowany kwarcem a nie wewn. generatorem RC. Żadne przerwania tu niczego nie zmienią, choć można ten wymóg obejść używając zegara rtc na szynie i2c (np PCF8583) -ale to komplikacja i sprzętowa i programowa. Pozdrawiam
Łącze to na płytce stykowej, do układu mam podpiętą diode testową ktura miga jak dostaje przerwanie sprzętowe od pcf-a jak wyciągne kwarc to nie miga więc chyba jest dobry ten kwarc.
Płytka jest ok, bo działa na niej inna atmega8515 i wszystkie jej funkcje działają zupełnie normalnie. Bez timera działa. Zrobiłem obsługę pcf8583 i śmiga normalnie. Na 3 8515 jest to samo...
Witam Jak napisac w programie tak aby przerwanie zewnetrzne od PCF8583 co 1s bylo przez mikrokontroler krótko widziane (obojetnie zbocze narastajace albo opadajace). Chodzi mi tu o ATmega32, w atmegach to sie jakosc inaczej robi niz pozostalych AVR. Prosil bym o krótki listing jak ustawiamy INT0 w ATmega i jak trzeba co musimy wpisac do PCF8583 zeby...
Hmm pewnie wystarczy skasowac flagę, ale nawet wpisanie od nowa nastaw alarmu nie bedzie wielkim problemem. Co 8s przerwanie masz od watchdoga, który też jest konfigurowalny i moze pracować wywołując tylko przerwanie przy przepełnieniu. Co prawda pomyliłem się, w tiny26 przerwanie jest max co 2.2s, ale skoro i tak działa Cialarm więc nie musisz kombinować...
pcf_pinread(unsigned char adres_pcf, unsigned char pin) { unsigned char stan_portu; unsigned char signal; stan_portu = pcf_portread(adres_pcf); stan_portu >>= pin; signal = (stan_portu & 1); return signal; } Właśnie nie odczytuje w przerwaniu, odczyt PCFa jest ustalony w pętli głównej w której jak narazie jest...
he he mamy podobne gusty- też teraz bawie sie z S52 i PCF. nie pamietam czy programowe zatrzymanie zegara powoduje też że przestaje on generować przerwania co sekunde (może sie ktos wypowie dla pewnosci), takie zatrzymanie jest niby wskazane przy nastawianiu zegarka- osobiście darowałem sobie zatrzymywanie zegara w tym momencie. komunikacja z eepromem...
Nie wiem jek wygląda schemat twojego układu ale może sensowne byłoby wykorzystanie zewnetrznego generatora i podłączenie go do któregoś z wejść przerwań (o ile są nie wykorzystane). Jeżeli tak, to zamiast PCF8583 spróbuj zastosować PCF8563 (sam zegar bez dodatkowego RAM-u ale za to na jednym z wyprowadzeń można uzyskać przebieg o częstotliwości 32768Hz)...
Witam mam problem z chyba skonfigurowaniem przerwań w "C" do tej pory takie "zabawy" robiłem w bascomie ale tam to każdy potrafi ;) mam przerwanie int0 z pcf8583 w międzyczasie odczytuje temperaturę z ds18b20 no i .. właśnie jak uruchomiłem PWM zaczęły się problemy, układ czasami się resetuje lub zawiesza zacytuje fragmenty: dodam ze pdf czytałem wielokrotnie...
1. Jeżeli to ma być typowa sygnalizacja świetlna - czyli sekwencyjne przełączanie świateł to po co RTC ??? Wystarczy zwykłe przerwanie od Timer'a ! 2. Jeżeli jednak ma być RTC to jakie "impulsy" kolega chce zliczać ??? - w programie to raczej w takim wypadku trzeba odczytywać non-stop RTC i czekać na odpowiednią godzinę:minutę:sekundę......etc. 3. W...
Słyszałem o przerwaniach, ale trzeba by brać poprawkę na czas potrzebny do obsługi przerwania.Zauważ ze z każdą inkrementacją sekundy błąd stale rośnie. Kiedyś napisałem zegarek w BASCOMie właśnie z użyciem przerwań i po kilku tygodniach widać było wyraźne odchylenia, natomiast w zegarku z użyciem PCF8583 nie ma takiego problemu.
Zapewne interesuje cię czas z dokładnością 1 minuta wystarczy? A może i godzina? Ustaw alarm tak by zgłaszał się co minutę (godzinę) w przerwaniu porównanie i zrób co należy.
Potrzebuję odliczać czas z przedziału od 10ms do 99 godz. Zrobiłem to w taki sposób że ustawiony czas zamieniam na ms (liczba 4 bajtowa) i zliczam ilość przerwań od timera ustawonego na przerwanie 1ms. Wszystko fajnie tylko czas mi się rozjeżdza gdyż dokladność kwarcu jest ok 1%. Czy można jakoś zwiększyć stabilność wewnętrznego kwarcu (ATmega8)? Jaki...
Skoro program utyka w jakimś miejscu to znaczy że czekasz w pollingu na stan, który się nie pojawia. Po pierwsze dodałbym time out, który przerwie pętlę oczekiwania zanim układ zostanie zresetowany przez watchdog. Zapis nie jest w pętli, struktura programu wygląda tak: Skoro na magistrali nie ma innego mastera to należałoby wysłać ponowny warunek startu....
Dzięki wszystkim za odpowiedzi. Poprawiłem schemat, mam nadzieję, że teraz jest ok. Proszę więc o ostateczne rzucenie okiem :) http://obrazki.elektroda.net/28_12851938... poza tym proponuję ci z marszu i bez zastanowienia wyjście INT z układu PCF8583 podłączyć do jakiegoś wejścia INTx w procesorze żeby później wykorzystać przerwanie odmierzane...
Nie wiem czemu taki projekt chcesz robić aż na ATMedze... Ja bardzo podobny, też na MAX6953 zrobiłem na ATTINY12. Działa bardzo dobrze. A Mega8 - marnotrawstwo pinów. Potrzebne Ci tylko dwa do I²C, dwa do zasilania, reset i ew. przerwanie. A na pozostałych możesz zrobić... nie wiem co.. :P Pozdrawiam Damian
Ale Bascom czy FastAVR to sa to jezyki nieprzewidywalne. Niby tak, ale jeśli do obliczania czasu stosuje się timer i przerwania i wszystko jest dobrze skonfigurowane i wyliczone to nie powinno być problemów czasowych.
Po pierwsze to zajrzyj do pdf'a odbiornika IR, bo na Twoim schemacie brakuje konda i rezystora przy podłączeniu TSOP'a. http://pdf1.alldatasheet.com/datasheet-p... Ma być w programie: Wygaszacz (godzina + temperatura), - Czasomierz najprościej na programowym RTC: str. 244 w książce Wiązni, zaś temperatura - str. 293. Wszystko...
Zgodze sie z moim poprzednikiem.. wystarczy zastosować (w at90s2313) Timer1, preskaler ustawić na 256 a wartość komparatora na $7A12. przy kwarcu 8MHz przerwanie będzie występowało równo co sekunde.. wtedy nietrudno napisać odpowiedni program.. przerwanie aktualizuje np 3 czy 4 rejestry z aktualnym czasem, a główny kod interpretuje takie dane..
Nie wiem co jest poza tym w programie, ale: Zadeklaruj zmienne jako lokalne w readTime(). Przenieś zawartość readTime() do main(). Uprość program do minimum. Rozważ, co robisz w przerwaniach, a co nie. Hasła klucze: reentrancy, stack overflow, volatile. Albert
moja przygoda z TWI zaczęła się od tego, że źle podłączyłem kondensator do kwarcu (masa z zasilaniem mi się pomyliła) i wogóle nie ruszał zegar, nie zmieniał się stan wyjścia INT. Później kombinowałem z innym układem RTC marki Epson ale także coś mi nie wychodziło, a w końcu wróciłem do PCF8583 i jakoś wszystko powoli ruszyło. Podstawa to cierpliwość...
1. czy da się wylaczyc sygnal 1 Hz na wyjsciu INT układu (żeby nie wywoływał przerwania co sekunde tylko wtedy kiedy nastąpi alarm ?) Jest taka możliwość w rejestrze konfiguracji.
no wykonuje ci się wszystko bardzo wolno - ponieważ w procedury obsługi przerwań pakujesz sobie czaso-żerne procedury w tym te najgorsze czyli opóźniające. popatrz ile np u mnie zajmuje kod przerwania od zegarka PCF // przerwanie INT1 generowane jest przez PCF8583 co 1 sekundę // ustawiana jest flaga od której zależy wyświetlanie // czasu, daty, temperatury...
Witam. Próbuję nawiązać łączność z zegarkiem pcf8583 poprzez interfejs I2C,ale interfejs nie generuje nawet znacznika przerwania TWINT po wyslaniu bitu startu.Poniżej zamieszczam kod, który to realizuje (tak myśle:). #include <avr/signal.h> #include <avr/interrupt.h> #include <avr/io.h> #include <stdlib.h> #include "lcd.c"...
Mam w projekcie Atmegę128 + PCF8583 + kilka układów I2C (3xADS1110, AT24c1024), dodatkowo dołaczam dwa moduły z Atmega64 każdy. Chcę, aby każdy z mikrokontrolerów odczytywał czas bezpośrednio z PCF8583. Teoretycznie arbitraż jest możliwy, ale u mnie to nie chce prawidłowo działać - zawiesza się komunikacja i programy "stoją". Do testów zostawiłem w...
Potrzebuje wyswietlacz LCD 2x16 sterowany przez I2C. Chcialbym wykorzystac zbedny Atmega8 do tego projektu. Z obsluga LCD w Atmedze nie powinno byc problemu (sa dostepne przyklady w C), ale zastanawiam sie nad magistrala I2C, ktora dodatkowo w jednostce nadrzednej Atmega32 obsluguje PCF8583 i AT24C512. Jak do tego podejsc? Czy obsluge I2C w Atmega8...
W moim kodzie zegar "leci" na okrągło, i odnoszę wrażenie że zatrzymywanie go w tym konkretnym przypadku jest nieporozumieniem. Możliwe że jeżeli wymagał by tego program ze względu na obsługę np;przerwania taka sytuacja mogła by mieć miejsce jestem jeszcze raczkującym atmegowcem więc może wypowiedzą się bardziej doświadczeni koledzy.
Witam, mam pytańko, bo nie wiem, czy nie znalazłem w manualu czy może tego tam nie ma. Mam w PCF'ie uruchomiony alarm od timer'a oraz alarmu zegara. Jak w obsłudze przerwania, po jego wykonaniu, bądź od jednego, bądź od drugiego, sprawdzić co właśnie wywołało alarm. Nie mogę znaleźć żadnej flagi. ???
Próbowałem to rozwiązanie ale rzeczywiście jest to chybiony sposób. Chciałem zrobić rejestrator temperatury który zapisywałby na kartę pamięci co 5min temperaturę i godzinę. Wszystko już mam oprócz zegara. Teraz wymyśliłem aby procesor (atmega328) była również zegarem. Ale nie wiem czy da rade tak zrobić. Timer1 mam zajęty. Na timerze0 chciałem generować...
Oczywiście że tak! A tyle razy czytałem pdf'a.... Drugi błąd tkwi w zapisie 10sek do adresu 15. Pamiętałem wszędzie o BCD zapominając, że powinno być nie 10 a 16 (B00010000). Czyli reasumując: zapis ustawień timera adres 0 <- 4 (ustawiony bit 3 włącza timer) adres 7 <- 0 (zerowanie na wszelki wypadek licznika - tu układ zlicza sobie impulsy) adres...
Można by było spróbować tak: 1. Na pierwszym uC ustawić zegar 2. Zaprogramować tak, że po zmianie sekundy daje krótki impuls na jakiś pin. 3. W pozostałych dwóch stawić jeden z pinów INTx i w momencie wywołania przerwania zwiększać liczbę sekund. Wadą tego rozwiązania są możliwe zakłócenia indukujące się na przewodzie. Jednakże stosując zewnętrzne mocne...
Tu masz rację TDV z tym trafieniem przerwania. Wiecie czym różnią się zwykłe banany od bananów ... (reklamowanej marki)? Tym samym czym programista od programisty przewidującego nieszczęśliwe trafnienia przerwań. Diabeł zawsze tkwi w szczegółach. Sam robiłem wiele rzeczy na przerwaniach i pomimo tego, że są bardzo potrzebne to zwykle zdarzają się w...
Oczywiście, że tak - po 10kΩ. Co ciekawe dodałem wszystkie możliwe przerwania I2C aby zobaczyć czy coś się dzieje. Przy wejściu w while, o którym była mowa po chili występuje przerwanie I2C_IT_ALERT. Zgodnie z reference manual, to jest jakieś przerwanie od SMBus, ale przecież nie ustawiałem magistrali w tryb SMBus... Przed inicjalizacją I2C (struktury)...
Pomysł tmf jest bardzo dobry, tylko z jakiegoś powodu nie potrafisz tego dostrzec. Zamiast pcf'a zapakuj tam tiny z baterią (czy większym kondensatorem) i komunikuj się z nim przez SPI albo I2C, albo jak tam chcesz. Dane zapisywane będą ważne, jeżeli dostanie od mastera kompletną paczkę: np. (long int NumerZapisu, long int CzasPracy, int CRC). Nie...
komenda Getrc5(address , Command) blokuje inne przerwania na czas jej wykonania stąd przestaje ci na chwilkę działać przerwanie zliczające czas a wiec zegar będzie się późnił. Ostatnio robiłem właśnie zegar wiszący wysoko i ustawiany właśnie przez pilota rc5 ale od razu zrobiłem go na pcf8583. Może dasz radę dołożyć go do swojego projektu. wg mnie warto....
Witam Jak się nie mylę to ten uC ma wbudowany dodatkowy obwód generatora na którym można zrobić zegar czasu rzeczywistego. Do swoich celów wykorzystuje on bodajże drugi timer. Konfiguruje się go bardzo prosto. O szczegółach poczytasz w helpie. Szukaj config clock. Innym rozwiązaniem jest zadeklarowanie przerwania i w oparciu o nie wykonanie zegar. Robi...
Witam Na początek to //Porty: PC0(SCL) PC1(SDA) -> wejścia TWI DDRC =0b11111110; PORTC =0b11111101; skoro porty PC0(SCL) PC1(SDA) to wejścia TWI , ja bym je ustawił tak //Porty: PC0(SCL) PC1(SDA) -> wejścia TWI // 1 -> wyjście // 0 -> wejście DDRC =0b11111100; // 1 -> z podciągnięciem do VCC (pull-up) // 0 ->...
Przerwanie INT0 może włączaj dopiero w głównej pętli, nie wiem może jakąś flagę ustaw że wyłączałeś i jak w nią wpadnie to sobie włączy. Innego powodu nie widzę
No teraz patrząc na kod to można od razu powiedzieć, że wszystkie twoje problemy i całe zło działania kodu, że tak powiem, wynikają z tego sposobu odbierania danych przez RS232 :( Pętla Do Loop w przerwaniu to samobójstwo i to jeszcze takie okrutne :( tym bardziej, że w Bascomie masz pięknie akurat zrobioną obsługę RS232 na przerwaniach i z buforami...
#include <avr/io.h> #include <util/delay.h> #include <HD44780.c> #include <stdlib.h> #include <makra.h> #include <DS18B20.c> #include <twi.c> #include <avr/interrupt.h> #define zegar 0xA0 int przerwanie=0; void INT0_inicjacja(void) { MCUCR = 0b00000001; GICR = 0b01000000; } ISR(INT0_vect)...
Witam, Trzeba przyznać, że zegar wyszedł Ci dość fajny lecz nie rozumiem dlaczego : - do sterowania użyłeś ekspanderów na I2C - zamiast uprościć konstrukcję i wykorzystać np. MAX6921 który posiadając 12 wyjść bez problemu steruje 1 wyświetlaczem a poza tym zawiera wysokonapięciowe stopnie wyjściowe przystosowane do sterowania VFD, - zegar zbudowany...
Witam. Mam kłopot tego typu, że potrzebuje zrobić nastawny timer z dokładnością do 0,01s w zakresie od 40s-2min. Procesorek ma w kółko ustawiać na jednym z portów 1 co zaprogramowany czas. Port w czasie liczenia jest zerowany. Chciałem wykorzystać do tego celu PCF8583 w którym wybrałem funkcje timera. Wszystkie rejestry ustawilem jak trzeba i w rejestrze...
pcf8583 przerwać sekunda stm32 przerwać przerwać bascom przerwać przerwać
silnik nożyce żywopłot diody wnioski domofon bezprzewodowy otwieranie bramy
wiśniowski optimum radio internetowe esp32s3 polskie
Wybór kleju do kondensatorów: epoksydowy, silikonowy czy termoprzewodzący? Łożyska do silnika turbiny kominkowej: 608ZZ, 608RS, hybrydowe