Пропорциональное управление на МК (Знание=Сила)

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

вот этот код
Спойлер

Код: Выделить всё

	.def	Temp=R16
	.def	Temp1=R17
	.def	Temp2=R18
	.def	Temp3=R19
	.def	Temp4=R20
	.def	Temp5=R21
	.def	Temp6=R22
	.def	Temp7=R23
	.def	Temp8=R24
	.def	Temp9=R25


.dseg		;оперативка

key_buff: .byte 5	; зарезервируем 5 байт в ОЗУ


;******************************************************************************
;******************************************************************************

.cseg
.org 0



rjmp RESET			; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
rjmp Int0x			; External Interrupt Request 0
rjmp Int1x			; External Interrupt Request 1
rjmp TIMER1CAPT		; CAPT Timer/Counter1 Capture Event
rjmp TIMER1COMPA	; COMPA Timer/Counter1 Compare Match A
rjmp TIMER1OVF		; OVF Timer/Counter1 Overflow
rjmp TIMER0OVF		; OVF Timer/Counter0 Overflow
rjmp USART0RX		; RX USART0, Rx Complete
rjmp USART0UDRE		; UDRE USART0 Data Register Empty
rjmp USART0TX		; TX USART0, Tx Complete
rjmp ANALOGCOMP		; COMP Analog Comparator
rjmp PCINT			; Pin Change Interrupt
rjmp TIMER1COMPB	; COMPB Timer/Counter1 Compare Match B
rjmp TIMER0COMPA	; COMPA Timer/Counter0 Compare Match A
rjmp TIMER0COMPB	; COMPB Timer/Counter0 Compare Match B
rjmp USISTART		; START USI Start Condition
rjmp USIOVERFLOW	; OVERFLOW USI Overflow
rjmp EEREADY		; READY EEPROM Ready
rjmp WDTOVERFLOW	; OVERFLOW Watchdog Timer Overflow




;RESET:				; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset//// 
Int0x:				; External Interrupt Request 0
Int1x:				; External Interrupt Request 1
TIMER1CAPT:			; CAPT Timer/Counter1 Capture Event
;TIMER1COMPA:		; COMPA Timer/Counter1 Compare Match A/////////////////////////////////
TIMER1OVF:			; OVF Timer/Counter1 Overflow
TIMER0OVF:			; OVF Timer/Counter0 Overflow
USART0RX:			; RX USART0, Rx Complete
USART0UDRE:			; UDRE USART0 Data Register Empty
USART0TX:			; TX USART0, Tx Complete
ANALOGCOMP:			; COMP Analog Comparator
PCINT:				; Pin Change Interrupt
TIMER1COMPB:		; COMPB Timer/Counter1 Compare Match B----------------------------сюда наверно нужно загрузить число для равнения 
TIMER0COMPA:		; COMPA Timer/Counter0 Compare Match A
TIMER0COMPB:		; COMPB Timer/Counter0 Compare Match B
USISTART:			; START USI Start Condition
USIOVERFLOW:		; OVERFLOW USI Overflow
EEREADY:			; READY EEPROM Ready
WDTOVERFLOW:		; OVERFLOW Watchdog Timer Overflow

reti				; выход из обраьотчика прерываний

;******************************************************************************





;******************************************************************************
;старт
;******************************************************************************

reset:						; включение микроконтроллера

cli							; глобальный запрет на прерывания


ldi Temp,low(RamEnd)		; инициализации стека	
out SPL,Temp				;



ldi Temp,0b00000100			;
out DDRB,Temp				; настроили порт "В" 
							; 00000х00 - "вывод" на передатчик (PB3- 15 ножка)
							; 0000хххх - "ввод" для чтения клавиатуры


ldi Temp,0b00001111			;
out DDRD,Temp 				; настраиваем порт "D" на вывод (0-ввод, 1-вывод)
							; 0000хххх - на сканирование столбцов клавы


