Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 lis 2024, o 10:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 25 lis 2014, o 21:15 
Offline
Nowy

Dołączył(a): 19 lis 2014
Posty: 4
Pomógł: 0

Witam wszystkich, mam problem z zegarkiem DS1307, czytam BB i postanowiłem sprawdzić w praktyce co i jak.
Układ zmontowany na płytce stykowej, i właściwie to działa, ale tylko przez kilka, kilkanaście sekund potem przestaje i nie wiem ale właściwie tak jakby nie był spełniony warunek "if (int0_flag )" . Po resecie rusza znowu, zegar idzie dalej. Do portu INT0 (PD2) podłączyłem diodę - cały czas miga, więc nie wiem w czym problem. Próbowałem różnych ustawień taktowania procesora i i2cSetBitrate (od 50 do 100, według PDF 0-100 ) i zawsze działa tak samo.
Z góry dziękuję za wszelkie sugestie.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
[/syntax]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 21:23 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Tak na szybko tylko zerknąłem i takie drobne uwagi mi się nasunęły...

Powiedz mi po co Ci ten delay w pętli głównej?
Dlaczego w przerwaniu od CTC robisz obsługę LCD?
Po co tam zliczasz sekundy skoro masz przerwanie co sekundę o RTC?
Jak ma ci zliczać te setne ms skoro zakomentowałeś zmienną statyczną w przerwaniu?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 21:41 
Offline
Nowy

Dołączył(a): 19 lis 2014
Posty: 4
Pomógł: 0

To wyświetlanie na LCD było wstawione żeby sprawdzić czy procesor nadal chodzi, a zliczanie sekund żeby sprawdzić czy to nie błąd w przerwaniu od zegarka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 21:51 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

jacul22 napisał(a):
To wyświetlanie na LCD było wstawione żeby sprawdzić czy procesor nadal chodzi


Kod w przerwaniach ma się wykonywać błyskawicznie. Nie może być tamzadnych delayów ani funkcji wprowadzające spore opóźnienia. Czasem Kod może działać dobrze nawet z takim babolem ale takie nawyki mogą się później zemścić. Lepiej poświęcić jeden bajt ramu na zmienną flagową którą ustawiasz w przerwaniu a w pętli głównej sprawdzasz czy została ustawiona i jeżeli tak to wykonujesz jakiś kawałek kodu.

Naprawdę nie warto takich baboli robic bo później to w krew wchodzi człowiekowi :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2014, o 21:59 
Offline
Nowy

Dołączył(a): 19 lis 2014
Posty: 4
Pomógł: 0

Masz rację ,ale to było dołożone później żeby cokolwiek się działo na wyśietlaczu.

------------------------ [ Dodano po: 2 minutach ]

Prawdopodobnie problem jest w montażu, po zmianie zasilacza(dotąd było zasilanie z USB z komputera) chodzi "nawet" 7 minut



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO