Stránka 1 z 1

ATMEGA328P - časování

Napsal: 17 črc 2024, 10:39
od lubosh
Ahoj,
potřeboval bych radu ohledně časování ATMEGY328P.
Tento testovací triviální prográmek v AVR STUDIU:

Kód: Vybrat vše

#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRB |=(1<<PB0);

	while(1)
	{
	PORTB |=(1<<PB0);
	_delay_ms (100);
	PORTB &=~(1<<PB0);
	_delay_ms (100);
	}
}
při simulaci DEBUGEREM časy odpovídají. Po naprogramování přes programátor ISP ASIX PRESTO je čekací doba 800ms.
Programovací propojky CUT, CKSEL nastaveny na XT 8.0-16.0MHZ, 16KcK+65ms.
Krystal mám 16MHz.

Zkoušel jsem ATMEGA8 se stejným prográmkem:

Kód: Vybrat vše

#define F_CPU 4000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRB |=(1<<PB0);

	while(1)
	{
	PORTB |=(1<<PB0);
	_delay_ms (100);
	PORTB &=~(1<<PB0);
	_delay_ms (100);
	}
}
Simulace AVR STUDIO DEBUG časy odpovídají. I po naprogramování procesoru čekací doba odpovídá 100ms
Krystal 4MHz.

Mám někde chybu v nastavení programovacích propojek? Stejné to je i při prográmku z arduina IDE a programování samostatného čipu ATMEGA328 přes ISP programátor.
Díky za případnou radu.

Re: ATMEGA328P - časování

Napsal: 17 črc 2024, 17:33
od HonzaD
Ano, problém je v CKDIV8.
Pro systémové hodiny je nastaven prescaler /8. Lze buď "odprogramovat" CKDIV8 nebo v programu přenastavit CLKPR registr.

Kód: Vybrat vše

CLKPR=1<<CLKPCE;		//Odemkne změnu registru
CLKPR=0;		//Nastaví prescaler na 1

Re: ATMEGA328P - časování

Napsal: 18 črc 2024, 08:30
od lubosh
Ahoj,
moc děkuji za pomoc, vyřešeno v nastavení programovací propojky a vše OK.

Re: ATMEGA328P - časování

Napsal: 21 črc 2024, 11:37
od Vladimir66
Ahoj,
Tyhle klony (napr. 328p,pb) )nekdy vyzaduji nahrat knihovnu do IDE,
viz toto starsi video.Resi tim predevsim problem s prehranim bootloderu.
Jestli to resi i neco jineho, netusim