Atmel studio / GCC - oprimalizace
Pavel Hudecek
edizon na seznam.cz
Středa Duben 1 17:24:54 CEST 2020
Přesně to jsem našel taky. Takhle chráněných registrů je hromada a bylo i dřív, ale nikdy jsem kvůli tomu nemusel použít jiný asm, než jen cli/sti. V codevisionu to mají ošetřeno, aby to proběhlo dobře.
Bohužel mi v něm nefunguje vestavěný programátor (pokouší se udělat nějakej temp u sebe v program files), tak teď používám Atmel studio. Dá se v něm sice udělat projekt, kterej pak překládá CV, ale nedá se tvrdit, že by to chodilo zrovna hladce, tak jsem tentokrát vygeneroval novej projekt GCC a narážím na různé nečekané komplikace:-)
Asi zůstanu u tý lehce zlobící spolupráce CV a AS.
PH
Od: Jan Waclawek
Tieto moderne AVRka od Microchipu nepoznam, naposledy som AVRko programoval
pred eeee cojaviem asi 8 rokmi.
Takze stahujem DS, hladam MCLKCTRLA a hned druhy najdenie je
The Main Clock and Prescaler configuration registers (CLKCTRL.MCLKCTRLA,
CLKCTRL.MCLKCTRLB) are
protected by the Configuration Change Protection Mechanism, employing a
timed write procedure for changing these
registers.
Klikatelna linka vedie na
8.5.7.1 Sequence for Write Operation to Configuration Change Protected I/O
Registers
[...]
2. Within four instructions, the software must write the appropriate data
to the protected register.
Cize to treba napisat v asembleri. Bodka.
wek
----- Original Message ---------------
Subject: RE: Atmel studio / GCC - oprimalizace
From: Pavel Hudecek <edizon na seznam.cz>
Date: Wed, 1 Apr 2020 16:53:06 +0200
To: HW-news <hw-list na list.hw.cz>
Tiny414 v kitu explained nano.
Inicializace hodin:
unsigned char n;
__asm__("cli");
// Main clock source: 20MHz Internal RC Oscillator
// 20MHz oscillator specified by the OSCCFG.FREQSEL fuse bits=0x02
// Peripheral clock output on CLKOUT (PORTB, Pin 5): Off
n=CLKCTRL_CLKSEL_OSC20M_gc | (0<<CLKCTRL_CLKOUT_bp);
CPU_CCP=CCP_IOREG_gc;
CLKCTRL.MCLKCTRLA=n;
// Peripheral clock prescaler division ratio: 1
// Peripheral clock: 20000,000 kHz
n=0;
CPU_CCP=CCP_IOREG_gc;
CLKCTRL.MCLKCTRLB=n;
Takhle to vygeneroval codevision, pùvodnì tam byly jetì ty pragmy mìnící
optimalizaci, ale odmazal jsem je, aby neprudil e je ignoruje.
PH
Od: Jan Waclawek
No dobre ale ake je to vlastne AVR? Daju sa v nom vobec programovo menit
hodiny?
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20200401/07047fac/attachment.html>
Další informace o konferenci Hw-list