Atmega8L i OSCCAL

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
nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

Atmega8L i OSCCAL

Post autor: nasiono » 28 mar 2006, 16:16

Cześć, chciałem sobie skonfigurować atmege8L na 8Mhz ale mam z tym problemy skonfigurowałem fuse bity na tyle na jle zrozumiałem datasheeta(zdjęcie zamieszczam niżej).Następnie odczytałem wartość z pony proga (Read osc. calibration byte) wartość 0xAC.I Napisałem taki prosty program testowy na zwykłęj procedurze - delayms.

#include <avr/io.h>
#include "lcd.h"
int main(void)
{

OSCCAL=0xAC;

LCD_init();

LCD_xy(0,0);
LCD_putstr_P(PSTR("START"));

delayms(3000);

LCD_clear();
LCD_xy(0,0);
LCD_putstr_P(PSTR("START"));

for(;;){}}

I nie stety spaźnia około 4x
sprawdziłem na symulatorze na wart 5ms i tam pokazuje ze sama taa instruckja wykonuje sie 23ms. Co jest nie tak ,czegoś brakuje ,a może coś pomyliłem prosze o POMOC.!!
Załączniki
fus.jpg

ZbeeGin

Post autor: ZbeeGin » 28 mar 2006, 18:10

Fusy ustawiłeś dobrze.

delayms nie jest godne polecenia przy dokładnym odmierzaniu czasu. Skorzystaj raczej z Timera w połączeniu niestety z "rasowym" kwarcem. Niestety wewnętrzny RC nie jest - bo nie może być - stabilny i powtarzalny.

Niestety żaden symulator, zwłaszcza wysokiego poziomu nie jest w stanie dokładnie ustalić czasu wykonania każdej z instrukcji. Nie zapominaj także, by właściwie ustawić częstotliwość taktowania procesora w symulatorze.

W realnym układzie opóżnienie pomiędzy dwoma wydrukami na wyświetlaczu będą obarczone opóźnieniami samego wyświetlacza. Samo polecenie CLR trwa 2 ms!

ODPOWIEDZ