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

 
 
> WinAVR: Cовмещение Си и ассемблера
MaxiMuz
сообщение Feb 9 2012, 11:23
Сообщение #1


Местный
***

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



Здраствуйте !
Использовал пример из статьи: http://we.easyelectronics.ru/AVR/avr-gcc-s...om-proekte.html
"AVR-GCC: Совмещение C и ассемблера в одном проекте ". Начал править makefile, которым я обычно пользуюсь, но при указании Assembler source files... получил error: Oops, ASRC not found !
Не понимаю что не так делаю ! В чем может быть проблема ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MaxiMuz
сообщение Feb 22 2012, 07:50
Сообщение #2


Местный
***

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



Цитата(Сергей Борщ @ Feb 22 2012, 02:53) *
Я никогда не использовал регистровые переменные, но часто читал о магическом ключике компилятора -ffixed-reg.

Проблема не в Си коде , а данный ключик я так понимаю относится именно к Си.
Воодщемполностью заголовочный файл:
Код
#ifdef __ASSEMBLER__
#  define sreg_save r2
#  define LedTne r4
#  define GenCnt r18
#  define Cnt_Dl_low  r16
#  define Cnt_Dl_hi  r17
#else  /* !ASSEMBLER */
register uint8_t sreg_save asm("r2");
register uint8_t LedTne asm("r4");
register uint8_t GenCnt asm("r18");
volatile register uint16_t Cnt_Dl asm("r16");
#endif /* ASSEMBLER */

Часть листинга с кодами включающий ассемблерную вставку:
Код
000000a2 <__vector_6>:
;_____________________________________________________
;_______ Прерывание по сопадению каждые 64 такта
.global TIM0_COMPA_vect
TIM0_COMPA_vect:
in sreg_save, _SFR_IO_ADDR(SREG)
  a2: 2f b6        in r2, 0x3f; 63
tst LedTne
  a4: 44 20        and r4, r4
brne tca1
  a6: 11 f4        brne .+4     ; 0xac <tca1>
cbi _SFR_IO_ADDR(PORTB),Led
  a8: c0 98        cbi 0x18, 0; 24
rjmp tca2
  aa: 01 c0        rjmp .+2     ; 0xae <tca2>

000000ac <tca1>:
tca1:
dec LedTne
  ac: 4a 94        dec r4

000000ae <tca2>:
tca2:
inc GenCnt; увеличение глав.счетчика
  ae: 03 95        inc r16
cpi GenCnt,0xff
  b0: 0f 3f        cpi r16, 0xFF; 255
brne tca3; продолжение ...
  b2: 41 f4        brne .+16    ; 0xc4 <tca3>
ldi GenCnt , 0;
  b4: 00 e0        ldi r16, 0x00; 0
lds LedTne,BufLed;обновление буфера яркости св.ди.
  b6: 40 90 60 00  lds r4, 0x0060
tst LedTne; проверка на 0 !
  ba: 44 20        and r4, r4
breq tca4
  bc: 09 f0        breq .+2     ; 0xc0 <tca4>
sbi _SFR_IO_ADDR(PORTB),Led
  be: c0 9a        sbi 0x18, 0; 24

000000c0 <tca4>:
;___ Фоновые счетчики:
tca4:
subi Cnt_Dl_low,1
  c0: 01 50        subi r16, 0x01; 1
sbci Cnt_Dl_hi,0; уменьшение на 1.
  c2: 10 40        sbci r17, 0x00; 0

000000c4 <tca3>:

tca3:
out _SFR_IO_ADDR(SREG), sreg_save
  c4: 2f be        out 0x3f, r2; 63
reti
  c6: 18 95        reti

Если внимательно посмотреть на команды с регистром GenCnt , вместо обьявленного r18 везде стоит r16.
Рег. перем. sreg_save, LedTne, GenCnt в Си-программе никак не используются и регистры им соответствующие незадействованы.
Так понимаю подмена регистра может происходить из за какихто настроек Ассемблера, в чем может быть дело ?

