Skocz do zawartości

CZAS z zl2avr


Le_Bee

Pomocna odpowiedź

Witam serdecznie,

Jakis czas temu zakupiłem sobie zl2avr. Próbuje sobie trochę poprogramować, lecz cały czas nie mogę dojść dlaczego nie działają mi komendy czasu typu wait, waitms.

Weźmy przykładowy program (czy jakikolwiek inny np. z kursu BASCOM na tym forum):

$regfile = "m8def.dat"                                      'informuje kompilator o pliku
$crystal = 8000000                                        'informuje kompilator o częstotliwości


  Config Portb = Input                                     'port b  jako wejścia
      Portb = &B11111111                                   'wszędzie stan spoczynkowy-0
Config Portd = Output                                       'pprt d jako wyjścia
      Portd = &B11111111                                   'wszędzie stan spoczynkowy-0

Do

Waitms 1000
Toggle Portb.0

Loop                                                

End               

Dioda w ogóle nie świeci. Tydzień temu udało mi się uruchomić tą komendę, jednak 1 sekunda trwała 20 sekund itp... Nic nie działało.

Próbowałem sam to rozgryźć, ale nie dałem rady, więc piszę.

Pozdrawiam i z góry dziękuje za pomoc.

Link do komentarza
Share on other sites

Piłem herbatę z torebki, po rozwaleniu torebki, przystąpiłem do wróżenia ... a masz ustawione fuse bity dla zewnętrznego źródła częstotliwości :O? ... a dalej będziemy wróżyć jak coś więcej napiszesz. Ponieważ pierwsze widzę/słyszę/nie dowierzam żeby WAIT nie działał :O komuś w bascomie :O.

Link do komentarza
Share on other sites

Elvis: Tak, zworki JP2 i JP3 są założone na pewno.

Luko: Możesz mi dokładnie wytłumaczyć co miałeś na myśli? Jak ustawić fuse bity na kwarc zewnętrzny?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Możesz mi dokładnie wytłumaczyć co miałeś na myśli? Jak ustawić fuse bity na kwarc zewnętrzny?

No to widać jestem dobry w tym wróżeniu z fusów, jak się nie ustawi fuse bitów, to jest tzw dupa. Ponieważ procesor nie wie że ma zewnętrzny wyznacznik czasu, dlatego jak sobie wpiszesz do pliku bascoma niby 8MHz, a w rzeczywistości pracuje z fabryczną prędkością 1MHz, to sekunda trwa o wiele dłużej .... rozwiązanie proste doczytać co to, jak się to ustawia, albo odłączyć rezonator, a w plikach bascoma stosować standardowe taktowanie, choć to zależy co jest na procku ustawione :/

Link do komentarza
Share on other sites

ten kod powinien Ci działać:

$regfile = "m8def.dat"                                      'procesor Atmega8
$crystal = 8000000                                          'zegar 8MHz

Config Portd.1 = Output                                     'PORTD.1 jako wyjście [katoda diody do
                                                            'procesora przez rezystor 470R

Dioda Alias Portd.1                                         'PORTD.1 jako dioda

Do                                                          'początek pętli
Set Dioda                                                   'włącz diode
Waitms 500                                                  'czekaj 0,5 sekundy
Reset Dioda                                                 'resetuj PORTD.1
Waitms 500

Loop                                                        'koniec pętli
End                                                         'koniec programu

Miłego programowania 😉

Link do komentarza
Share on other sites

Dzięki wielkie za odpowiedzi.

Feriar: Twój program działa, ale niestety 500ms trwa jakieś 8 sekund. Możliwe że mam uszkodzone sprzęt? Program działa tak samo zarówno ze zworkami JP2,JP3 jak i bez nich.

Link do komentarza
Share on other sites

To świadczy tylko i wyłącznie o tym, że masz ustawione fuse bity na wewnętrzny oscylator. Skompiluj i wgraj taki kod:

$regfile = "m8def.dat"                                      'procesor Atmega8
$crystal = 1000000                                          'zegar 1MHz

Config Portd.1 = Output                                     'PORTD.1 jako wyjście [katoda diody do
                                                            'procesora przez rezystor 470R

Dioda Alias Portd.1                                         'PORTD.1 jako dioda

Do                                                          'początek pętli
Set Dioda                                                   'włącz diode
Waitms 500                                                  'czekaj 0,5 sekundy
Reset Dioda                                                 'resetuj PORTD.1
Waitms 500

Loop                                                        'koniec pętli
End                                                         'koniec programu 
Link do komentarza
Share on other sites

Działa! 🙂

Cenie takich ludzi jak Wy. I macie mój respekt za szybkość z jaką udzielacie pomocy 🙂

Mógłbyś mi krótko objaśnić co się zmieniło Sabre? Gdybym chciał zmienić fusebity na zewnętrzny oscylator jak mógłbym to zrobić?

Link do komentarza
Share on other sites

Zmieniła się 2 linijka tego kodu, jest to informacja dla kompilatora, z jaką częstotliwością on pracuje. Ja podałem tam 1MHz ponieważ taką częstotliwość ma wewnętrzny oscylator w prawie każdym nowym mikrokontrolerze AVR. Dokładnie to jest 8MHz, ale zawsze jest włączone dzielenie przez 8. Nie mam megi8 żadnej więc nie podam ci screena jak dokładnie wyłączyć to dzielenie, ale ogólnie zmiany dokonuje się poprzez kliknięcie na ikonkę programowania i wybór opcji Manual Program. Tam jest zakładka z fuse bitami, jeden z nich powinien mieć opis divide clock by 8 enabled, albo coś w tym stylu, nie pamiętam dokładnie, powinieneś to zmienić na disabled, potem klikasz write fusebits. Dodam na koniec, że nieumiejętne zmiany fuse bitów mogą prowadzić do zablokowania mikrokontrolera, przez co może stać się bezużyteczny.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.