Valek 0 27 апреля, 2013 Опубликовано 27 апреля, 2013 (изменено) · Жалоба AVR Studio 4.18 build 716 при компиляции выдает ошибку. Я помню что всамом начале тоже пытался задействовать это прерывание и у меня была такая же ошибка. .device ATtiny13A .nolist .include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn13Adef.inc" .list .def temp = r16 .def Delay1 = r17 .def Delay2 = r18 .def Delay3 = r19 rjmp RESET; Reset Handler rjmp EXT_INT0; IRQ0 Handler rjmp PCINT0; PCINT0 Handler reti;rjmp TIM0_OVF; Timer0 Overflow Handler reti;rjmp EE_RDY; EEPROM Ready Handler reti;rjmp ANA_COMP; Analog Comparator Handler reti;rjmp TIM0_COMPA; Timer0 CompareA Handler reti;rjmp TIM0_COMPB; Timer0 CompareB Handler reti;rjmp WATCHDOG; Watchdog Interrupt Handler reti;rjmp ADC; ADC Conversion Handler вот такая ощибка: D:\AVR Project\fonar\fonar.asm(131): error: Illegal attempt to re-use 'PCINT0' as label Пишет что PCINT0 где-то уже ипользовалось! Что за чушь, мы же его впервые в программе написали. Да... а разве нет резници между EXT_INT0 и INT0? Изменено 27 апреля, 2013 пользователем Valek Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaxiMuz 0 27 апреля, 2013 Опубликовано 27 апреля, 2013 · Жалоба вот такая ощибка: D:\AVR Project\fonar\fonar.asm(131): error: Illegal attempt to re-use 'PCINT0' as label Пишет что PCINT0 где-то уже ипользовалось! Что за чушь, мы же его впервые в программе написали. Да... а разве нет резници между EXT_INT0 и INT0? замените PCINT0 на любое др. имя к примеру PCINT0_vect , т.к. имя PCINT0 описывается в tn13Adef.inc который вы включили в свой проект Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Valek 0 2 мая, 2013 Опубликовано 2 мая, 2013 · Жалоба замените PCINT0 на любое др. имя к примеру PCINT0_vect , т.к. имя PCINT0 описывается в tn13Adef.inc который вы включили в свой проект Как микроконтроллер поймет что нужно перейти в это место при совершении прерывания? А я думал что метка в программе должна называться как прерывание, и когда совершается прерывание то программа переходит в это место. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 2 мая, 2013 Опубликовано 2 мая, 2013 (изменено) · Жалоба Таблица векторов прерываний на адреса памяти программ 0h,2h,4h,6h и так далее, аппаратно прошита в МК, и уже с этих адресов командой rjmp, осуществляется переход на любую пользовательскую подпрограмму обработки прерывания, и без разницы как она называется, только выход из нее происходит по reti, а не по ret. Изменено 2 мая, 2013 пользователем Andron77 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 6 2 мая, 2013 Опубликовано 2 мая, 2013 · Жалоба Пишет что PCINT0 где-то уже ипользовалось! Что за чушь, мы же его впервые в программе написали. Да... а разве нет резници между EXT_INT0 и INT0? Valek, а чему Вы удивляетесь? Пока Вы будете делать по две ошибки в слове, программы Ваши и работать будут соответственно. Вы же и на ассемблере пишете с той же внимательностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Valek 0 4 мая, 2013 Опубликовано 4 мая, 2013 (изменено) · Жалоба Valek, а чему Вы удивляетесь? Пока Вы будете делать по две ошибки в слове, программы Ваши и работать будут соответственно. Вы же и на ассемблере пишете с той же внимательностью. прям как диктант пишем, будем повнимательней. А на ассемблере где ошибся? Изменено 4 мая, 2013 пользователем Valek Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaxiMuz 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба А я думал что метка в программе должна называться как прерывание, и когда совершается прерывание то программа переходит в это место. коду программы всеравно как обзывается метка Последний кусок , где : ; Пробуждение из спящего режима INT0: нужно убрать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Valek 0 8 мая, 2013 Опубликовано 8 мая, 2013 · Жалоба Ну вот, совсем по-простому. Эта программа работает как часы. Но я хочу установить спящий режим. Какие регистры мне необходимо настроить? MCUCR и GIMSK? Без прерываний не обойтись? ; Программа для фонаря с магнитным управлением ; частота 1 МГц от внутреннего генератора .device ATtiny13A .nolist .include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn13Adef.inc" .list .def temp = r16 .def delay1= r17 .def delay2= r18 .def delay3= r19 rjmp Init Init: ;Назначаем входы и выходы портов (0-вход, 1-выход) ldi temp,0b111101 out DDRB ,temp ;Включаем подтяжку на входах (1-есть рез., 0- нет рез.) ;и задаем начальное состояние выходов ldi temp,0b000010 out PORTB ,temp Start: rcall knopka on: sbi portB, 4;включаем светодиод ;задержка 7 милисекунд ldi Delay1, 0x78 ldi Delay2, 0x05 ldi Delay3, 0x00 rcall Delay cbi PortB, 4 ;тушим светодиод ;задержка 1 милисекунда ldi Delay1, 0xC8 ldi Delay2, 0x00 ldi Delay3, 0x00 rcall Delay sbis PinB, 1 ;проверяем нажатие кнопки rjmp knopka rjmp on //Подпрограмма "кнопка" knopka: sbic PinB, 1;ждем нажатия кнопки rjmp knopka ;задержка от дребезга контактов 5mc ldi Delay1, 0x78 ldi Delay2, 0x05 ldi Delay3, 0x00 rcall Delay puch: sbis PinB, 1;ждем отпускания кнопки rjmp puch ret Delay: subi Delay1,1 sbci Delay2,0 sbci Delay3,0 brcc Delay ret Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться