waitms w bascomie? coś nie tak...

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Pev4
-
Posty: 44
Rejestracja: 06 sie 2007, 19:26
Lokalizacja: Ostrowiec Św.
Kontakt:

waitms w bascomie? coś nie tak...

Post autor: Pev4 » 25 sty 2008, 22:34

Witam. Dlaczego bascom źle odmierza mi czas w poleceniu waitms? używam AtTiny2313 (16MHz) i Waitms 80 to około sekunda. co tu nie gra?

ZbeeGin

Post autor: ZbeeGin » 25 sty 2008, 23:34

A fusebity przestawione? Jeśli tak, to jak? Dyrektywa $CRYSTAL w programie jest?

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 26 sty 2008, 8:45

Pozwolę sobie jeszcze zadać małe pytanko: Czy oscylator ma jakiś wpływ na waitms? w koncu to polecenie to czekaj x ms wiec chyba powinien poczekac tyle ile sie mu wpisało, niezależnie od oscylatora. Znaczy oczywiście wiem że sie myle, bo inaczej kolega (jeśli moge użyc tego słowa) ZbeeGin nie pisałby tego co napisał, ale chciałem się spytac co jest nie tak w moim rozumowaniu...
mam nadzieje że to nie bedzie offtop?

alaris
Użytkownik
Posty: 530
Rejestracja: 21 lut 2006, 14:56
Lokalizacja: Gorzow/Poznan

Post autor: alaris » 26 sty 2008, 9:05

Kulpina pisze:Czy oscylator ma jakiś wpływ na waitms?
Zdecydowanie. waitms jest zwykla petla opozniajaca z ODPOWIEDNIA liczba cykli maszynowych. Liczba wymaganych cykli jest wyznaczana wlasnie na podstawie znajomosci kwarcu. Operujac na abstrakcyjnych wartosciach: waitms 10 moze skladac sie z 10 cykli maszynowych, ale procesor pracujacy z kwarcem 20 MHz wykona te 10 cykli w dwa razy krotszym czasie niz prz 10MHz, nie ?

Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Post autor: seweryn » 26 sty 2008, 10:11

Najprawdopodbniej bedzie to fus div 8 ktory dzieli czestotliwosc zegara na 8. Zmien fus albo wpisz w bascom ze masz 2MHz kwarc i sprawdz. Druga rzecz to wywal kondensatory blokujace rezonator bo tez lubią swoje nabroic:)

ZbeeGin

Post autor: ZbeeGin » 26 sty 2008, 11:33

Kulpina pisze:Czy oscylator ma jakiś wpływ na waitms? w koncu to polecenie to czekaj x ms wiec chyba powinien poczekac tyle ile sie mu wpisało, niezależnie od oscylatora.
Rusz głową kolego Kulpina. Skąd procesor miałby niby wiedzeć, że upłynęła właśnie 1ms? Na wyczucie?

Pev4
-
Posty: 44
Rejestracja: 06 sie 2007, 19:26
Lokalizacja: Ostrowiec Św.
Kontakt:

Post autor: Pev4 » 26 sty 2008, 13:23

Dziękuję za odpowiedzi. Jestem bardzo początkujący, nie wiem gdzie, ani jak ustawia się fusebity. Na której stronie w książce "Mikrokontrolery dla początkujących" Piotra Góreckiego znajdę o tym informację? Dziękuję za pomoc. Pozdrawiam.

Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Post autor: seweryn » 26 sty 2008, 13:55

jakiego programu używasz do proggramowania?

[ Dodano: 2008-01-26, 14:02 ]
w AvrStudio:
Menu: Tols->Program AVR->Auto Connect
otwiera sie okienko Program wchodzisz na zakładke Fuses i tam odznacz "Divide clock by 8"

dotyczy sie programatora Avr isp mkII z innymi jest podobnie

ZbeeGin

Post autor: ZbeeGin » 26 sty 2008, 18:00

Pev4 pisze:Jestem bardzo początkujący, nie wiem gdzie, ani jak ustawia się fusebity.
Wszystko odbywa się tutaj. Patrz obrazek. Ustawienia które Ciebie najbardziej interesują to Fusebit C oraz FusebitA987. Po zmianie w oknie należy nacisnąć odblokowany klawisz "Write FS" i "Refresh". Jak wszystko poszło OK to procesor powinien odpowiedzieć i dać się zaprogramować.

Obrazek

Pev4
-
Posty: 44
Rejestracja: 06 sie 2007, 19:26
Lokalizacja: Ostrowiec Św.
Kontakt:

Post autor: Pev4 » 02 mar 2008, 20:51

