Goto page 1, 2 Next
sundayman
Guest
Wed Nov 06, 2013 7:21 pm
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 ?
Robbo
Guest
Wed Nov 06, 2013 8:35 pm
Nie pomogę, ale z ciekawości chciałem zapytać nad czym ciekawym pracujesz,
że bardzo ważna jest częstotliwość taktowania mikrokontrolera?
Pozdrawiam,
Robbo
sundayman
Guest
Wed Nov 06, 2013 10:06 pm
W dniu 2013-11-06 20:35, Robbo pisze:
Quote:
Nie pomogę, ale z ciekawości chciałem zapytać nad czym ciekawym
pracujesz, że bardzo ważna jest częstotliwość taktowania mikrokontrolera?
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 ;
http://www.elektroda.pl/rtvforum/viewtopic.php?p=12923465#12923465
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
BartekK
Guest
Wed Nov 06, 2013 10:10 pm
W dniu 2013-11-06 22:06, sundayman pisze:
Quote:
i 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)
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.
--
| Bartłomiej Kuźniewski
| sibi@drut.org GG:23319 tel +48 696455098
http://drut.org/
|
http://www.allegro.pl/show_user_auctions.php?uid=338173
sundayman
Guest
Wed Nov 06, 2013 11:52 pm
Quote:
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.
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".
Grzegorz Niemirowski
Guest
Thu Nov 07, 2013 12:06 am
sundayman <sundayman@poczta.onet.pl> napisał(a):
Quote:
Czyli chodzi o to, jak w bascomie zadeklarować pin jako wyjściowy tak,
aby ze stanu wysokiej impedancji natychmiastowo przeszedł w stan "1".
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ć.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 24 days, 10 hours, 34 minutes and 47 seconds
sundayman
Guest
Thu Nov 07, 2013 12:19 am
Quote:
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ć.
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...
Grzegorz Niemirowski
Guest
Thu Nov 07, 2013 12:24 am
sundayman <sundayman@poczta.onet.pl> napisał(a):
Quote:
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.
Oczywiście. Ale to też z głową. Wejście z wpisaną jedynką to wejście
podciągnięte wenętrznym rezystorem do plusa.
Quote:
Tyle, że pewnie używając poleceń config tak po prostu może być problem.
Nie wiem jak Bascom tłumaczy to na asm.
Quote:
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...
Dawno nie pisałem w Bascomie, zwykle używam C.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 24 days, 10 hours, 52 minutes and 39 seconds
sundayman
Guest
Thu Nov 07, 2013 12:30 am
Quote:
Wejście z wpisaną jedynką to wejście podciągnięte wenętrznym
rezystorem do plusa
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...
Marek
Guest
Thu Nov 07, 2013 12:51 am
On Thu, 7 Nov 2013 00:06:03 +0100, "Grzegorz Niemirowski"
<gnthexfiles@poczta.onet.pl> wrote:
Quote:
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
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.
--
Marek
Grzegorz Niemirowski
Guest
Thu Nov 07, 2013 1:00 am
Marek <fake@fakeemail.com> napisał(a):
Quote:
A rejestr tris tego pina (czy jak tam się on nazywa w atmedze) nie ma
domyślnego stanu input po resecie?
Tak, rejestr kierunku jest wyzerowany po resecie, czyli pin jest wejściem.
Quote:
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.
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.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 24 days, 11 hours, 25 minutes and 37 seconds
Marek
Guest
Thu Nov 07, 2013 1:00 am
On Thu, 07 Nov 2013 00:51:38 +0100, Marek <fake@fakeemail.com> wrote:
Quote:
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
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.
--
Marek
Grzegorz Niemirowski
Guest
Thu Nov 07, 2013 1:02 am
Marek <fake@fakeemail.com> napisał(a):
Quote:
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.
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ść.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 24 days, 11 hours, 30 minutes and 10 seconds
sundayman
Guest
Thu Nov 07, 2013 2:01 am
http://www.elektroda.pl/rtvforum/viewtopic.php?p=12924115#12924115
na dole opisałem rozwiązanie.
BartekK
Guest
Thu Nov 07, 2013 7:47 am
W dniu 2013-11-06 23:52, sundayman pisze:
Quote:
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.
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".
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).
--
| Bartłomiej Kuźniewski
| sibi@drut.org GG:23319 tel +48 696455098
http://drut.org/
|
http://www.allegro.pl/show_user_auctions.php?uid=338173
Goto page 1, 2 Next