At90s2313 i attiny2313 problemy z opóźnieniami
At90s2313 i attiny2313 problemy z opóźnieniami
Witam przerzuciłem się właśnie na attiny2313 i kurcze nie działają opóźnienia z najnowszego bascoma
tz na starym procku 2313 działały poprawnie
a na tym tiny strasznie sie wydłużają
np waitms 250 potrafi trwać 2 sekundy
czy ktoś wie co jest nie tak???????????/
tz na starym procku 2313 działały poprawnie
a na tym tiny strasznie sie wydłużają
np waitms 250 potrafi trwać 2 sekundy
czy ktoś wie co jest nie tak???????????/
no i coś zmieniłem
no coś tam próbowałem zmienić w lock fuse bits i ...
musze iść po nowy procek 5 zeta w plecy
pisze że nie umie zidentyfikować chipu
myśle że coś nichcący przy tym oscylatorze pogrzebałem
a pozatym co za różnica że np procesor działa na wewnętrznym oscylatorze, przecież 250ms to powinno być 250 ms (mam podpięty zewnętrzny 8MHz)
jesli ktos to mi wytłumaczy to dzięki z góry....
(
jestem hobbysta nie elektronik ale pare układów mi sie udało zrobić na AVR 90s2313 a teraz mam zastój bo ostani mi wyszedł a attiny mnie nie kochają
)
musze iść po nowy procek 5 zeta w plecy
pisze że nie umie zidentyfikować chipu
myśle że coś nichcący przy tym oscylatorze pogrzebałem
a pozatym co za różnica że np procesor działa na wewnętrznym oscylatorze, przecież 250ms to powinno być 250 ms (mam podpięty zewnętrzny 8MHz)
jesli ktos to mi wytłumaczy to dzięki z góry....
(
Re: no i coś zmieniłem
Jeżeli "zepsułeś" procka przez grzebabie w opcjach zegara, to ten przpadek daje się naprawiać, jeżeli zrobiłeś inne prockowi kuku, to ... nie wiemy co zrobiłeś ?Lukgwo pisze:no coś tam próbowałem zmienić w lock fuse bits i ...
musze iść po nowy procek 5 zeta w plecy
pisze że nie umie zidentyfikować chipu
myśle że coś nichcący przy tym oscylatorze pogrzebałem
Pokochają, spoko, tylko trzeba trochę procki dopieścić, to jak z kobietąLukgwo pisze:(jestem hobbysta nie elektronik ale pare układów mi sie udało zrobić na AVR 90s2313 a teraz mam zastój bo ostani mi wyszedł a attiny mnie nie kochają
)
no tak to nie jest rozmowa o dziewczynach
Wiecie co piszcie na temat : szczególnie ten od dziewczynek
pytałem jaką różnicę procesorowi sprawia wewnętrzny oscylator że robi aż takie opóźnienie
w sumie 250ms * 8 to jest koło
2 sekund czyli może tylko ten dzielnik wyżucić z fuse bits?? ale czy to ma znaczenie
jeśli ktoś juz majstrował na tych attiny2313 to prosiłbym o jakąś odpowiedź bo jednak chciałbym mimo wszystko go ustawić na ten kwarc zewnętrzny 8MHz
pytałem jaką różnicę procesorowi sprawia wewnętrzny oscylator że robi aż takie opóźnienie
w sumie 250ms * 8 to jest koło
jeśli ktoś juz majstrował na tych attiny2313 to prosiłbym o jakąś odpowiedź bo jednak chciałbym mimo wszystko go ustawić na ten kwarc zewnętrzny 8MHz
Re: no i coś zmieniłem
Proponuję zerknąć do instrukcji BASCOM. Powinna to być podstawowa "podpora" przy problemach z instrukcjami. Więc "WAITMS 250ms" to nie jest 250ms. "WAITMS 250ms" to jest 250ms przy oscylatorze 4MHz (zgodnie ze starą dokumentacją BASCOMA. Nie wiem czy coś się nie zmieniło). Dokładniej rzecz ujmując jest to 1'000'000 cykli zegara procesora. I jest jeszcze jedna pułapka na którą trzeba uważać. Opóźnienie realizowane jest tam gdzie zostało wywołane (ponieważ zwykle wywoływane jest w pętli głównej a nie w przerwaniach, tam też będzie naliczane). Zdarzyło mi się jednak tworzyć projekt gdzie obsługa przerwań zabierała ponad 50% czasu procesora. Każde przerwanie w czasie naliczania czasu opóźnienia generowanego za pomocą instrukcji WAIT albo WAITMS powoduje wydłużenie czasu oczekiwania (konkretniej - czas wykonywania przerwania nie jest wliczany). Jak więc widzisz... sprawa nie jest taka prosta jak Ci się wydaje a BASCOM wcale nie załatwia wszystkiego za programistęLukgwo pisze:a pozatym co za różnica że np procesor działa na wewnętrznym oscylatorze, przecież 250ms to powinno być 250 ms (mam podpięty zewnętrzny 8MHz)
wiesz może to i racja z tym 4Mhz
ale to nie ma raczej tutaj znaczenia bo opóźnienie powstaje tylko na procku attiny2313
ten sam program ładowany do 90s2313 działa poprawnie, chodzi mi oto jak sie tego problemu pozbyć
apropo przerwań to nie używam ich w tym programie a przynajmniej tak mi sie zdaje
nic takiego jak enable interupts nie wpisywałem
w każdym razie dzięki
ale to nie ma raczej tutaj znaczenia bo opóźnienie powstaje tylko na procku attiny2313
ten sam program ładowany do 90s2313 działa poprawnie, chodzi mi oto jak sie tego problemu pozbyć
apropo przerwań to nie używam ich w tym programie a przynajmniej tak mi sie zdaje
nic takiego jak enable interupts nie wpisywałem
w każdym razie dzięki
-
ZbeeGin
WAITMS to nie jest sztywna procedura - jej rozwinięcie (w zasadzie wzorzec!) jest zaszyte w bibliotece DLL kompilatora. Warotści pętli w tej procedurze są obliczane podczas kompilacji na podstawie częstotliwości kwarcu. Dlatego decydujące znaczenie ma tutaj podanie wprost tej częstotliwości w opcjach kompilatora, albo najlepiej w dyrektywie $CRYSTAL. Nie są to oczywiście obliczenia dokładne, ale w większości przypadków róźnica nie jest wielka. Nadal jednak do obliczania dokładnych odcinków czasu instrukcji Wait, WaitMS nie powinno się stosować.Koppel pisze:"WAITMS 250ms" to jest 250ms przy oscylatorze 4MHz (zgodnie ze starą dokumentacją BASCOMA. Nie wiem czy coś się nie zmieniło).
... mam ten sam problem z nieprawidłowym odliczaniem czasu
Podam prosty przykładzik:
Program:
______________________________
Config Portd=&B1111111
Portd=&B1111111
Config Portb=&B11111111
Portb=&B11111111
Waitms 24000
Portb=&B00010000
Waitms 2000
Portb=&B00000000
End
______________________________
W programatorze ustawiłem tak:
Procesor ATTiny2313
FusebitC: Divide clock by 8 DISABLE
FusebitB: Output clock on CKOUT pin ENABLE
FusebitKL: NO DELAY
Fusebit A987: External XTAL
Niestety ciągle coś jest źle bo te 24 sekundy które procesor ma odliczyć na początku ciągną się znacznie dłużej...
Czy ktoś może mi podpowiedzieć co jeszcze trzeba ustawić aby 24 sekundy w tym programiku były 24 sekundami
?
Czy zewnętrzny kwarc musi mieć ściśle określoną wartość i to jest przyczyna ? przy AT90S2313 nie musiał....
Dzięki za pomoc
Podam prosty przykładzik:
Program:
______________________________
Config Portd=&B1111111
Portd=&B1111111
Config Portb=&B11111111
Portb=&B11111111
Waitms 24000
Portb=&B00010000
Waitms 2000
Portb=&B00000000
End
______________________________
W programatorze ustawiłem tak:
Procesor ATTiny2313
FusebitC: Divide clock by 8 DISABLE
FusebitB: Output clock on CKOUT pin ENABLE
FusebitKL: NO DELAY
Fusebit A987: External XTAL
Niestety ciągle coś jest źle bo te 24 sekundy które procesor ma odliczyć na początku ciągną się znacznie dłużej...
Czy ktoś może mi podpowiedzieć co jeszcze trzeba ustawić aby 24 sekundy w tym programiku były 24 sekundami
Czy zewnętrzny kwarc musi mieć ściśle określoną wartość i to jest przyczyna ? przy AT90S2313 nie musiał....
Dzięki za pomoc
Dodałem na samym początku programumarcing pisze:Dodaj na samym początku dyrektywę:
$crystal = ........... - w miejsce kropek wpisz wartość jaka jest na oscylatorze.....
$crystal = 4
i przy Syntax Check pojawia się błąd:
"BAUD rate not possible [-1]" i wskazuje na linijke z komendą "end"
co jest nie tak ?
-
ZbeeGin
mariachi pisze:Dodałem na samym początku programu
$crystal = 4
Kod: Zaznacz cały
$crystal = 4000000