ldi Temp,(1<<OCIE1A)		; разрешить прерывание компаратора
out TIMSK,Temp


ldi Temp,(1<<COM1A0)		;переключать ножку "OC1A" по совпадению (PB3- 15 ножка)
out TCCR1A,Temp				;*1


ldi Temp,(1<<wgm12)|(1<<cs10)	;подключили режим "CTC" (вместе с *1) и установили тактовый сигнал = CK (1:1)
out TCCR1B,Temp

							; инициализация компаратора
ldi Temp,0xC				; 3кГц,  1/3000=0,00033сек=330мкс,   330/2=165мкс длительность импульса или паузы(время-Т)
out OCR1AH,Temp				; 0,05мкс*65535=3276,75    3276,75>165 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xE4				; 165мкс/0,05мкс=3300 тиков таймера  3300=CE4(hex)   
out OCR1AL,Temp				;


ldi Temp,0					;обнуление таймера при включении
out TCNT1H,Temp
out TCNT1L,Temp


sei							;глобальное разрешение прерываний


TIMER1COMPA:
;......
reti
пятая студия проглотила :)
не зная броду не лезь к вольтмоду
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

а если, я делаю так
Спойлер

Код: Выделить всё


rjmp RESET		; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset

.org INT0x		; External Interrupt Request 0
reti
.org INT1x		; External Interrupt Request 1
reti
.org TIMER1CAPT		; CAPT Timer/Counter1 Capture Event
reti

rjmp TIMER1COMPA	; COMPA Timer/Counter1 Compare Match A

.org TIMER1OVF		; OVF Timer/Counter1 Overflow
reti
.org TIMER0OVF		; OVF Timer/Counter0 Overflow
reti
.org USART0RX		; RX USART0, Rx Complete
reti
.org USART0UDRE		; UDRE USART0 Data Register Empty
reti
.org USART0TX		; TX USART0, Tx Complete
reti
.org ANALOGCOMP		; COMP Analog Comparator
reti
.org PCINT		; Pin Change Interrupt
reti
.org TIMER1COMPB	; COMPB Timer/Counter1 Compare Match B
reti
.org TIMER0COMPA	; COMPA Timer/Counter0 Compare Match A
reti
.org TIMER0COMPB	; COMPB Timer/Counter0 Compare Match B
reti
.org USISTART		; START USI Start Condition
reti
.org USIOVERFLOW	; OVERFLOW USI Overflow
reti
.org EEREADY		; READY EEPROM Ready
reti
.org WDTOVERFLOW	; OVERFLOW Watchdog Timer Overflow
reti
то ругается!!!
не зная броду не лезь к вольтмоду
Реклама
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

а на что ругается то ?
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

:sleep:
Error 1 Use of undefined or forward referenced symbol 'INT0x' in .org C:\AVRSTUDIO\AVRAssembler1\AVRAssembler1\AVRAssembler1.asm 37 0 AVRAssembler1
Error 2 Overlap in .cseg: addr=0x0 conflicts with 0x0:0x1 C:\AVRSTUDIO\AVRAssembler1\AVRAssembler1\AVRAssembler1.asm 38 0 AVRAssembler1
Error 3 Use of undefined or forward referenced symbol 'INT1x' in .org C:\AVRSTUDIO\AVRAssembler1\AVRAssembler1\AVRAssembler1.asm 39 0 AVRAssembler1
Error 4 Overlap in .cseg: addr=0x0 conflicts with 0x0:0x1 C:\AVRSTUDIO\AVRAssembler1\AVRAssembler1\AVRAssembler1.asm 40 0 AVRAssembler1
и тд
не зная броду не лезь к вольтмоду
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ibiza11 »

В файле объявлений нет определений для адресов INT0x и INT1x.
Найдите там таблицу векторов прерываний, в ней найдите определения для адресов векторов прерываний INT0 и INT1 замените в своей программе.
Ставим плюсы: )
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

