Stránka 1 z 2

RC oscilator u AVR procesorů

Napsal: 13 říj 2014, 06:00
od franta22
Zdravím vševchny . Pracuji s procesorem ATTINY 13A ,později bych chtěl přejít i na procesor ATTINY 4313 . Oba dva mají interní RC oscilátor .
Program ladím na simulátoru a následně testuju na reálném kitu s procesorem . Program píši v assembleru . Nedaři se mi provozovat interní RC oscilátor na vyššim kmitočtu než 128KHz tzn. 4,8MHz a 9,6MHz.
Programátor mám Avrdude GUI .
Děkuji předem za assemblerickou rutinu na nastaveni vnitřního oscilátoru
RC na kmitočet 4,8Mhz nebo 9,6Mhz .
Nastavení z programátoru Avrdude gui pomocí HFuse , IFuse a EFuse
mi taky není jasné .

Napsal: 13 říj 2014, 09:24
od Wolfik

Napsal: 13 říj 2014, 12:58
od franta22
DÉKUJU ZA URÁźku ale problém to neŘEŠI ......JSEM CHTĚL POMOCT = HELFNOUIT A NE´URAŽEJÍCI ODPOvěď ...asi to je dnešní dobou podmíněné ????

Napsal: 13 říj 2014, 13:13
od Ruprecht
Myslím, že longin má tu větu v uvozovkách jako automatický podpis... :)

Napsal: 13 říj 2014, 13:16
od AB1
DÉKUJU ZA URÁźku
To není na tebe, je to heslo, které si každý může zvolit a ukazuje se v každé poště pod čarou.

Jestli jsi ještě nehýbal s fuse bitama, tak tento kód nastaví 9,6 MHz

Kód: Vybrat vše

   ldi r16, 0x80
   out CLKPR, r16
   ldi r16, 0
   out CLKPR, r16

Napsal: 13 říj 2014, 16:34
od Hydrawerk
Taky mám poznámku pod čarou, a hezkou.

Napsal: 13 říj 2014, 16:58
od nekmil
Pokud si přineseš ATtiny13A domů, tak je z výroby nastaven RC oscilátor na 9,6 MHz. S těma "pojistkama L-fuse, H-fuse" to není tak strašné. Viz "Longin"

Napsal: 13 říj 2014, 18:09
od AB1
nekmil:
Ale CKDIV8 je zapnutý, takže f=1,2 MHz.

Napsal: 13 říj 2014, 19:16
od nekmil
AB1: jasně na to jsem zapoměl :D

Napsal: 14 říj 2014, 08:08
od franta22
DĚKUJU ti -- AB1
UŽ to fachá.....

ldi r16, 0X80
out CLKPR, r16 ;NUTNO NASTAVIT NEJPRVE

ldi r16, 0X00
out CLKPR, r16 ;NASTAVENI OSCILATORU Clock Prescale Register –CLKPR / Clock Division Factor

ldi r16, 0X7F
out OSCCAL, r16 ;Oscillator Calibration Register– OSCCAL
Ještě nevím jak uzamknouti procesor ....ať nastavím LOCK BIT jakkoliv
při následném čteni pameti flasch se mi precte stale celej soubor =neuzamčenej -:)
-------------------------------
Nechci nikoho rozčilit ale poradit jak uzamknouti program v ATTINY 13
přes avrdude guy aby nešel čist a nevypadnul .
8O

Napsal: 14 říj 2014, 17:50
od AB1
při následném čteni pameti flasch se mi precte stale celej soubor
Soubor načteš vždycky.
Ale pokud je procesor zamklý, tak načtený soubor je jiný než zapsaný.

Napsal: 14 říj 2014, 18:28
od nekmil
Tady je další kalkulačka na fuse a lock bity.

http://eleccelerator.com/fusecalc/fusec ... LOCKBIT=FF

Napsal: 03 říj 2017, 08:40
od mpcz
Zdravím,
potřebuji přepnout ATTINY85 do minikmitočtu co nejníže (ideál pod 300microA v chodu), (128kHz a méně) v očekávání minimální spotřeby. MPU také nesmí NIKDY odebírat více než 1 mA. Z důvodu slabých znalostí v tomto oboru bych rád zůstal u prostředí ARDUINO 1.8.5 a jednoduchého programátoru:
http://www.ispshop.cz/index.php?main_pa ... d=ATTINY44
samozřejmě pokud vyhoví HW požadavkům, jinak koupím jinou.
Úkol pro MPU je velmi jednoduchý: po zapnutí mini spotřeba, čekat cca 10 sec., pak jeden výstup na 1 sec. do 1, potom neusnout, čekat na 1 na druhém pinu.
V IDE 1.8.5 s podporou TINY jsem použil volbu 128kHz, kompilace i upload OK. Jestli se to přeplo na 128kHz nevím, problém působí delay() na 10 sec. Na tomto řádku se to při běhu programu sekne a je konec. Evidentně na tomto kmitočtu delay() působí problémy. Uspávat CPU nechci.
Podařilo se někomu ATMEL, nejlépe ATTINY85 přepnout na 128kHz s funkčním delay()? Jaká byla spotřeba 5V nebo 3V?
Děkuji za případnou radu.
mpcz, 03.oct.2017

Napsal: 03 říj 2017, 11:22
od FHonza
Na nejnižší kmitočet přepneš Tiny85 tak, že se použije jako zdroj hodin Watchdog oscilátor (CKSEL = 0100) a ještě se zapne interní dělička 8 (CKDIV8=0). Tím se dostaneš na 16kHz. Má to řadu nevýhod, hlavně WD oscilátor je silně napěťově a teplotně závislý, takže musíš zapomenout na nějaké přesné měření času. Výhodnější je použít nízkofrekvenční krystal (spotřeba vzroste v řádech jednotek µA), CKSEL = 0110. Pro "jemnější" nastavení se podívej na registr CLKPR.

Pro změření taktu je asi nejjednodušší nastavit CKOUT=0 a na PB4 takt změřit.

S Arduinem se bude snižovat spotřeba obtížně, pro tak jednoduchou úlohu je i zbytečné Arduino použít. Lepší je mít vše pod kontrolou.
Začni tím že odstavíš vše nepotřebné (A/D převodník, komparator, Brown-out detektor, ...). Podívej se také na registr PRR.

Podrobně je vše popsáno v datasheetu v kapitolách Power Management and Sleep Modes a System Clock and Clock Options.

Napsal: 03 říj 2017, 15:35
od mpcz
Dík za reakci. Toto vše jsem již vyčet a pročetl. Potíž je v tom, JAK to všechno udělat. Ideální by bylo *.ino, které zkompiluji v 1.8.5 a pošlu programátorem do TINY85. Netušil jsem, že přepnutí do LOW Power bude tak nejednoduché. Asi to vidím moc jednoduše, ale na PIC jsem dostal napsaný kód, poslal programátorem do MPU a jede to vše OK, to vše za pár minut. Možná také existuje jiný ATMEL, který hned po startu běží v low power módu, což by věc značně zjednodušilo.
mpcz, 03.oct.2017