ATMEGA328P - časování

Odpovědět
lubosh
Příspěvky: 2
Registrován: 17 črc 2024, 09:47

ATMEGA328P - časování

Příspěvek 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.
HonzaD
Příspěvky: 21
Registrován: 17 bře 2020, 12:39

Re: ATMEGA328P - časování

Příspěvek 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
lubosh
Příspěvky: 2
Registrován: 17 črc 2024, 09:47

Re: ATMEGA328P - časování

Příspěvek od lubosh »

Ahoj,
moc děkuji za pomoc, vyřešeno v nastavení programovací propojky a vše OK.
Vladimir66
Příspěvky: 393
Registrován: 02 dub 2014, 15:30

Re: ATMEGA328P - časování

Příspěvek 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

Odpovědět