http://www.promelec.ru/pdf/ATTINY2313.pdf страницы 43 и 44
цитта со страницы 43:
Спойлер
1 0x0000 RESET External Pin, Power-on Reset, Brown-out Reset,
and Watchdog Reset
2 0x0001 INT0 External Interrupt Request 0
3 0x0002 INT1 External Interrupt Request 1
4 0x0003 TIMER1 CAPT Timer/Counter1 Capture Event
5 0x0004 TIMER1 COMPA Timer/Counter1 Compare Match A
6 0x0005 TIMER1 OVF Timer/Counter1 Overflow
7 0x0006 TIMER0 OVF Timer/Counter0 Overflow
8 0x0007 USART0, RX USART0, Rx Complete
9 0x0008 USART0, UDRE USART0 Data Register Empty
10 0x0009 USART0, TX USART0, Tx Complete
11 0x000A ANALOG COMP Analog Comparator
12 0x000B PCINT Pin Change Interrupt
13 0x000C TIMER1 COMPB Timer/Counter1 Compare Match B
14 0x000D TIMER0 COMPA Timer/Counter0 Compare Match A
15 0x000E TIMER0 COMPB Timer/Counter0 Compare Match B
16 0x000F USI START USI Start Condition
17 0x0010 USI OVERFLOW USI Overflow
18 0x0011 EE READY EEPROM Ready
19 0x0012 WDT OVERFLOW Watchdog Timer Overflow
цитата со страницы 44:
Спойлер
0x0000 rjmp RESET ; Reset Handler
0x0001 rjmp INT0 ; External Interrupt0 Handler
0x0002 rjmp INT1 ; External Interrupt1 Handler
0x0003 rjmp TIM1_CAPT ; Timer1 Capture Handler
0x0004 rjmp TIM1_COMPA ; Timer1 CompareA Handler
0x0005 rjmp TIM1_OVF ; Timer1 Overflow Handler
0x0006 rjmp TIM0_OVF ; Timer0 Overflow Handler
0x0007 rjmp USART0_RXC ; USART0 RX Complete Handler
0x0008 rjmp USART0_DRE ; USART0,UDR Empty Handler
0x0009 rjmp USART0_TXC ; USART0 TX Complete Handler
0x000A rjmp ANA_COMP ; Analog Comparator Handler
0x000B rjmp PCINT ; Pin Change Interrupt
0x000C rjmp TIMER1_COMPB ; Timer1 Compare B Handler
0x000D rjmp TIMER0_COMPA ; Timer0 Compare A Handler
0x000E rjmp TIMER0_COMPB ; Timer0 Compare B Handler
0x000F rjmp USI_START ; USI Start Handler
0x0010 rjmp USI_OVERFLOW ; USI Overflow Handler
0x0011 rjmp EE_READY ; EEPROM Ready Handler
0x0012 rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
мой код:
Спойлер

Код: Выделить всё

/*
 * Proba2.asm
 *
 *  Created: 28.08.2012 12:11:36
 *   Author: UWRTEY
 */ 

 	.def	Temp=R16
	.def	Temp1=R17
	.def	Temp2=R18
	.def	Temp3=R19
	.def	Temp4=R20
	.def	Temp5=R21
	.def	Temp6=R22
	.def	Temp7=R23
	.def	Temp8=R24
	.def	Temp9=R25


.dseg				;оперативка

key_buff: .byte 5	; зарезервируем 5 байт в ОЗУ


;******************************************************************************
;******************************************************************************

.cseg
.org 0



rjmp RESET			; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset

.org INT0			; External Interrupt Request 0
reti	
.org INT1			; External Interrupt Request 1
reti
.org TIM1_CAPT		; CAPT Timer/Counter1 Capture Event
reti

rjmp TIM1_COMPA		; COMPA Timer/Counter1 Compare Match A

