<html><body>Trošku odbočím, i když to s tím souvisí a někteří mě za to asi umlátí :-)<div>Je až s překvapením kolik věcí se dá napsat bez použití přerušení, včetně</div><div>přesného časovače a tak podobně. Byl jsem nucen kolegou, že musím</div><div>tu aplikaci napsat bez použití přerušení, právě kvůli vzniku problému,</div><div>přišel mi ten požadavek dost úchylnej a zbytečný nakonec jsem zjistil, že</div><div>to až takový problém není, a to tam byla I2C komunikace, obsluha síťové</div><div>karty, časovač, komunikace s hradlovým polem, jeho cílem bylo aby to </div><div>nebylo náchylné na nějaký kousanec kvůli přerušení a světe div se opravdu,</div><div>s tím za čtrnáct let nebyl problém. Nedělám si iluze, že i s přerušením by</div><div>to chodilo bez chyby, ale byla to zajímavá škola, co vše lze udělat bez</div><div>použití přerušení, když člověk musí. Tím samozřejmě nenabádám to přepsat,</div><div>ale občas je k zamyšlení že ke "sčítání dvou čísel" někdo potřebuje</div><div>použít přerušení :-) Jinak ano většina mých aplikací používá přerušení a u seriáku</div><div>je to většinou skoro nutnost když nechci zasekat procesor. Ale třeba I2C tam</div><div>slave s klidem počká než se rozmyslím co chci dělat...</div><div><br></div><div>Jinak to teda bylo na 8bit AVR od atmelu.</div><div><br></div><div>Zdeněk Aster</div><div><br><p>---------- Původní zpráva ----------<br>Od: Ondřej Janovský <ondrej.janovsky@alarex.cz><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 16. 11. 2016 13:34:01<br>Předmět: Re: Opět jsem v PICu(i)</p><br><blockquote>No to tu není, protože by to bylo dlouhé. Kompilátor XC8 dělá dost <br>zajímavý kód, který je roztahaný.<br><br>Jinak mám problém s tím, že jsem si chtěl ověřit, že se mi zakazuje <br>přerušení jak má, tak jsem si umazal povolení přerušení .... kód místo <br>toho, aby přestal obsluhovat I2C a Timer, tak fungoval dál. Udělal jsem <br>5 překladů a náhrání do procesoru a nic. Po 6 to najednou zase fungovalo <br>jak má. Tak tu buď straší, nebo dělám jednu botu za druhou.<br><br>A nakonec jsem ještě zkusil vypnout přerušení a udělat porovnání 2x po <br>sobě a výsledek je, že se opravdu ty porovnání vyhodnotily rozdílně. A <br>podotýkám, proměnné, které porovnávám se nenastavují ani v jednom přerušení.<br><br>On 11/16/2016 13:24, Jan Waclawek wrote:<br>> No a kde je to slubovane zakazovanie prerusenia pocas citania premennej<br>> ktora sa meni v preruseni?<br>><br>> wek<br>><br>><br>> ----- Original Message ---------------<br>>> Tak to tu mám. Vypadá to, ľe někdy se střetne přeruąení od I2C s<br>>> vyhodnocením podmínky a je zle.<br>>> Zakázal jsem i přeruąení, počkal 8 x NOP a teprve pak vyhodnocoval, ale<br>>> občas (za daleko deląí dobu) se chyba stane také.<br>>><br>>>         Line     Address     Opcode    Label         DisAssy<br>>>      65498    1FFB2       0100                MOVLB 0x0<br>>>      65499    1FFB4       EFDC                GOTO 0x1FFB8<br>>>      65500    1FFB6       F0FF                NOP<br>>>      65501    1FFB8       0E68       main     MOVLW 0x68<br>>>      65502    1FFBA       6E02                MOVWF a, ACCESS<br>>>      65503    1FFBC       0EEC                MOVLW 0xEC<br>>>      65504    1FFBE       6E03                MOVWF 0x3, ACCESS<br>>>      65505    1FFC0       0E06                MOVLW 0x6<br>>>      65506    1FFC2       6E04                MOVWF 0x4, ACCESS<br>>>      65507    1FFC4       0E00                MOVLW 0x0<br>>>      65508    1FFC6       6E05                MOVWF 0x5, ACCESS<br>>>      65509    1FFC8       0E70                MOVLW 0x70<br>>>      65510    1FFCA       6E06                MOVWF b, ACCESS<br>>>      65511    1FFCC       0EED                MOVLW 0xED<br>>>      65512    1FFCE       6E07                MOVWF 0x7, ACCESS<br>>>      65513    1FFD0       0E06                MOVLW 0x6<br>>>      65514    1FFD2       6E08                MOVWF 0x8, ACCESS<br>>>      65515    1FFD4       0E00                MOVLW 0x0<br>>>      65516    1FFD6       6E09                MOVWF 0x9, ACCESS<br>>>      65517    1FFD8       5006                MOVF b, W, ACCESS<br>>>      65518    1FFDA       5C02                SUBWF a, W, ACCESS<br>>>      65519    1FFDC       5007                MOVF 0x7, W, ACCESS<br>>>      65520    1FFDE       5803                SUBWFB 0x3, W, ACCESS<br>>>      65521    1FFE0       5008                MOVF 0x8, W, ACCESS<br>>>      65522    1FFE2       5804                SUBWFB 0x4, W, ACCESS<br>>>      65523    1FFE4       5009                MOVF 0x9, W, ACCESS<br>>>      65524    1FFE6       5805                SUBWFB 0x5, W, ACCESS<br>>>      65525    1FFE8       A0D8                BTFSS STATUS, 0, ACCESS<br>>>      65526    1FFEA       D002                BRA 0xFFF0<br>>>      65527    1FFEC       0E01                MOVLW 0x1<br>>>      65528    1FFEE       D001                BRA 0xFFF2<br>>>      65529    1FFF0       0E00                MOVLW 0x0<br>>>      65530    1FFF2       6E01                MOVWF __pcstackCOMRAM, ACCESS<br>>>      65531    1FFF4       EF00                GOTO 0x0<br>>>      65532    1FFF6       F000                NOP<br>>><br>>><br>>> A v "c"<br>>><br>>>   unsigned long a = 453736UL;<br>>>   unsigned long b = 454000UL;<br>>>   unsigned char x = (a >= b);<br>>><br>> _______________________________________________<br>> HW-list mailing list  -  sponsored by www.HW.cz<br>> Hw-list@list.hw.cz<br>> http://list.hw.cz/mailman/listinfo/hw-list<br><br><br>_______________________________________________<br>HW-list mailing list  -  sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list</blockquote></div></body></html>