Witam.
Po pierwszym starciu z AVR-ami (płyta ewaluacyjna + AtMega32) postanowiłem zrobić kolejny krok i zmontować coś na płycie stykowej. Zamontowałem attiny2313 , podłączyłem elementy wg noty katalogowej (bez kwarca), podpiąłem programator (ISP), wszystko ładnie wykrywa i programuje ale...
proceduta "wait 1" wstrzymuje mi procesor na ok 32s. Ustawiałem fuse-bity w bascom-avr na wewnętrzy oscylator z prędkością 8MHz i dalej to samo. Co mogę jeszcze zrobić? Używam bascomavr ver 1.x.x.x.x
Pytanie nr2. obecnie programowanie ISP wykorzystuje m.in. PB5 (MOSI), PB6 (MISO) oraz CLK (PB7). Jeżeli napiszę programik i ustawię te porty np. jako wyjście i wykorzystam je do sterowań, to po ponownym podłączeniu programatora będę miał zablokowane progrmowanie przez ISP (z powodu zarezerwowanych już w programie owych portów)?
AtTiny2313 - Prędkości taktowania + kilka innych pytań
AD1. Czy wartość zegara ustawiona komendą $crystal lub w konfiguracji kompilatora jest taka sama jak ustawiona w procesorze, czy w programie występują jakieś przerwania? Gdybyś wrzucił kod, można było by wiadomo czy wina leży po stronie software, czy hardware.
AD2. Nie zablokujesz procesora, dopóki w fuse bitach nie wyłączysz nóżki reset (nie przełączysz jej w tryb zwykłego wejścia - wyjścia), lub nie wyłączysz ISP.
AD2. Nie zablokujesz procesora, dopóki w fuse bitach nie wyłączysz nóżki reset (nie przełączysz jej w tryb zwykłego wejścia - wyjścia), lub nie wyłączysz ISP.
Polecenia "$crystal" na początku nie wpisywałem w kodzie programu, jedynie ustawiałem w właściwościach kompilatora. Później zacząłem podawać w kodzie różne wartości "$crystal" i mogę tylko stwierdzić, że im mniejsza jej wartość tym szybciej taktuje procek. Kodu programu nie będę wrzucał bo w zasadzie on nic nie ma. Chciałem jedynie uruchomić klocka i sprawdzić czy działa w najprostszym z możliwych sposobów. Jest ustawiony tylko jeden port jako wyjście i pętla w odstępie "wait 1" zmienia jej stan z niskiego na wysoki i tak w kółko. 
32 sekundy trwa cały cylk 1->0->1 czy czas między przełączeniem 1->0 lub 0->1 ?
Poza tym, objaw prawidłowy właśnie dla podania złej wartości zegara procesora. Atmega8 ma domyślnie generator RC 8Mhz dzielone przez 8, w tiny2313 powinno być podobnie.
Zakładam że w wyniku tego masz procesor taktowany 1Mhz, a zadałeś kompilatorowi że taktowanie wynosi 16Mhz i ma poczekać sekundę, czyli 16 milionów taktów zegara. W efekcie procesor czeka 16 milionów taktów, co przy taktowaniu 1Mhz zajmie mu 16s.
Poza tym, objaw prawidłowy właśnie dla podania złej wartości zegara procesora. Atmega8 ma domyślnie generator RC 8Mhz dzielone przez 8, w tiny2313 powinno być podobnie.
Zakładam że w wyniku tego masz procesor taktowany 1Mhz, a zadałeś kompilatorowi że taktowanie wynosi 16Mhz i ma poczekać sekundę, czyli 16 milionów taktów zegara. W efekcie procesor czeka 16 milionów taktów, co przy taktowaniu 1Mhz zajmie mu 16s.