.org TIM1_OVF		; OVF Timer/Counter1 Overflow
reti
.org TIM0_OVF		; OVF Timer/Counter0 Overflow
reti
.org USART0_RXC		; RX USART0, Rx Complete
reti
.org USART0_DRE		; UDRE USART0 Data Register Empty
reti
.org USART0_TXC		; TX USART0, Tx Complete
reti
.org ANA_COMP		; COMP Analog Comparator
reti
.org PCINT			; Pin Change Interrupt
reti
.org TIMER1_COMPB	; COMPB Timer/Counter1 Compare Match B
reti
.org TIMER0_COMPA	; COMPA Timer/Counter0 Compare Match A
reti
.org TIMER0_COMPB	; COMPB Timer/Counter0 Compare Match B
reti
.org USI_START		; START USI Start Condition
reti
.org USI_OVERFLOW	; OVERFLOW USI Overflow
reti
.org EE_READY		; READY EEPROM Ready
reti
.org WDT_OVERFLOW	; OVERFLOW Watchdog Timer Overflow
reti


;******************************************************************************

;******************************************************************************
;старт
;******************************************************************************

reset:							; включение микроконтроллера

cli								; глобальный запрет на прерывания


ldi Temp,low(RamEnd)			; инициализации стека	
out SPL,Temp					;



ldi Temp,0b00000100				;
out DDRB,Temp					; настроили порт "В" 
								; 00000х00 - "вывод" на передатчик (PB3- 15 ножка)
								; 0000хххх - "ввод" для чтения клавиатуры


ldi Temp,0b00001111				;
out DDRD,Temp 					; настраиваем порт "D" на вывод (0-ввод, 1-вывод)
								; 0000хххх - на сканирование столбцов клавы


ldi Temp,(1<<OCIE1A)			; разрешить прерывание компаратора
out TIMSK,Temp


ldi Temp,(1<<COM1A0)			;переключать ножку "OC1A" по совпадению (PB3- 15 ножка)
out TCCR1A,Temp					;*1


ldi Temp,(1<<wgm12)|(1<<cs10)	;подключили режим "CTC" (вместе с *1) и установили тактовый сигнал = CK (1:1)
out TCCR1B,Temp

								; инициализация компаратора
ldi Temp,0xC					; 3кГц,  1/3000=0,00033сек=330мкс,   330/2=165мкс длительность импульса или паузы(время-Т)
out OCR1AH,Temp					; 0,05мкс*65535=3276,75    3276,75>165 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xE4					; 165мкс/0,05мкс=3300 тиков таймера  3300=CE4(hex)   
out OCR1AL,Temp					;


ldi Temp,0						;обнуление таймера при включении
out TCNT1H,Temp
out TCNT1L,Temp


sei								;глобальное разрешение прерываний
        


что не так ??? :dont_know:

ЗЫ: какую титньку выбирать в Студии 2313 или2313А ???
не зная броду не лезь к вольтмоду
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

