ATtiny25: změna frekvence oscilátoru za běhu programu

Vidím, že jsi se ani za rok příliš s datasheetem nezabýval… No nic - hodím Ti sem kód z AVR Studia. Uino si kvůli Tobě opravdu instalovat nebudu, do uina si to přepiš sám. Předpokládám, že CTRL-Cizí → CTRL-Vlastní umíš a přežvýkat to tak, aby to uino zkouslo zvládneš. Druhá možnost je nainstalovat si AVR Studio, zkompilovat to v něm a uino použít jenom jako programátor. Kód je odzkoušený pouze v simulátoru AVR Studia, ale šlapat by měl tak, jak jsi psal : Po zapnutí 10s pauza, pak 1s impulz a po něm Power-down sleep až do nového zapnutí. Výstup je na pinu B0 a pull-up nebo pull-down si u něj musíš ošetřit externím odporem. U ostatních jsou aktivované pull-upy - proč to tak je se dočteš v datasheetu. A abys neřek, tak jsem přiložil i zkompilovaný HEX. Můžeš to porovnat s těma “obecnýma” bodama, které jsem Ti psal v předchozích příspěvcích.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

ISR(TIM0_COMPA_vect, ISR_NAKED)
{
    reti();
}


int main()
{
// Prepnuti vystupu do neaktivniho rezimu
    PORTB = 0xFE;
    DDRB = 0;

// Prepnuti systemovych hodin na 31,25 kHz
    CLKPR = (1<<CLKPCE);
    CLKPR = (1<<CLKPS3);

// Nastaveni casovace na 5 sekund
    OCR0A = 152;
    TIMSK = (1<<OCIE0A);

// Povolit preruseni
    sei();

// Spustit casovac
    TCCR0A = (1<<WGM01);
    TCCR0B = (1<<CS02)|(1<<CS00);

// Aktivovat IDLE SLEEP MODE
    set_sleep_mode(SLEEP_MODE_IDLE);
    sleep_mode();   // 5 sekund poprve
    sleep_mode();   // 5 sekund podruhe

// Nastaveni casovace na 1 sekundu
    OCR0A = 30;

// Aktivovat vystup na B0
    PORTB |= 0x01;
    DDRB |= 0x01;

// Aktivovat IDLE SLEEP MODE
    sleep_mode();   // 1 sekunda

// Deaktivovat vystupy
    PORTB &= ~0x01;
    DDRB &= ~0x01;

// Zastavit casovac
    TCCR0B = (0<<CS02)|(1<<CS00);
    TCCR0A = (0<<WGM01);

// Zakazat preruseni
    cli();

// Aktivovat POWERDOWN SLEEP MODE
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    while (1)
    {
        sleep_mode();   // Sleep az do vypnuti
    }
}

Kompilováno v AVR Studio 4.19 + WinAVR.
mpcz.hex (500 Bytes)