À êàê èíà÷å? Êàñàòåëüíî AVR îäíîâðåìåííî ïîñòóïèâøèå çàïðîñû ïðåðûâàíèÿ áóäóò îáðàáîòàíû â ñîîòâåòñòâèè ñ òàáëèöåé äëÿ êàæäîãî êàìíÿ.Äðóãîå äåëî, ÷òî â ÌÊ íåò ïðèîðèòåòíûõ ïðåðûâàíèé, ñðàáàòûâàåò ïåðâîå ïîñòóïèâøåå.
À êàê èíà÷å? Êàñàòåëüíî AVR îäíîâðåìåííî ïîñòóïèâøèå çàïðîñû ïðåðûâàíèÿ áóäóò îáðàáîòàíû â ñîîòâåòñòâèè ñ òàáëèöåé äëÿ êàæäîãî êàìíÿ.Äðóãîå äåëî, ÷òî â ÌÊ íåò ïðèîðèòåòíûõ ïðåðûâàíèé, ñðàáàòûâàåò ïåðâîå ïîñòóïèâøåå.
Îáðàáîòàòü-òî îáðàáîòàåò, íî äëÿ âëîæåííîñòè ïðèäåòñÿ îáðàòíî ðàçðåøàòü ïðåðûâàíèÿ â îáðàáîò÷èêå è äîáàâëÿòü ëèøíèé êîä òàì, ãäå â íåì ìåíüøå âñåãî åñòü íåîîáõîäèìîñòü.
Ìàíèïóëèðîâàòü ôëàãàìè, âîçìîæíî ïðîãðàììíûì ñ÷åò÷èêîì è ñòåêîì. Òî åñòü äåëàòü ÷àñòü ðàáîòû çà êîíòðîëëåð ïðåðûâàíèé. Âðîäå áû äðóãèõ ñïîñîáîâ íåò?
Ïðèîðèòåò îïðåäåëÿåòñÿ àäðåñîì âåêòîðà ïðåðûâàíèÿ â òàáëèöå âåêòîðîâ. Ïðåðûâàíèÿ ñ ìåíüøèì àäðåñîì èìåþò áîëåå âûñîêèé ïðèîðèòåò. Âñå ààïàðàòíîãî, èçìåíåíèé íåò. Âîçìîæíî, êàê íàïèñàëè, ñ ïðîãðàììíûõ "òðþêîâ", íî âñå ðàâíî ìåäëåííî: cli()/sei(), ôëàãè. Íåò NVIC (Nested Vectored Interrupt Controller) (ARM) è ïðèîðèòåòíûé âûáîð, íåò ïðåðûâàíèå â ïðåðûâàíèÿ ... Êàê òîëüêî ïðèâûêíåø, ïèñàë óæå: ïóòè íàçàä íåò: AVR - òîëüêî äëÿ ñòàðûõ ïðîåêòîâ è äëÿ ïðîñòûõ èäåé.
Ïðîáëåìó ÿ óæå îïèñûâàë âûøå. Âîçìîæåí êîíôëèêò èñïîëüçîâàíèÿ ðåñóðñîâ ïðîöåññàìè, îñîáåííî èìåþùèìè âûâîä íà äèñïëåé. Ïóòè ðåøåíèÿ òàêæå îáîçíà÷èë, ïðîãðàììíàÿ êîïèÿ äèñïëåÿ èëè ìíîãîïîòî÷íûé áóôåð. Òîæå ñàìîå êàñàåìî ââîäà äàííûõ ñ êëàâèàòóðû, çäåñü ñëåäóåò âûäåëèòü îòäåëüíûé ïðîöåññ ÷òåíèÿ êíîïîê ñ áóôåðîì ðåçóëüòàòà, à îñòàëüíûå ïðîöåññû äîëæíû îáðàùàòüñÿ èñêëþ÷èòåëüíî ê äàííîìó äðàéâåðó (ïî çàïðîñó) èëè áóôåðó (ïî ôàêòó îáðàùåíèÿ). Ñ äðóãèìè óñòðîéñòâàìè òàêàÿ æå ñõåìà ïîñðåäíèêîâ.
Ïîñìîòðåë âíèìàòåëüíåå, åñòü âîçìîæíîñòü âûõîä òàéìåðà (òèêîâ) âûâåñòè íà âíåøíèé ïèí, è ñîåäèíèòü åãî ñ RESET èëè INT0, äàëåå ïåðåîïðåäåëèâ ñîîòâåòñòâóþùèé âåêòîð â òàáëèöå. Òîãäà, òàéìåð áóäåò âûñòàâëÿòü óðîâåíü íà ïèíå, è ôëàã ïåðåïîëíåíèÿ â ðåãèñòðå, íî ôëàã áóäåò îáðàáàòûâàòüñÿ â ïîðÿäêå ïðèîðèòåòà, çà ýòèì è âûçûâàåì àïïàðàòíî áîëåå âûñîêèå ïðèîðèòåòîì ïðåðûâàíèÿ. Åñëè êòî èìååò ìûñëè åù¸, áûëî áû èíòåðåñíî.
Äîáàâëåíî ÷åðåç 23 ìèíóò(û):
 ïðèíöèïå, íåò ðàçíèöû êàêîé ïðèîðèòåò ó òàéìåðà "òèêîâ" çàäà÷, åñëè âñÿ ðàáîòà ñ ïåðèôåðèåé áóäåò ïðîèçâîäèòñÿ ïîñðåäñòâîì äðàéâåðîâ.  ýòîì ñëó÷àå, êîíôëèêòû ìîæíî íèâåëèðîâàòü ââåäÿ ôëàã çàíÿòîñòè óñòðîéñòâà, ïî êîòîðîìó çàïðàøèâàþùèé ïðîöåññ ïðèîñòàíîâèòñÿ (èëè ïðîäîëæèò íàêîïëåíèå äàííûõ äëÿ âûâîäà) è ïðîïóñòèò íåêîòîðîå çíà÷åíèå "òèêîâ" (â çàâèñèìîñòè îò åãî ïðèîðèòåòà è ÷èñëà ïðîöåññîâ) è îáðàòèòñÿ âíîâü ñ çàïðîñîì äîñòóïà ê äðàéâåðó.  ýòîì ñëó÷àå áîëüøèå áóôåðû äàííûõ íå òðåáóþòñÿ, ïëàòîé æå ñíèæåíèå áûñòðîäåéñòâèÿ â âû÷èñëåíèÿõ.
Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü cuneum; 24.09.2025 â 21:17.
Òàì ðå÷ü øëà èìåííî î ïðèìèòèâíîé ñîïðîãðàììíîé ðåàëèçàöèè ìíîãîçàäà÷íîñòè, ïîñêîëüêó âñå çàäà÷è ïèøåò îäèí ïðîãðàììèñò, òî îí ïîìíèò â êàæäîé çàäà÷å î ñóùåñòâîâàíèè äðóãèõ, ïîýòîìó ïåðèîäè÷åñêè âñòàâëÿåò â êîä ôóíêöèþ âûçîâà ïåðåêëþ÷àòåëÿ, îíà â ðåçóëüòàòå ïåðåáåðåò ïî êðóãó âñå îñòàëüíûå çàäà÷è è âåðíåò óïðàâëåíèå âûçûâàþùåé. Âûêëàäûâàë ðåàëèçàöèþ â Àòìåãå 8, íî ïðîëèñòàë âåñü ñïèñîê ñâîèõ âëîæåíèé è ñ õîäó íå íàøåë.  îðèãèíàëå íà èíòåëîâñêîì 8085 çàëîæèë 4 çàäà÷è, à ïîíàäîáèëèñü òîëüêî 3, ðåøèë íå ïåðåäåëûâàòü êîä, à ïîñêîëüêó çàäà÷è êðóòèëèñü â ðåæèìå íè÷åãîíåäåëàíüÿ ñ ÷àñòîòîé îêîëî êèëîãåðöà, â ïóñòóþ çàäà÷ó âïèñàë âûäà÷ó òåëåãðàôîì ñîîáùåíèÿ íà ñâîáîäíûé ïèí ïîðòà, åñëè âäðóã âîçíèêàëè âîïðîñû, ðàáîòàåò ëè óñòðîéñòâî, ìîæíî áûëî ïîäîòêíóòü íàóøíèê è ïîñëóøàòü, ÷òî òàì òâîðèòñÿ. Ïðè ïðîãîíå äàííûõ çàäà÷è íà÷èíàëè åñòü áîëüøå âðåìåíè, òîí òåëåãðàôà ïîäõðèïûâàë, íî îñòàâàëñÿ âïîëíå ÷èòàåìûì![]()
Ïðîáîâàë ñîçäàòü íåêîå ðàñïðåäåëåíèå âðåìåíè ìåæäó ïðîöåññàìè â ïðîãðàììå, íî ïðè èñïîëüçîâàíèè IRQ âîçíèêàëè êîëëèçèè ñ âûâîäîì íà ýêðàí, ïîòîìó è ïèøó, ÷òî íóæíû ïîäïðîãðàììû-äðàéâåðû äëÿ ïåðèôåðèè è îáùåíèå ÷åðåç íèõ. Íàïðèìåð, â ñèíòåçàòîðå íà 5351, èñïîëüçóåòñÿ ÷àñòî "îòëîæåííàÿ çàïèñü" íà LCD, âìåñòî delay è ñ÷åò÷èê "òèêîâ" ñ ðàñïðåäåëåíèåì ìåæäó ïîäïðîãðàììàìè. Äà, âñ¸ ýòî "ñûðî", íî è öåëü áûëà íå â ñîçäàíèè ìíîãîçàäà÷íîñòè.
Ïåðåêëþ÷àòåëü çàäà÷ äîëæåí ó÷èòûâàòü ïðèîðèòåò çàäà÷è (ãðóáî ÷èñëî òèêîâ) è ìèíèìàëüíûé èíòåðâàë îáðàùåíèÿ. Âàø âûâîä òåëåãðàôà íà ïèíå îòíîñèòñÿ ñ îäíîé ñòîðîíû ê "real-time", ñ äðóãîé, åãî ìîæíî îðãàíèçîâàòü èíà÷å íà ÌÊ.  8085, âåñü âûâîä çâóêà ó âàñ áûë ïðîãðàììíûì, îòñþäà è "õðèïû" îò ïåðåêëþ÷åíèÿ çàäà÷. Îäíàêî, åñëè ïîñìîòðåòü äåìî-ñöåíû èëè èãðû, òî òàì ïóñòü è íåÿâíî ïðèñóòñòâóåò íåóïðàâëÿåìàÿ ìíîãîçàäà÷íîñòü, ïåðåêëþ÷àÿ âðåìÿ ïðîöåññîðà íà ðàçíûå ïîäïðîãðàììû. Îñîáåííî ýòî çàìåòíî íà ñòàðûõ 8-áèò ìàøèíàõ. Òåì íå ìåíåå, ïðîãðàììíàÿ ýìóëÿöèÿ çâóêà âåñüìà ðåñóðñî¸ìêèé ïðîöåññ.
Ïðèîðèòåòû ìîæíî ïåðåîïðåäåëèòü, ïðîñòî ýòî íåñòàíäàðòíàÿ çàäà÷à, ïðèäåòñÿ âíèêàòü.
Êóïèë äåøåâûé MPLAB Snap In-Circuit Debugger PG164100.
Ïîëîæèòåëüíûå ýìîöèè îò ïðîãðàììèðîâàíèÿ è îòëàäêè ñ PIC MCU çäåñü.
Óñòðîéñòâî òàêæå ðàáîòàåò è ñ MCU Atmel: ïåðåìû÷êà îò PIC íà AVR.
Ðåøèë ïîïðîáîâàòü. Ïîêà òîëüêî äî êîìïèëÿöèÿ è çàïèñè â ÷èï äîáðàëñÿ, âêëþ÷àÿ ÷òåíèå, èçìåíåíèå ôüþçû.
Ïîïðîáóþ è îòëàä÷èê, íî åñëè ó AVR åñòü óêàçàííûé èíòåðôåéñ (â Atiny13A íåò?), íàäåþñü, è ýòî áóäåò óñïåøíî.
 öåëîì ýòî èíòåðåñíîå óñòðîéñòâî. Îïòèìèçàöèè äî 2 â áåñïëàòíîé ëèöåíçèè êîìïèëÿòîðà XC8 äîñòàòî÷íî.