я кажется понял, как это можно организовать!!! :))) (включил мозг и погуглил - http://asmhelpavr.narod.ru/#ORG%20-%20S ... m%20origin)
а то с .inc файлом что то не понятно... :dont_know:
Спойлер

Код: Выделить всё

/*
 * Proba2.asm
 *
 *  Created: 28.08.2012 12:11:36
 *   Author: UWRTEY
 */ 

 	.def	Temp=R16
	.def	Temp1=R17
	.def	Temp2=R18
	.def	Temp3=R19
	.def	Temp4=R20
	.def	Temp5=R21
	.def	Temp6=R22
	.def	Temp7=R23
	.def	Temp8=R24
	.def	Temp9=R25


.dseg				;оперативка

key_buff: .byte 5	; зарезервируем 5 байт в ОЗУ


;******************************************************************************
;******************************************************************************

.cseg
.org 0


.org 0x0000						; СТАРТ
rjmp RESET						; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset

.org 0x0001; INT0				; External Interrupt Request 0
reti	
.org 0x0002; INT1				; External Interrupt Request 1
reti
.org 0x0003; TIM1_CAPT			; CAPT Timer/Counter1 Capture Event
reti

.org 0x0004						; обработка нашего прерывания
rjmp TIM1_COMPA					; COMPA Timer/Counter1 Compare Match A

.org 0x0005; TIM1_OVF			; OVF Timer/Counter1 Overflow
reti
.org 0x0006; TIM0_OVF			; OVF Timer/Counter0 Overflow
reti
.org 0x0007; USART0_RXC			; RX USART0, Rx Complete
reti
.org 0x0008; USART0_DRE			; UDRE USART0 Data Register Empty
reti
.org 0x0009; USART0_TXC			; TX USART0, Tx Complete
reti
.org 0x000A; ANA_COMP			; COMP Analog Comparator
reti
.org 0x000B; PCINT				; Pin Change Interrupt
reti
.org 0x000C; TIMER1_COMPB		; COMPB Timer/Counter1 Compare Match B
reti
.org 0x000D; TIMER0_COMPA		; COMPA Timer/Counter0 Compare Match A
reti
.org 0x000E; TIMER0_COMPB		; COMPB Timer/Counter0 Compare Match B
reti
.org 0x000F; USI_START			; START USI Start Condition
reti
.org 0x0010; USI_OVERFLOW		; OVERFLOW USI Overflow
reti
.org 0x0011; EE_READY			; READY EEPROM Ready
reti
.org 0x0012; WDT_OVERFLOWaddr	; OVERFLOW Watchdog Timer Overflow
reti


;******************************************************************************

;******************************************************************************
;старт
;******************************************************************************

reset:							; включение микроконтроллера

cli								; глобальный запрет на прерывания


ldi Temp,low(RamEnd)			; инициализации стека	
out SPL,Temp					;



ldi Temp,0b00000100				;
out DDRB,Temp					; настроили порт "В" 
								; 00000х00 - "вывод" на передатчик (PB3- 15 ножка)
								; 0000хххх - "ввод" для чтения клавиатуры


ldi Temp,0b00001111				;
out DDRD,Temp 					; настраиваем порт "D" на вывод (0-ввод, 1-вывод)
								; 0000хххх - на сканирование столбцов клавы


ldi Temp,(1<<OCIE1A)			; разрешить прерывание компаратора
out TIMSK,Temp


ldi Temp,(1<<COM1A0)			;переключать ножку "OC1A" по совпадению (PB3- 15 ножка)
out TCCR1A,Temp					;*1


ldi Temp,(1<<wgm12)|(1<<cs10)	;подключили режим "CTC" (вместе с *1) и установили тактовый сигнал = CK (1:1)
out TCCR1B,Temp

								; инициализация компаратора
ldi Temp,0xC					; 3кГц,  1/3000=0,00033сек=330мкс,   330/2=165мкс длительность импульса или паузы(время-Т)
out OCR1AH,Temp					; 0,05мкс*65535=3276,75    3276,75>165 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xE4					; 165мкс/0,05мкс=3300 тиков таймера  3300=CE4(hex)   
out OCR1AL,Temp					;


ldi Temp,0						;обнуление таймера при включении
out TCNT1H,Temp
out TCNT1L,Temp


sei								;глобальное разрешение прерываний
не зная броду не лезь к вольтмоду
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение BVS »

открываем файл "tn2313def.inc" ищите в папке \Appnotes где у вас студия установлена
в конце смотрим
Спойлер

Код: Выделить всё

; ***** INTERRUPT VECTORS ************************************************
.equ	INT0addr	= 0x0001	; External Interrupt Request 0
.equ	INT1addr	= 0x0002	; External Interrupt Request 1
.equ	ICP1addr	= 0x0003	; Timer/Counter1 Capture Event
.equ	OC1Aaddr	= 0x0004	; Timer/Counter1 Compare Match A
.equ	OC1addr	= 0x0004	; For compatibility
.equ	OVF1addr	= 0x0005	; Timer/Counter1 Overflow
.equ	OVF0addr	= 0x0006	; Timer/Counter0 Overflow
.equ	URXCaddr	= 0x0007	; USART, Rx Complete
.equ	URXC0addr	= 0x0007	; For compatibility
.equ	UDREaddr	= 0x0008	; USART Data Register Empty
.equ	UDRE0addr	= 0x0008	; For compatibility
.equ	UTXCaddr	= 0x0009	; USART, Tx Complete
.equ	UTXC0addr	= 0x0009	; For compatibility
.equ	ACIaddr	= 0x000a	; Analog Comparator
.equ	PCIaddr	= 0x000b	; 
.equ	OC1Baddr	= 0x000c	; 
.equ	OC0Aaddr	= 0x000d	; 
.equ	OC0Baddr	= 0x000e	; 
.equ	USI_STARTaddr	= 0x000f	; USI Start Condition
.equ	USI_OVFaddr	= 0x0010	; USI Overflow
.equ	ERDYaddr	= 0x0011	; 
.equ	WDTaddr	= 0x0012	; Watchdog Timer Overflow
а оформляют обычно так:

Код: Выделить всё

.org 0

rjmp RESET			; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
		.org	INT0addr
rjmp EXT_INT0			; External Interrupt Request 0
		.org	INT1addr
reti; EXT_INT1			; External Interrupt Request 1
и так долее...
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

:dont_know: :shock: нет у меня ни папки "Appnotes" ни файла "tn2313def.inc" :(
не зная броду не лезь к вольтмоду
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение BVS »

uwrtey писал(а)::dont_know: :shock: нет у меня ни папки "Appnotes" ни файла "tn2313def.inc" :(
не знаю как в 5й но в 4.19 она у меня: C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes
ищите без него никак
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

uwrtey писал(а)::dont_know: :shock: нет у меня ни папки "Appnotes" ни файла "tn2313def.inc" :(
поиск файла в тотал командоре Alt+F7
указываем какой файл искать...
и радуемся :-)
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение BVS »

и еще INT0addr или на пример OC1Aaddr во всех AVR одинаково называется
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

нашел!!!! :))
находится по адресу C:\Program Files\Atmel\AVR Studio 5.0\avrassembler\include
целых два
какую титньку выбирать в Студии 2313 или 2313А ???
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

uwrtey писал(а):нашел!!!! :))
находится по адресу C:\Program Files\Atmel\AVR Studio 5.0\avrassembler\include
целых два
какую титньку выбирать в Студии 2313 или 2313А ???
а у тебя какая есть ? ту и выбирай..

