Atmega zegar/temperatura

Mam pewien problem...

Otóż - wg. dataszita częstotliwość wbudowanego zegara rośnie ze spadkiem temperatury (dziwne...). Ale - nie ma informacji, jak się z kolei zachowuje zegar w przypadku napędzania zewnętrznym kwarcem. Bo z pomiaru (na razie wstępnego - od momentu uruchomienia systemu do wystąpienia pewnego sygnału) wychodzi mi, że odwrotnie - z spadkiem temperatury ten czas się wydłuża minimalnie - czyli zegar spowalnia.

Chłodzę sam chip (zamrażaczem w aerozolu).

Czyli jak to jest w końcu ?

Reply to
sundayman
Loading thread data ...

W dniu 2013-11-06 20:35, Robbo pisze:

No pewnie w każdej aplikacji korzystającej chociażby do odliczania czasu byłby to ważne, ale w moim przypadku, w układzie zawierającym 2 MCU (atmega128 i atmega8), w sytuacji kiedy jeden MCU może resetować drugi (nadzorują się wzajemnie, i jeśli któryś nie odpowiada, wyedu kolega go resetuje), nastąpiło nieprzewidziane "resetowanie" podczas startu systemu w niskiej temperaturze - po prostu zmienił się czas uruchamiania MCU, i zaczęło się "niekontrolowane restartowanie".

Ale tam naprawdę problemem głównym jest co innego ;

formatting link
Natomiast w temperaturze pokojowej wszystko było ok. Przy testach w temperaturze poniżej zera nagle okazało się, że system nie wstaje - przy czym "wyzwalaczem" problemu jest wydłużenie czasu startu procesorów.

Taka ciekawostka :)

Reply to
sundayman

W dniu 2013-11-06 22:06, sundayman pisze:

Ale w fusebitach masz przecież tryby startu, nie dawaj tego najdłuższego-przedłużonego-plus odliczanie 65k cykli F_CPU, tylko włącz szybki start i brown-out.

Reply to
BartekK

Tak, ale jak opisałem w wątku na elektrodzie , ten problem "czasowy" jest tylko pobocznym zjawiskiem - sam kłopot pochodzi z czego innego. Żeby nie powtarzać tutaj wszystkiego - podczas deklarowania pinu procesora jako wyjście, pojawia się na tym pinie przez chwilkę stan "0", zanim zostanie ostawiony przez program na "1" (program jest w Bascomie).

Czyli chodzi o to, jak w bascomie zadeklarować pin jako wyjściowy tak, aby ze stanu wysokiej impedancji natychmiastowo przeszedł w stan "1".

Reply to
sundayman

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Nie da się. Pin przecież ustawiasz programowo, a program potrzebuje pewnego czasu na wykonanie. Choćby to była pierwsza instrukcja w całym kodzie. Układ współpracujący musi to uwzględniać.

Reply to
Grzegorz Niemirowski

No ale - wartość na pinie to jeden rejestr, a kierunek - drugi. Powinno się chyba dać ustawić najpierw ten od wartości, a dopiero potem

- wskazać, że to wyjście.

Tyle, że pewnie używając poleceń config tak po prostu może być problem. Chyba trzeba zapisywać do rejestrów - a tego mi się nie bardzo chce robić :) Myślałem, że może ktoś to ma już obcykane...

Reply to
sundayman

sundayman snipped-for-privacy@poczta.onet.pl> napisał(a):

Oczywiście. Ale to też z głową. Wejście z wpisaną jedynką to wejście podciągnięte wenętrznym rezystorem do plusa.

Nie wiem jak Bascom tłumaczy to na asm.

Dawno nie pisałem w Bascomie, zwykle używam C.

Reply to
Grzegorz Niemirowski

No właśnie, siedzę właśnie nad dataszitem, zobaczymy czy operujące rejestrami da się to zrobić poprawnie.

Jak nie - to kit mu w oko, obejdę to bez tej deklaracji (znaczy robiąc ją tuż przed potrzebnym wygenerowaniem sygnału) - ale to jest mocno nieestetyczne...

Reply to
sundayman

A rejestr tris tego pina (czy jak tam się on nazywa w atmedze) nie ma domyślnego stanu input po resecie? Na pic tak jest, wtedy ustawiasz port lat na 1 a po tym dopiero tris na output. Wtedy jest "bezhazardowe" przejście ze stanu hZ do 1.

Reply to
Marek

Marek snipped-for-privacy@fakeemail.com napisał(a):

Tak, rejestr kierunku jest wyzerowany po resecie, czyli pin jest wejściem.

Są dwa rejestry. Rejestr kierunku i rejestr wartości wyjściowej. Jeśli rejestr kierunku ma bit danego pinu ustawiony na zero, wówczas są dwie możliwości zależne od wartości bitu wartości wyjściowej. Jeśli ten bit to zero, wówczas mamy HZ. Jeśli ten bit to 1, wówczas mamy pull-up.

Reply to
Grzegorz Niemirowski

Innymi słowy (zakładając że po resecie/power up piny sa input - bo to chyba standard) najpierw wpisujesz do portu 1 a później go przestawiasz na output, wtedy zatrzask wyjsciowy mający już wpisaną 1 jest dołączany do pina.

Reply to
Marek

Marek snipped-for-privacy@fakeemail.com napisał(a):

Tak. Jeśli nie ma czegoś ściągającego pin do masy (rezystancji mniejszej niż wewnętrzny pullup), wówczas ładnie się nam jedynka pojawi, bez jakichś dziwnych przejść.

Reply to
Grzegorz Niemirowski

formatting link
na dole opisałem rozwiązanie.

Reply to
sundayman

W dniu 2013-11-06 23:52, sundayman pisze:

Przecież możesz dać najpierw PINA.1 = 1 (w przypadku bycia wejściem - włączenie pullupa = słaba 1ka na wejściu) a opiero po tym przełączenie na bycie wyjściem DDRA.1 = 1 (i robi się mocna 1ka).

Reply to
BartekK

A nawet warto podci±gn±æ zewnêtrznie do vcc na ten moment, kiedy bêdzie jeszcze HiZ.

--
"zanim nastala era internetu, kazdy wiejski glupek siedzial w swojej wiosce" 
http://www.chmurka.net/
Reply to
Adam Wysocki

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.