AtTiny2313 - Prędkości taktowania + kilka innych pytań

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
Denar
-
Posty: 18
Rejestracja: 13 sty 2013, 14:12
Lokalizacja: Wlkp

AtTiny2313 - Prędkości taktowania + kilka innych pytań

Post autor: Denar » 26 sty 2013, 10:04

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)?

Awatar użytkownika
tom5555
Użytkownik
Posty: 625
Rejestracja: 23 sty 2008, 1:20
Lokalizacja: Zabrze
Kontakt:

Post autor: tom5555 » 26 sty 2013, 14:06

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.

Denar
-
Posty: 18
Rejestracja: 13 sty 2013, 14:12
Lokalizacja: Wlkp

Post autor: Denar » 27 sty 2013, 9:17

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. :neutral:

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 06 lut 2013, 17:59

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.

ODPOWIEDZ