помоему с 2313А выбирать нужно...
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

ВитГо, что дальше ?
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

у тебя какая нить отладочная плата есть ? нужно собрать по схеме..
клавиатуру можно упрощенную сделать, пару кнопок в разных рядах...

сейчас нужно будет переходить к практике - и проверять программу на железе...
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

отладочной платы нету!
я могу, за пару-тройку вечеров, развести нужную плату и все припаять...
но ведь у меня еще нет готовой программы...
глянул в .inc файл и увидел

Код: Выделить всё

.equ	XRAMEND		= 0x0000
а у меня по этому адресу RESET сделан...
наверно переделать нужно ?
не зная броду не лезь к вольтмоду
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение BVS »

и чо, по этому адресу регистр R0 находится, не путайте память данных и память программ
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

Спойлер

Код: Выделить всё

						; СТАРТ
rjmp RESET				; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset

.org	INT0addr;	= 0x0001	; External Interrupt Request 0
reti
.org	INT1addr;	= 0x0002	; External Interrupt Request 1
reti
.org	ICP1addr;	= 0x0003	; Timer/Counter1 Capture Event
reti

.org	OC1Aaddr;	= 0x0004	; Timer/Counter1 Compare Match A
rjmp TIM1_COMPA

.org	OC1addr;	= 0x0004	; For compatibility
reti
.org	OVF1addr;	= 0x0005	; Timer/Counter1 Overflow
reti
.org	OVF0addr;	= 0x0006	; Timer/Counter0 Overflow
reti
.org	URXCaddr;	= 0x0007	; USART, Rx Complete
reti
.org	URXC0addr;	= 0x0007	; For compatibility
reti
.org	UDREaddr;	= 0x0008	; USART Data Register Empty
reti
.org	UDRE0addr;	= 0x0008	; For compatibility
reti
.org	UTXCaddr;	= 0x0009	; USART, Tx Complete
reti
.org	UTXC0addr;	= 0x0009	; For compatibility
reti
.org	ACIaddr;	= 0x000a	; Analog Comparator
reti
.org	PCIBaddr;	= 0x000b	; Pin Change Interrupt Request B
reti
.org	PCIaddr;	= 0x000b	; For compatibility
reti
.org	OC1Baddr;	= 0x000c	;
reti
.org	OC0Aaddr;	= 0x000d	;
reti
.org	OC0Baddr;	= 0x000e	; 
reti
.org	USI_STARTaddr;	= 0x000f	; USI Start Condition
reti
.org	USI_OVFaddr;	= 0x0010	; USI Overflow
reti
.org	ERDYaddr;	= 0x0011	; 
reti
.org	WDTaddr;	= 0x0012	; Watchdog Timer Overflow
reti
.org	PCIAaddr;	= 0x0013	; Pin Change Interrupt Request A
reti
.org	PCIDaddr;	= 0x0014	; Pin Change Interrupt Request D
reti
ошибка Error 1 Overlap in .cseg: addr=0x4 conflicts with 0x4:0x5 C:\AVRSTUDIO\proba3\proba3\proba3.asm 48 0 proba3