Сообщение отредактировал MaxiMuz - Feb 22 2012, 07:57
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MaxiMuz   WinAVR: Cовмещение Си и ассемблера   Feb 9 2012, 11:23
- - demiurg_spb   Makefile в студию...   Feb 9 2012, 11:35
- - haker_fox   QUOTE (MaxiMuz @ Feb 9 2012, 19:23) Здрас...   Feb 9 2012, 12:35
|- - MaxiMuz   Цитата(haker_fox @ Feb 9 2012, 15:35) А В...   Feb 9 2012, 16:06
||- - demiurg_spb   Это ваш реальный мейкфайл из проекта? В вашем теку...   Feb 9 2012, 16:15
|||- - MaxiMuz   Цитата(demiurg_spb @ Feb 9 2012, 19:15) Э...   Feb 9 2012, 16:20
|||- - demiurg_spb   Цитата(MaxiMuz @ Feb 9 2012, 19:20) Да, в...   Feb 10 2012, 05:40
|||- - Сергей Борщ   QUOTE (demiurg_spb @ Feb 10 2012, 07:40) ...   Feb 10 2012, 12:00
||- - haker_fox   QUOTE (MaxiMuz @ Feb 10 2012, 00:06) Счит...   Feb 12 2012, 06:05
||- - MaxiMuz   Цитата(haker_fox @ Feb 12 2012, 09:05) Эт...   Feb 12 2012, 16:45
||- - MaxiMuz   Цитата(haker_fox @ Feb 12 2012, 09:05) Эт...   Feb 14 2012, 11:50
|- - MaxiMuz   Цитата(haker_fox @ Feb 9 2012, 15:35) Здр...   Feb 14 2012, 11:05
|- - demiurg_spb   потому что по умолчанию всё берётся из текущего ка...   Feb 14 2012, 11:39
||- - MaxiMuz   Цитата(demiurg_spb @ Feb 14 2012, 14:39) ...   Feb 14 2012, 11:44
||- - demiurg_spb   Что задаётся? Чтобы искалось в других каталогах? И...   Feb 14 2012, 11:46
|- - haker_fox   QUOTE (MaxiMuz @ Feb 14 2012, 19:05) в AS...   Feb 15 2012, 00:49
- - MaxiMuz   Да, вручную все добавляется и успешно собирается д...   Feb 10 2012, 08:39
- - MaxiMuz   В демо-проекте "совмещение Си и ассемблера...   Feb 11 2012, 18:18
|- - Сергей Борщ   QUOTE (MaxiMuz @ Feb 11 2012, 20:18) Где ...   Feb 11 2012, 21:06
- - ReAl   Я давно в makefile проекта перестал вписывать отде...   Feb 12 2012, 11:16
|- - haker_fox   QUOTE (ReAl @ Feb 12 2012, 19:16) Я давно...   Feb 13 2012, 13:58
|- - ReAl   Цитата(haker_fox @ Feb 13 2012, 15:58) Мн...   Feb 14 2012, 16:45
- - MaxiMuz   новый вопрос: Для обращения к байтовой регистрово...   Feb 12 2012, 18:03
|- - demiurg_spb   Цитата(MaxiMuz @ Feb 12 2012, 21:03) А ка...   Feb 13 2012, 05:19
- - _Ivana   Спасибо за упоминание про Makefile. Только что пыт...   Feb 13 2012, 19:01
|- - haker_fox   QUOTE (_Ivana @ Feb 14 2012, 03:01) пропи...   Feb 14 2012, 02:12
- - MaxiMuz   Всем спасибо за разьяснение в особенности haker_fo...   Feb 15 2012, 17:58
|- - Сергей Борщ   QUOTE (MaxiMuz @ Feb 15 2012, 19:58) В че...   Feb 15 2012, 20:42
|- - MaxiMuz   Цитата(Сергей Борщ @ Feb 15 2012, 23:42) ...   Feb 16 2012, 08:20
|- - Сергей Борщ   QUOTE (MaxiMuz @ Feb 16 2012, 10:20) поче...   Feb 16 2012, 09:31
- - MaxiMuz   Непонимаю смысл вставки:Кодasm volatile("...   Feb 19 2012, 14:58
|- - Сергей Борщ   QUOTE (MaxiMuz @ Feb 19 2012, 16:58) Непо...   Feb 19 2012, 17:51
|- - MaxiMuz   Цитата(Сергей Борщ @ Feb 19 2012, 20:13) ...   Feb 19 2012, 18:19
|- - haker_fox   QUOTE (MaxiMuz @ Feb 20 2012, 02:19) Где ...   Feb 20 2012, 08:54
|- - MaxiMuz   Цитата(haker_fox @ Feb 20 2012, 11:54) Он...   Feb 21 2012, 19:40
|- - Сергей Борщ   Я никогда не использовал регистровые переменные, н...   Feb 21 2012, 23:53
- - slavik.ksu   здравствуй те уважаемые форумчане! Перехожу н...   Feb 22 2012, 06:08
|- - demiurg_spb   КодISR ( USART_RX_vect ) { switch ...   Feb 22 2012, 06:36
|- - slavik.ksu   Оказывается в конструкции switch строка выполняетс...   Feb 22 2012, 06:42
|- - slavik.ksu   Оказывается в конструкции switch строка выполняетс...   Feb 22 2012, 06:43
- - ReAl   Смотря что имеется ввиду под словом «выполняется» ...   Feb 22 2012, 07:49
- - MaxiMuz   Цитата(MaxiMuz @ Feb 22 2012, 10:50) Так ...   Feb 22 2012, 10:02
- - ReAl   Кстати, да. Если кто-то из модераторов перенесёт в...   Feb 22 2012, 11:16


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:36
Рейтинг@Mail.ru


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