Witam, dziękuję wszystkim za pomoc. O ile AtTiny2313 udało się opanować, to z AtMega128 jest problem:) Wiem, że za wysoko mierze jak na mój stan wiedzy, ale bardzo mi potrzebny ten układ. Do programowania używam Bascom-AVR demo.
seweryn pisze:Druga rzecz to wywal kondensatory blokujace rezonator bo tez lubią swoje nabroic:)
czyli w ogóle ich nie używać? sam rezonator zostawić i będzie ok? można zapytać dlaczego tak, skoro na każdym schemacie są?

W AtMega128 fusebity wyglądają całkiem inaczej niż tutaj.
trochę się nimi bawiłem, którymś z nich(już nie pamiętam którym) ustawiało się zegar - ja wybrałem 16MHz zewnętrzny rezonator (bo taki mam) ale do końca nie wiedziałem który wybrać bo tam jest z 10 takich i różnią się jakimiś liczbami (mógłby ktoś wytłumaczyć co to za liczby?)
I najważniejsza sprawa: układ z pow. ustawieniami zawieszał się na poleceniu Wait (nieważne czy było to us czy ms czy s) i nie wykonywał dalszej części programu. czym to mogło być spowodowane?
Zabawa skończyła się na tym, że ustawiłem wewnętrzny oscylator 8MHz, zapisałem i... kontakt się urwał - "could not identify chip with ID:FFFFFF"
Da się jakoś układ odratować?
Z góry dziękuję za pomoc, pozdrawiam.

Awatar użytkownika
olo16
Użytkownik
Posty: 396
Rejestracja: 12 paź 2007, 16:37
Lokalizacja: w-wa

Post autor: olo16 » 03 mar 2008, 13:30

Pev4 pisze:czyli w ogóle ich nie używać?
Ty tak specjalnie? Chyba rzeczywiście mierzysz za wysoko!
Oczywiście, że używać, ale nie przesadzić. Powinno być około 33pf.

Jasam
Użytkownik
Posty: 422
Rejestracja: 27 mar 2007, 21:09

Post autor: Jasam » 03 mar 2008, 14:11

Lepiej zacząć od czegoś bardziej podstawowego niż atmega128.

Pev4
-
Posty: 44
Rejestracja: 06 sie 2007, 19:26
Lokalizacja: Ostrowiec Św.
Kontakt:

Post autor: Pev4 » 03 mar 2008, 16:25

witam, dziękuję za rady :wink: oczywiście kondensatory mam 33pF, ale kolegę zrozumiałem że mam je całkowicie usunąć...
oczywiście - bawiłem się już AtTiny2313, AtMega8, ale tym razem padło na AtMega128 (z powodu ilości wejść/wyjść)
Wiem że za wysoko mierze, dlatego proszę Was o drobne nakierowanie na materiały poświęcone temu mikrokontrolerowi.
Podpowiedzcie chociaż którą opcje wybrać w fusebitach:
Ja ustawiam Ext. Crystal/Resonator High Freq. i dalej nie wiem co wybrać, bo takich opcji jest z 10. Dalej pisze: Start-up time [liczba]CK + [liczba]ms
o co chodzi z tym Start-up time i co zależy od liczb w miejscach [liczba]?

I z jakiego powodu uP może się wieszać na poleceniu Wait/Waitms/Waitus? Waitus 10 to dla niego wieczność, czekałem na reakcje minutę i nic...
Dzięki za pomoc, Pozdrawiam.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 03 mar 2008, 16:42

Pev4 pisze:witam, dziękuję za rady :wink: oczywiście kondensatory mam 33pF, ale kolegę zrozumiałem że mam je całkowicie usunąć...
oczywiście - bawiłem się już AtTiny2313, AtMega8, ale tym razem padło na AtMega128 (z powodu ilości wejść/wyjść)
Wiem że za wysoko mierze, dlatego proszę Was o drobne nakierowanie na materiały poświęcone temu mikrokontrolerowi.
Podpowiedzcie chociaż którą opcje wybrać w fusebitach:
Ja ustawiam Ext. Crystal/Resonator High Freq. i dalej nie wiem co wybrać, bo takich opcji jest z 10. Dalej pisze: Start-up time [liczba]CK + [liczba]ms
o co chodzi z tym Start-up time i co zależy od liczb w miejscach [liczba]?

I z jakiego powodu uP może się wieszać na poleceniu Wait/Waitms/Waitus? Waitus 10 to dla niego wieczność, czekałem na reakcje minutę i nic...
Dzięki za pomoc, Pozdrawiam.
Szczegółowych informacji powinieneś szukać w kartach katalogowych tego mikrokontrolera (np. na stronie Atmela). Start-up time to czas, po którym uC po włączeniu zasilania zaczyna pracować (wykonuje program). Co znaczą te liczby, znajdziesz w karcie katalogowej (Clock sources). Tam jest dokładnie opisane. Jeśli chodzi o kondensatory rezonatora, to zalecany przez producenta przedział to 12 - 22pF.

ODPOWIEDZ