меня сразу удивило, то что в .inc файле по одному адресу стоят по несколько команд
Спойлер
.equ INT0addr = 0x0001 ; External Interrupt Request 0
.equ INT1addr = 0x0002 ; External Interrupt Request 1
.equ ICP1addr = 0x0003 ; Timer/Counter1 Capture Event
.equ OC1Aaddr = 0x0004 ; Timer/Counter1 Compare Match A
.equ OC1addr = 0x0004 ; For compatibility
.equ OVF1addr = 0x0005 ; Timer/Counter1 Overflow
.equ OVF0addr = 0x0006 ; Timer/Counter0 Overflow
.equ URXCaddr = 0x0007 ; USART, Rx Complete
.equ URXC0addr = 0x0007 ; For compatibility
.equ UDREaddr = 0x0008 ; USART Data Register Empty
.equ UDRE0addr = 0x0008 ; For compatibility
.equ UTXCaddr = 0x0009 ; USART, Tx Complete
.equ UTXC0addr = 0x0009 ; For compatibility
.equ ACIaddr = 0x000a ; Analog Comparator
.equ PCIBaddr = 0x000b ; Pin Change Interrupt Request B
.equ PCIaddr = 0x000b ; For compatibility
.equ OC1Baddr = 0x000c ;
.equ OC0Aaddr = 0x000d ;
.equ OC0Baddr = 0x000e ;
.equ USI_STARTaddr = 0x000f ; USI Start Condition
.equ USI_OVFaddr = 0x0010 ; USI Overflow
.equ ERDYaddr = 0x0011 ;
.equ WDTaddr = 0x0012 ; Watchdog Timer Overflow
.equ PCIAaddr = 0x0013 ; Pin Change Interrupt Request A
.equ PCIDaddr = 0x0014 ; Pin Change Interrupt Request D
как быть ?

сделал вот так (удалил строки "для совместимости" (For compatibility)) :)
Спойлер

Код: Выделить всё

/*
 * proba3.asm
 *
 *  Created: 29.08.2012 1:50:33
 *   Author: UWRTEY
 */ 


 	.def	Temp=R16
	.def	Temp1=R17
	.def	Temp2=R18
	.def	Temp3=R19
	.def	Temp4=R20
	.def	Temp5=R21
	.def	Temp6=R22
	.def	Temp7=R23
	.def	Temp8=R24
	.def	Temp9=R25


