ATTINY 25/45 i Fuse bity. Pomocy!!
ATTINY 25/45 i Fuse bity. Pomocy!!
Witam wszystkich. Mój problem to procesor ATTINY 45, a konkretnie jego fuse bity. Otóż chciałbym tak skonfigurować ten procesor aby działał z wewnętrznym oscylatorem RC, a w dodatku w trybie kompatybilności z ATTINY 15. Z tego co zrozumiałem z noty katalogowej to trzeba go ustawić na 1.6MHz (dla prekselra), ale na ekranie fusów widzę więcej opcji dotyczących zegara. Miałbym więc prośbę dla tych którzy już programowali ATTINY25/45, czy mogli by wytłumaczyć jak to zrobić, oraz opisać poszczególne bity, bo nota katalogowa, akurat w tej dziedzinie to głównie kartkowanie, bo składa się raczej z odnośników do stron. A i mój angielski to raczej perfekt też nie jest. Załączam skren z moich fusów.
Z góry dziękuję za pomoc.
Z góry dziękuję za pomoc.
ATTINY jest fabrycznie skonfigurowany jako taktowany zegarem wewnętrznym (chyba 1MHz), więc nie trzeba nic przestawiać jak ci to odpowiada. Natomiast samemu przestawiając FUSy należy uważać
:
A. Aby nie odciąć sobie końcówki RESET. Katastroficzne w skutkach bo bez specjalnego programatora nie odblokujesz proca.
B. Nie odłączyć możliwości programowania procesora przez SPI. Skutki jak przy RESECIE.
C. Zmieniając zegar wewnętrzny, nie przełączyć się przypadkiem na zewnętrzny, lub wpisać konfiguracji zabronionej. Dodatkowo zmiana wewnętrznego zegara CPU na inny niż 1MHz może spowodować, że BASCOM nie będzie potem umiał wykryć i prawidłowo się komunikować z CPU, co utrudnia reprogramowanie. Ale z tym akurat metodą prób i błędów zmieniając parametr PORT DELAY w opcjach BASCOM da się uporać.
A. Aby nie odciąć sobie końcówki RESET. Katastroficzne w skutkach bo bez specjalnego programatora nie odblokujesz proca.
B. Nie odłączyć możliwości programowania procesora przez SPI. Skutki jak przy RESECIE.
C. Zmieniając zegar wewnętrzny, nie przełączyć się przypadkiem na zewnętrzny, lub wpisać konfiguracji zabronionej. Dodatkowo zmiana wewnętrznego zegara CPU na inny niż 1MHz może spowodować, że BASCOM nie będzie potem umiał wykryć i prawidłowo się komunikować z CPU, co utrudnia reprogramowanie. Ale z tym akurat metodą prób i błędów zmieniając parametr PORT DELAY w opcjach BASCOM da się uporać.
Jak użyjesz pinu RESET jako zwykłego pinu I/O to stracisz możliwość programowania za pomocą najprostrzych programatorów jak STK200. Wtedy potrzebny jest specjalny programator wysoko napięciowy.
Za SPI odpowiada fus SPIEN, ale niektóre programy chronią przed jego przestawieniem, widać to na skrenie który jest w 1 moim poście gdzie ten fus po postu nie jest możliwy do przestawienia. Ale w BASCOM takiej ochrony nie ma.
Ogólnie jeżeli masz zamiar robić częściej na AVRach to lepiej zainwestować w programator z trybem HVS , który pozwala odblokowywać zblokowane CPU. Ogólnie sprawdza się tu powiedzenie "Co ile kosztuje, tyle też może"
Za SPI odpowiada fus SPIEN, ale niektóre programy chronią przed jego przestawieniem, widać to na skrenie który jest w 1 moim poście gdzie ten fus po postu nie jest możliwy do przestawienia. Ale w BASCOM takiej ochrony nie ma.
Ogólnie jeżeli masz zamiar robić częściej na AVRach to lepiej zainwestować w programator z trybem HVS , który pozwala odblokowywać zblokowane CPU. Ogólnie sprawdza się tu powiedzenie "Co ile kosztuje, tyle też może"
Ostatnio zmieniony 31 paź 2009, 19:50 przez kayron, łącznie zmieniany 2 razy.
ale powiedzmy że będę ten procek programował w oddzielnym układzie, nie w układzie docelowym. a wejście reset ma mi służyć jako wejście badania długości impulsukayron pisze:Jak użyjesz pinu RESET jako zwykłego pinu I/O to stracisz możliwość programowania za pomocą najprostrzych programatorów jak STK200.
Nie zmienia to faktu że jak użyjesz pinu RESET jako portu I/O to tracisz możliwość programowania najprostszymi programatorami. wtedy tylko programator z trybem HVS (High Volotage Serial programming interface) może posłużyć do ponownego zaprogramowania takiego procesora.
PS. przepraszam pomyliłem się w poście wyżej i napisałem HVP zamiast HVS. Ale poprawiłem już to.
PS. przepraszam pomyliłem się w poście wyżej i napisałem HVP zamiast HVS. Ale poprawiłem już to.
Nie da się. Albo jedno, albo drugie. Jedyne wyjście jak musisz taki mały procesor zastosować, to zakup programatora HVS. Wtedy nawet jak zblokujesz linię RESET dasz rade przeprogramować procesor. Ostatecznie są jeszcze AVRy w obudowach DIL16, które mają więcej pinów, i unikniesz problemu z końcówką RST, bo wykorzystasz inny pin procesora.
Wiem to jest straszne ale Atmel właśnie tak załadował w bambuko użytkowników, chcąc zrobić trochę zbyt uniwersalny procesor. Dla tego ja też mam zamiar przerzucić się na jakiś lepszy programator z trybem HVS. Po prostu inaczej się nie opłaca.
Wiem to jest straszne ale Atmel właśnie tak załadował w bambuko użytkowników, chcąc zrobić trochę zbyt uniwersalny procesor. Dla tego ja też mam zamiar przerzucić się na jakiś lepszy programator z trybem HVS. Po prostu inaczej się nie opłaca.
Nie zupełnie, bo procesory te nie są z sobą do końca kompatybilne, różnią sie trochę Timerami i innymi układami. Ogólnie jak chcesz programować to w BASCOM to przygotuj się na ciężkie i bolesne starcie, oraz wydrukuj sobie notę katalogową do ATTINY45, bo bez niej nic nie zrobisz, zresztą z ATTINY2313 też niewiele. Bascom po prostu nie wspiera tych procesorów (praktycznie cała rodzina TINY). Możesz zapomnieć o poleceniach Config Timer, nie będą prawidłowo działać. Wszystko trzeba robić ręcznie. Więc czeka cie takie coś:
Kod: Zaznacz cały
Ocr0a = 254 'konfiguraja T0 i jego start w trybie automatycznej kontroli
Tccr0a = Tcr0a 'trzeba robić z poziomu rejestrów CPU. BASCOM nie obsługuje
Tccr0b = T0_start 'tego procesora prawidłowo z funkcji bibliotecznych
Poz_wys = 1 'inicjacja pozycji do wyświetlania na ekranie
Vram(1) = Lookup(13 , Cgrom) 'napis powitalny
Ostatnio zmieniony 31 paź 2009, 20:51 przez kayron, łącznie zmieniany 1 raz.
to jak Alberts napisał ten kompilator że nie wspópracuje z prockami?kayron pisze:Bascom po prostu nie wspiera tych procesorów. Możesz zapomnieć o poleceniach Config Timer, nie będą prawidłowo działać.
a nawiasem mówiąc nie będę używał timerów. żadnego. tylko zmienne i zapis do wewnętrznej pamięci RAM. no i polecenie pulsein.
Ciężko stwierdzić co się w Bascom stanie. Natomiast winę bardziej ponosi ATmel który zrobił rodzinę procesorów, które między sobą nie są kompatybilne sprzętowo, więc nie mam żalu do twórców Bascoma że dali sobie z tą rodzinę spokój, i nie stworzyli odpowiednich bibliotek (choć były pierwotnie zapowiadane).
Teoretycznie powinno działać, ale gwarancji nie ma. No i dokładność może być kiepska (tłusty druczek).Przeznaczenie:
Zwraca ilość jednostek czasowych, które upłynęły pomiędzy dwoma zboczami impulsów.
Składnia:
PULSEIN zmienna , PINx , nr_końcówki , zbocze
gdzie:
zmienna zmienna do której wpisany będzie czas, wyrażony w jednostkach czasowych,
PINx nazwa rejestru wejściowego portu, np. PIND,
nr_końcówki numer testowanej końcówki w podanym porcie PINx
zbocze określa przejście stanu na końcówce jakie ma być brane pod uwagę. Podanie 0 określa, że chodzi o przejście z 0 do 1; podanie zaś 1, że o przejście z 1 na 0.
Opis:
Instrukcja PULSEIN oczekuje na pojawienie się określonego zbocza na podanej końcówce. Gdy jako ostatni parametr podane jest 0, instrukcja oczekuje, aż stan końcówki też będzie 0. Wtedy dopiero zostanie uruchomiona procedura zliczania czasu, zakończona dopiero gdy na końcówce pojawi się stan 1, lub też gdy upłynie maksymalny czas oczekiwania na zmianę stanu.
Gdy czas przekroczy z góry określony limit, zmienna ERR przyjmie stan 1. Limit ten jest ustawiony na 65535 jednostek, co przy jednej jednostce wynoszącej 10ms da czas 655.35ms.
Można dodać instrukcję BITWAIT, by mieć pewność, że instrukcja PULSEIN odczeka na pojawienie się określonego stanu początkowego. Z drugiej jednak strony, jeśli stan ten się nie pojawi program zatrzyma się w tym miejscu na stałe.
Uwaga! Do zliczania nie jest używany żaden z liczników-czasomierzy. Wewnętrzna zmienna pracująca jako licznik (16 bitowy) jest zwiększana co 10ms. Czas ten jednak zależy od częstotliwości taktującego kwarcu. Można zmodyfikować procedurę z biblioteki by zmienić podstawową jednostkę czasu.
Zobacz także: PULSEOUT
Asembler:
Wywoływana jest procedura _PULSE_IN (korzystająca z procedury _ADJUST_PIN) z biblioteki MCS.LIB. Jako parametry przekazywane są: ZL wskazuje rejestr PINx, R16 zawiera stan końcówki a R24 przechowuje numer końcówki portu. Procedura zwraca w parze rejestrów X odmierzony czas.
Przykład:
Dim w As Byte
Pulsein w , PIND , 1 , 0 'detekcja zmiany stanu z 0 na 1
Print w
End