<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Zkusil jsem AVR64DD32, to bude podobný. Zrecykloval jsem předchozí
pokus:<br>
--------------------<br>
<font face="monospace">#include <avr/io.h> // AVR64DD32<br>
#include <math.h><br>
<br>
int main(void) { <br>
//_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA,
CLKCTRL_CLKSEL_EXTCLK_gc); // ext clk nebo HF xtal<br>
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA,
CLKCTRL_CLKSEL_OSCHF_gc); // int osc<br>
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, 0);
// nedelit - bude 24 MHz<br>
//_PROTECTED_WRITE(CLKCTRL.XOSCHFCTRLA, CLKCTRL_CSUTHF_4K_gc +
CLKCTRL_FRQRANGE_24M_gc + CLKCTRL_ENABLE_bm); // Xosc 24MHz<br>
_PROTECTED_WRITE(CLKCTRL.OSCHFCTRLA, CLKCTRL_RUNSTBY_bm +
CLKCTRL_FRQSEL_24M_gc); // int osc 24MHz<br>
<br>
PORTC.DIR = 255;<br>
PORTF.DIR = 255 - (1<<6) - (1<<7);<br>
<br>
PORTF.PIN6CTRL = PORT_PULLUPEN_bm;<br>
PORTF.PIN7CTRL = PORT_PULLUPEN_bm;<br>
<br>
while (1) {<br>
struct {<br>
bool b1:1;<br>
bool b2:1;<br>
} b;<br>
<br>
PORTC.OUT = 255;<br>
PORTC.OUT = 255;<br>
PORTC.OUT = 255;<br>
PORTC.OUT = 0;<br>
PORTC.OUTTGL = 1;<br>
PORTC.OUTTGL = 1;<br>
PORTC.OUTTGL = 1;<br>
PORTC.OUTTGL = 1;<br>
<br>
b.b1 = (PORTF.IN & (1<<6)); // tlacitko<br>
b.b2 = (PORTF.IN & (1<<7)); // vzduch<br>
<br>
PORTC.OUT = 255;<br>
PORTC.OUT = 0;<br>
<br>
if (b.b1) {<br>
PORTC.OUT = 1; // modrá<br>
};<br>
if (b.b2) {<br>
PORTC.OUT = 1<<3; // žlutá<br>
};<br>
<br>
</font><font face="monospace"> PORTC.OUT = 255;<br>
</font><font face="monospace"> PORTC.OUT = 0;<br>
PORTC.OUT = 255;<br>
PORTC.OUT = 0;<br>
}<br>
}</font><br>
--------------------<br>
Dílky na osciloskopu 250 ns<br>
Nula okolo b.b1= a b.b2= to trvá něco asi 1,2 dílku<br>
Oblast s if trvá taky asi 1,2 dílu, žluté pulzy mají stejně jako při
opakování OUTTGL, modré o něco víc, nebo asi 0,9 dílku když je
neukončí žlutej.<br>
<br>
Data mem usage 0, program 300<br>
je jedno zda je deklarace global nebo local.<br>
<br>
Překlad:<br>
-------------------<br>
<font face="monospace">mini-float-test-avr64dd32.elf: file
format elf32-avr<br>
<br>
Sections:<br>
Idx Name Size VMA LMA File off Algn<br>
0 .data 00000000 00806000 00806000 00000180 2**0<br>
CONTENTS, ALLOC, LOAD, DATA<br>
1 .text 0000012c 00000000 00000000 00000054 2**1<br>
CONTENTS, ALLOC, LOAD, READONLY, CODE<br>
2 .comment 00000030 00000000 00000000 00000180 2**0<br>
CONTENTS, READONLY<br>
3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000
000001b0 2**2<br>
CONTENTS, READONLY<br>
4 .debug_info 00001fac 00000000 00000000 000001ec 2**0<br>
CONTENTS, READONLY, DEBUGGING<br>
5 .debug_abbrev 00001dfe 00000000 00000000 00002198 2**0<br>
CONTENTS, READONLY, DEBUGGING<br>
6 .debug_line 0000016f 00000000 00000000 00003f96 2**0<br>
CONTENTS, READONLY, DEBUGGING<br>
7 .debug_str 00000dee 00000000 00000000 00004105 2**0<br>
CONTENTS, READONLY, DEBUGGING<br>
<br>
Disassembly of section .text:<br>
<br>
00000000 <__vectors>:<br>
0: 0c 94 48 00 jmp 0x90 ; 0x90 <__ctors_end><br>
4: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
8: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
10: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
14: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
18: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
1c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
20: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
24: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
28: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
2c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
30: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
34: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
38: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
3c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
40: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
44: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
48: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
4c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
50: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
54: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
58: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
5c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
60: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
64: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
68: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
6c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
70: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
74: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
78: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
7c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
80: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
84: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
88: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
8c: 0c 94 52 00 jmp 0xa4 ; 0xa4
<__bad_interrupt><br>
<br>
00000090 <__ctors_end>:<br>
90: 11 24 eor r1, r1<br>
92: 1f be out 0x3f, r1 ; 63<br>
94: cf ef ldi r28, 0xFF ; 255<br>
96: cd bf out 0x3d, r28 ; 61<br>
98: df e7 ldi r29, 0x7F ; 127<br>
9a: de bf out 0x3e, r29 ; 62<br>
9c: 0e 94 54 00 call 0xa8 ; 0xa8 <main><br>
a0: 0c 94 94 00 jmp 0x128 ; 0x128 <_exit><br>
<br>
000000a4 <__bad_interrupt>:<br>
a4: 0c 94 00 00 jmp 0 ; 0x0 <__vectors><br>
<br>
000000a8 <main>:<br>
a8: 88 ed ldi r24, 0xD8 ; 216<br>
aa: 90 e0 ldi r25, 0x00 ; 0<br>
ac: 84 bf out 0x34, r24 ; 52<br>
ae: 90 93 60 00 sts 0x0060, r25 ; 0x800060
<__TEXT_REGION_LENGTH__+0x7f0060><br>
b2: 84 bf out 0x34, r24 ; 52<br>
b4: 90 93 61 00 sts 0x0061, r25 ; 0x800061
<__TEXT_REGION_LENGTH__+0x7f0061><br>
b8: 24 ea ldi r18, 0xA4 ; 164<br>
ba: 30 e0 ldi r19, 0x00 ; 0<br>
bc: 84 bf out 0x34, r24 ; 52<br>
be: 20 93 68 00 sts 0x0068, r18 ; 0x800068
<__TEXT_REGION_LENGTH__+0x7f0068><br>
c2: 8f ef ldi r24, 0xFF ; 255<br>
c4: 80 93 40 04 sts 0x0440, r24 ; 0x800440
<__TEXT_REGION_LENGTH__+0x7f0440><br>
c8: 8f e3 ldi r24, 0x3F ; 63<br>
ca: 80 93 a0 04 sts 0x04A0, r24 ; 0x8004a0
<__TEXT_REGION_LENGTH__+0x7f04a0><br>
ce: 88 e0 ldi r24, 0x08 ; 8<br>
d0: 80 93 b6 04 sts 0x04B6, r24 ; 0x8004b6
<__TEXT_REGION_LENGTH__+0x7f04b6><br>
d4: 80 93 b7 04 sts 0x04B7, r24 ; 0x8004b7
<__TEXT_REGION_LENGTH__+0x7f04b7><br>
d8: 8f ef ldi r24, 0xFF ; 255<br>
da: 91 e0 ldi r25, 0x01 ; 1<br>
dc: 28 e0 ldi r18, 0x08 ; 8<br>
de: 80 93 44 04 sts 0x0444, r24 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
e2: 80 93 44 04 sts 0x0444, r24 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
e6: 80 93 44 04 sts 0x0444, r24 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
ea: 10 92 44 04 sts 0x0444, r1 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
ee: 90 93 47 04 sts 0x0447, r25 ; 0x800447
<__TEXT_REGION_LENGTH__+0x7f0447><br>
f2: 90 93 47 04 sts 0x0447, r25 ; 0x800447
<__TEXT_REGION_LENGTH__+0x7f0447><br>
f6: 90 93 47 04 sts 0x0447, r25 ; 0x800447
<__TEXT_REGION_LENGTH__+0x7f0447><br>
fa: 90 93 47 04 sts 0x0447, r25 ; 0x800447
<__TEXT_REGION_LENGTH__+0x7f0447><br>
fe: 40 91 a8 04 lds r20, 0x04A8 ; 0x8004a8
<__TEXT_REGION_LENGTH__+0x7f04a8><br>
102: 30 91 a8 04 lds r19, 0x04A8 ; 0x8004a8
<__TEXT_REGION_LENGTH__+0x7f04a8><br>
106: 80 93 44 04 sts 0x0444, r24 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
10a: 10 92 44 04 sts 0x0444, r1 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
10e: 46 fd sbrc r20, 6<br>
110: 90 93 44 04 sts 0x0444, r25 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
114: 37 fd sbrc r19, 7<br>
116: 20 93 44 04 sts 0x0444, r18 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
11a: 10 92 44 04 sts 0x0444, r1 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
11e: 80 93 44 04 sts 0x0444, r24 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
122: 10 92 44 04 sts 0x0444, r1 ; 0x800444
<__TEXT_REGION_LENGTH__+0x7f0444><br>
126: db cf rjmp .-74 ; 0xde
<main+0x36><br>
<br>
00000128 <_exit>:<br>
128: f8 94 cli<br>
<br>
0000012a <__stop_program>:<br>
12a: ff cf rjmp .-2 ; 0x12a
<__stop_program></font><br>
-------------------<br>
<br>
PH<br>
<br>
Dne 24.04.2024 v 19:43 Martin Záruba napsal(a):<br>
<blockquote type="cite"
cite="mid:e6526e27-6b6b-4f4a-9d7f-6f5756f76ace@volny.cz">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<p>Byv vychován assemblerem a zoufalým nedostatkem paměti,
vymýšlel jsem, třeba na AT89C4051 různé úsporné formáty.</p>
Proměnná b (viz níže) zabírá zjevně jen jeden byte, což lze
zjistit snadno přes sizeof(b) a lze do ní uložit 8 ANO/NE, které
budou POJMENOVANÉ a tedy srozumitelné. <br>
<p>Můžete někdo zkusit, jak se přeloží na AT Mega tento kód? Zda
je rozumné něco takového použít?</p>
<div
style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span
style="color: #4e5b61;"> </span><span style="color: #00979d;">struct</span><span
style="color: #4e5b61;"> </span><span style="color: #434f54;">{</span></div><div><span
style="color: #4e5b61;"> </span><span style="color: #00979d;">bool</span><span
style="color: #4e5b61;"> b1:</span><span style="color: #005c5f;">1</span><span
style="color: #4e5b61;">;</span></div><div><span
style="color: #4e5b61;"> </span><span style="color: #00979d;">bool</span><span
style="color: #4e5b61;"> b2:</span><span style="color: #005c5f;">1</span><span
style="color: #4e5b61;">;</span></div><div><span
style="color: #4e5b61;"> </span><span style="color: #434f54;">}</span><span
style="color: #4e5b61;"> b;</span></div>
<div><span style="color: #728e00;">if</span><span
style="color: #4e5b61;"> </span><span style="color: #434f54;">(</span><span
style="color: #d35400;">b</span><span style="color: #4e5b61;">.</span><span
style="color: #d35400;">b1</span><span style="color: #434f54;">)</span><span
style="color: #4e5b61;"> </span><span style="color: #434f54;">{}</span><span
style="color: #4e5b61;">;</span></div>
</div>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<br>
</body>
</html>