.dseg			;оперативка

key_buff: .byte 5	; зарезервируем 5 байт в ОЗУ


;******************************************************************************
;******************************************************************************

.cseg
.org 0


					; СТАРТ
rjmp RESET				; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset

.org	INT0addr;	= 0x0001	; External Interrupt Request 0
reti
.org	INT1addr;	= 0x0002	; External Interrupt Request 1
reti
.org	ICP1addr;	= 0x0003	; Timer/Counter1 Capture Event
reti

.org	OC1Aaddr;	= 0x0004	; Timer/Counter1 Compare Match A
rjmp TIM1_COMPA


.org	OVF1addr;	= 0x0005	; Timer/Counter1 Overflow
reti
.org	OVF0addr;	= 0x0006	; Timer/Counter0 Overflow
reti
.org	URXCaddr;	= 0x0007	; USART, Rx Complete
reti

.org	UDREaddr;	= 0x0008	; USART Data Register Empty
reti

.org	UTXCaddr;	= 0x0009	; USART, Tx Complete
reti

.org	ACIaddr;	= 0x000a	; Analog Comparator
reti
.org	PCIBaddr;	= 0x000b	; Pin Change Interrupt Request B
reti

.org	OC1Baddr;	= 0x000c	;
reti
.org	OC0Aaddr;	= 0x000d	;
reti
.org	OC0Baddr;	= 0x000e	; 
reti
.org	USI_STARTaddr;	= 0x000f	; USI Start Condition
reti
.org	USI_OVFaddr;	= 0x0010	; USI Overflow
reti
.org	ERDYaddr;	= 0x0011	; 
reti
.org	WDTaddr;	= 0x0012	; Watchdog Timer Overflow
reti
.org	PCIAaddr;	= 0x0013	; Pin Change Interrupt Request A
reti
.org	PCIDaddr;	= 0x0014	; Pin Change Interrupt Request D
reti
не зная броду не лезь к вольтмоду
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение BVS »

OC1Aaddr это не команда, а константа равная адресу команды которую вы напишите после директивы:

Код: Выделить всё

.org   OC1Aaddr
и естественно он будет ругатся если вы пытаетесь записать разные команды по одному адресу
не забивайте себе голову, но то что разобрались это хорошо, в ATtiny2313 можно таблицу прерываний и вот так без адресов, просто заполнив ее командами.
Спойлер

Код: Выделить всё

;=============
.org 0
rjmp RESET				;External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
reti;rjmp EXT_INT0			;External Interrupt Request 0
reti;rjmp EXT_INT1		;External Interrupt Request 1
reti;rjmp TIMER1_CAPT	;Timer/Counter1 Capture Event
reti;rjmp TIMER1_COMPA		;Timer/Counter1 Compare Match A
reti;rjmp TIMER1_OVF	;Timer/Counter1 Overflow
rjmp TIMER0_OVF	;Timer/Counter0 Overflow
reti;rjmp USART_RXC		;USART, Rx Complete
reti;rjmp USART_UDRE	;USART Data Register Empty
reti;rjmp USART_TXC		;USART, Tx Complete
reti;rjmp ANA_COMP		;Analog Comparator
reti;rjmp PC_INT
reti;rjmp TIMER1_COMPB	;Timer/Counter1 Compare Match B 
reti;rjmp TIMER0_COMPA
reti;rjmp Timer0_compB
reti;rjmp USI_START
reti;rjmp USI_Owerflow
reti;rjmp EE_RDY		;EEPROM Ready
reti;rjmp WDT_Owerflow
;=============
адреса вам пригодятся в МК где больше 8к флеша там таблица в две команды на вектор и можно использовать как rjmp так и jmp, можно весь обработчик туда вставить на пример:

Код: Выделить всё

sbi portx,bitx
reti
Ответить

Вернуться в «Периферия»