<!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>