реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Нужна помощь в прошивании AVR
Valek
сообщение Apr 27 2013, 02:53
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 19-06-07
Из: Челябинск
Пользователь №: 28 542



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?

Сообщение отредактировал Valek - Apr 27 2013, 02:55
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Apr 27 2013, 15:32
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(Valek @ Apr 27 2013, 05:53) *
вот такая ощибка:
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 который вы включили в свой проект
Go to the top of the page
 
+Quote Post
Valek
сообщение May 2 2013, 00:44
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 19-06-07
Из: Челябинск
Пользователь №: 28 542



Цитата(MaxiMuz @ Apr 27 2013, 18:32) *
замените PCINT0 на любое др. имя к примеру PCINT0_vect , т.к. имя PCINT0 описывается в tn13Adef.inc который вы включили в свой проект

Как микроконтроллер поймет что нужно перейти в это место при совершении прерывания?
А я думал что метка в программе должна называться как прерывание, и когда совершается прерывание то программа переходит в это место.
Go to the top of the page
 
+Quote Post
Andron77
сообщение May 2 2013, 07:28
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Таблица векторов прерываний на адреса памяти программ 0h,2h,4h,6h и так далее, аппаратно прошита в МК, и уже с этих адресов командой rjmp, осуществляется переход на любую пользовательскую подпрограмму обработки прерывания, и без разницы как она называется, только выход из нее происходит по reti, а не по ret.

Сообщение отредактировал Andron77 - May 2 2013, 07:29
Go to the top of the page
 
+Quote Post
Herz
сообщение May 2 2013, 08:39
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Valek @ Apr 27 2013, 05:53) *
Пишет что PCINT0 где-то уже ипользовалось! Что за чушь, мы же его впервые в программе написали.

Да... а разве нет резници между EXT_INT0 и INT0?

Valek, а чему Вы удивляетесь? Пока Вы будете делать по две ошибки в слове, программы Ваши и работать будут соответственно.
Вы же и на ассемблере пишете с той же внимательностью.
Go to the top of the page
 
+Quote Post
Valek
сообщение May 4 2013, 04:33
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 19-06-07
Из: Челябинск
Пользователь №: 28 542



Цитата(Herz @ May 2 2013, 11:39) *
Valek, а чему Вы удивляетесь? Пока Вы будете делать по две ошибки в слове, программы Ваши и работать будут соответственно.
Вы же и на ассемблере пишете с той же внимательностью.

blush.gif прям как диктант пишем, будем повнимательней.
А на ассемблере где ошибся?

Сообщение отредактировал Valek - May 4 2013, 04:45
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение May 6 2013, 11:31
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(Valek @ May 2 2013, 03:44) *
А я думал что метка в программе должна называться как прерывание, и когда совершается прерывание то программа переходит в это место.

коду программы всеравно как обзывается метка
Последний кусок , где :
Код
; Пробуждение из спящего режима
  INT0:
нужно убрать
Go to the top of the page
 
+Quote Post
Valek
сообщение May 8 2013, 02:52
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 19-06-07
Из: Челябинск
Пользователь №: 28 542



Ну вот, совсем по-простому. Эта программа работает как часы. Но я хочу установить спящий режим. Какие регистры мне необходимо настроить? 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
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 11:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01424 секунд с 7
ELECTRONIX ©2004-2016