À òàì â êîìïëåêòå òîëüêî ïëàòà? Èëè øíóðû åñòü? Èëè ñàìîìó äåëàòü?
 êîìïëåêò íå âõîäÿò êàáåëè. Íî èçãîòîâëåíèå ïðîâîäîâ ñ Dupont êëåììàìè - òîæå óäîâîëüñòâèå.
Íî ìîæíî èñïîëüçîâàòü è çàâîäñêèå: 5 êîíòàêòîâ: äëÿ PIC, 6 êîíòàêòîâ: äëÿ AVR. Ëó÷øå 8 êîíòàêòíûé - äëÿ âñå.
---
Îòëàäêà â AVR òîæå çàðàáîòàëà, íåâàæíî ÷òî ïðèøëîñü íåñêîëüêî ðàç îáíîâèòü ïðîøèâêó. Íî âñe æå óäàëîñü: MPLAB X v6.05 è íà win7 64 bit - OK.
È ìîÿ ìå÷òà èç ïðîøëîãî ñáûëàñü: ATtiny13 â ðåæèìå îòëàäêè.
Äëÿ îòëàäêè AVR íóæíî ïåðåêëþ÷àòüñÿ â MPLAB X ìåæäó ðåæèìàìè + âêëþ÷àåì ïåðåìû÷êó íà ïëàòå MPLAB Snap. Îïèñàíî âî ìíîãèõ ìåñòàõ.
Ýòó òåìó ïðîñìàòðèâàþò: 2 (ïîëüçîâàòåëåé: 0 , ãîñòåé: 2)