На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (18) « Первая ... 14 15 [16] 17 18  все  ( Перейти к последнему сообщению )  
    > Разбираемся с IAR , Обсуждаем небольшие коды на IAR.
      кто работал с IAR for AVR 3.20C, подскажите как там в дебагере заставить срабатывать прерывания от таймеров тогда когда им положено, а не прописывать постоянно какую-то абстрактную частоту их появления в Simulator/Interrupts
        В IAR-е, вроде (давно не юзал), можно файлик сделать с таймингами прерываний и по нему отлаживаться.
          По симуляции периферии вообще и прерываний в частности IAR EWAVR слабоват по сравнению с AVR Studio, ПМСМ. Это, похоже, единственный его недостаток.
            Цитата

            По симуляции периферии вообще и прерываний в частности IAR EWAVR слабоват по сравнению с AVR Studio, ПМСМ. Это, похоже, единственный его недостаток.

            это точно, ты можешь сконвертить отладочный файл для AVR Studio и отлаживать там
              Ладно, спасибо,
              буду писать в AVR studio, там тоже есть С (а так хотелось С++ :'( )
                Цитата Moneyiac @
                буду писать в AVR studio, там тоже есть С (а так хотелось С++ )
                Можешь откомпилировать в IAR, а отлаживать под AVR Studio. Правда будут ли под AVR Studio видны прелести C++ - не знаю.
                  Драсте всем кто нибудь пытался програмить контроллер Segnetics с помощью IAR systems. Начал разбираться с этим компилятором возникла куча проблемм прежде всего с настройками. Если кто сталкивался помогите. :wall:
                    IAR systems, почему-то не знает об Segnetics абсолютно ни чего, наверное шифруются. И гугль о Segnetics-ах ни чего сказать не смог. Кинь ссылку на документацию или на сайт.
                    У тебя возникли проблемы с IAR systems или с настройками компилятора? Собственно в чем проблемы, может быть ты всетаки расскажешь, shtirlizzz
                      Цитата MeG @
                      И гугль о Segnetics-ах ни чего сказать не смог.
                      Он просто неправильно написал. Signetics http://www.signetics.com/product.html
                        Цитата shtirlizzz @
                        хотя Time я ни где и не использовал вроде
                        А в ClassBiosSMH не используется? И вообще, о таких ошибках без полных исходников можно долго гадать.
                          у кого есть сама эта программа(iar ewpic)??? пишите. как тока будет она я сразу вступю в дискуссию. а пока очень очень очень нужна
                          Сообщение отредактировано: AVANGARD0_1338 -
                            Всем привет! Вот, на старости лет лет решил освоить программирование микроконтроллеров... :)
                            Попробовал себя в AvrStudio на асме - вроде все нормально. Решил освоить и С. Полазив по интернету остановил свой выбор на IAR. Методом научного тыка вроде разобрался с настройками. Но в один прекрасный момент вылезла такая проблема.

                            Суть в следующем:
                            Изголяюсь с камнем ATtiny45, а конкретно с его USI под TWI. Все вроде бы нормально, все получается, а вот когда я захотел прикрутить к TWI прерывания вылезла непонятка. В симуляторе начали вылазить ошибки о выходе куда-то за пределы кода. Подозрение пало на инициализацию векторов. IAR вектора инициализирует двухбайтовыми командами. Смотрю в даташит по ATtiny45. Вижу следующее:
                            ExpandedWrap disabled
                              9.1 Interrupt Vectors in ATtiny25/45/85
                              The interrupt vectors of ATtiny25/45/85 are described in Table 9-1below.
                               
                              Table 9-1. Reset and Interrupt Vectors
                              =========================================================================
                              Vector No.  Program Address   Source         Interrupt Definition
                              =========================================================================
                              1           0x0000            RESET          External Pin, Power-on Reset,
                                                                           Brown-out Reset, Watchdog Reset
                              2           0x0001            INT0           External Interrupt Request 0
                              3           0x0002            PCINT0         Pin Change Interrupt Request 0
                              4           0x0003            TIMER1_COMPA   Timer/Counter1 Compare Match A
                              5           0x0004            TIMER1_OVF     Timer/Counter1 Overflow
                              6           0x0005            TIMER0_OVF     Timer/Counter0 Overflow
                              7           0x0006            EE_RDY EEPROM  Ready
                              8           0x0007            ANA_COMP       Analog Comparator
                              9           0x0008            ADC            ADC Conversion Complete
                              10          0x0009            TIMER1_COMPB   Timer/Counter1 Compare Match B
                              11          0x000A            TIMER0_COMPA   Timer/Counter0 Compare Match A
                              12          0x000B            TIMER0_COMPB   Timer/Counter0 Compare Match B
                              13          0x000C            WDT Watchdog   Time-out
                              14          0x000D            USI_START      USI START
                              15          0x000E            USI_OVF        USI Overflow
                               
                              If the program never enables an interrupt source, the Interrupt Vectors are not used, and regular
                              program code can be placed at these locations. The most typical and general program setup for
                              the Reset and Interrupt Vector Addresses in ATtiny25/45/85 is shown in the program example
                              below.

                            Как видно - везде выравнивание вроде как на байт. Смотрю в заголовочный файл IAR для ATtiny45 и вижу следующее:
                            ExpandedWrap disabled
                              /* NB! vectors are specified as byte addresses */
                               
                              #define    RESET_vect          (0x00) /* External Pin, Power-on Reset, Brown-out Reset,
                                                                       Watchdog Reset */
                              #define    INT0_vect           (0x02) /* External Interrupt Request 0 */
                              #define    PCINT0_vect         (0x04) /* Pin Change Interrupt Request 0 */
                              #define    TIM1_COMPA_vect     (0x06) /* Timer/Counter1 Compare Match A */
                              #define    TIM1_OVF_vect       (0x08) /* Timer/Counter1 Overflow */
                              #define    TIM0_OVF_vect       (0x0A) /* Timer/Counter0 Overflow */
                              #define    EE_RDY_vect         (0x0C) /* EEPROM Ready */
                              #define    ANA_COMP_vect       (0x0E) /* Analog Comparator */
                              #define    ADC_vect            (0x10) /* ADC Conversion Complete */
                              #define    TIM1_COMPB_vect     (0x12) /* Timer/Counter1 Compare Match B */
                              #define    TIM0_COMPA_vect     (0x14) /* Timer/Counter0 Compare Match A */
                              #define    TIM0_COMPB_vect     (0x16) /* Timer/Counter0 Compare Match B */
                              #define    WDT_vect            (0x18) /* Watchdog Time-out */
                              #define    USI_START_vect      (0x1A) /* USI START */
                              #define    USI_OVF_vect        (0x1C) /* USI Overflow */

                            Вижу выравнивание на слово. Начинаю тормозить... :slow:

                            Лезу в инклуды асма AvrStudio - вижу следующее:
                            ExpandedWrap disabled
                              ; ***** INTERRUPT VECTORS ************************************************
                              .equ    INT0addr    = 0x0001    ; External Interrupt 0
                              .equ    PCI0addr    = 0x0002    ; Pin change Interrupt Request 0
                              .equ    OC1Aaddr    = 0x0003    ; Timer/Counter1 Compare Match 1A
                              .equ    OVF1addr    = 0x0004    ; Timer/Counter1 Overflow
                              .equ    OVF0addr    = 0x0005    ; Timer/Counter0 Overflow
                              .equ    ERDYaddr    = 0x0006    ; EEPROM Ready
                              .equ    ACIaddr         = 0x0007    ; Analog comparator
                              .equ    ADCaddr         = 0x0008    ; ADC Conversion ready
                              .equ    OC1Baddr    = 0x0009    ; Timer/Counter1 Compare Match B
                              .equ    OC0Aaddr    = 0x000a    ; Timer/Counter0 Compare Match A
                              .equ    OC0Baddr    = 0x000b    ; Timer/Counter0 Compare Match B
                              .equ    WDTaddr         = 0x000c    ; Watchdog Time-out
                              .equ    USI_STARTaddr   = 0x000d    ; USI START
                              .equ    USI_OVFaddr = 0x000e    ; USI Overflow

                            Потихоньку начинаю офигевать... :crazy:

                            Решил посмотреть что видно в дизассемблере AvrStudio - увидел вот это:
                            ExpandedWrap disabled
                              ---- Test_3.asm -----------------------------------------------------------------------------------
                              47:             rjmp RESET           ; Reset Handler
                              +00000000:   C00E       RJMP      PC+0x000F      Relative jump
                              48:             reti                 ; rjmp EXT_INT0 ; IRQ0 Handler
                              +00000001:   9518       RETI                     Interrupt return
                              49:             reti                 ; rjmp PCINT0 ; PCINT0 Handler
                              +00000002:   9518       RETI                     Interrupt return
                              50:             reti                 ; rjmp TIM1_COMPA ; Timer1 CompareA Handler
                              +00000003:   9518       RETI                     Interrupt return
                              51:             reti                 ; rjmp TIM1_OVF ; Timer1 Overflow Handler
                              +00000004:   9518       RETI                     Interrupt return
                              52:             reti                 ; rjmp TIM0_OVF ; Timer0 Overflow Handler
                              +00000005:   9518       RETI                     Interrupt return
                              53:             reti                 ; rjmp EE_RDY ; EEPROM Ready Handler
                              +00000006:   9518       RETI                     Interrupt return
                              54:             reti                 ; rjmp ANA_COMP ; Analog Comparator Handler
                              +00000007:   9518       RETI                     Interrupt return
                              55:             reti                 ; rjmp ADC ; ADC Conversion Handler
                              +00000008:   9518       RETI                     Interrupt return
                              56:             reti                 ; rjmp TIM1_COMPB ; Timer1 CompareB Handler
                              +00000009:   9518       RETI                     Interrupt return
                              57:             reti                 ; rjmp TIM0_COMPA ;
                              +0000000A:   9518       RETI                     Interrupt return
                              58:             reti                 ; rjmp TIM0_COMPB ;
                              +0000000B:   9518       RETI                     Interrupt return
                              59:             reti                 ; rjmp WDT ;
                              +0000000C:   9518       RETI                     Interrupt return
                              60:             reti                 ; rjmp USI_START ;
                              +0000000D:   9518       RETI                     Interrupt return
                              61:             reti                 ; rjmp USI_OVF ;
                              +0000000E:   9518       RETI                     Interrupt return
                              @0000000F: RESET
                              73:       RESET:    ldi r16, low(RAMEND)         ; Main program start
                              +0000000F:   E50F        LDI       R16,0x5F          Load immediate
                              74:                 ldi r17, high(RAMEND); Tiny45/85 also has SPH
                              +00000010:   E011        LDI       R17,0x01          Load immediate
                              75:                 out SPL, r16         ; Set Stack Pointer to top of RAM
                              +00000011:   BF0D        OUT       0x3D,R16          Out to I/O location
                              76:                 out SPH, r17         ; Tiny45/85 als has SPH
                              +00000012:   BF1E        OUT       0x3E,R17          Out to I/O location

                            Каждая команда занимает слово, но адресация почему то идет как побайтная. Вот тут я приехал. :wall:

                            Вот может кто нибудь прояснить эту ситуацию? А то у меня уже мозги кипят. :D

                            ================================================================================
                            И еще вопрос. IAR не генерит код(кроме области векторов) если в опциях не подключена никакая библиотека. А мне надо заставить компилятор генерить код без подключения библиотек. Исходников стандартных библиотек в моем IAR нет, только скомпилированные. Можно ли как-то заставить IAR генерить код без подключения библиотек? Или может у кого-то есть эти исходники? Поделитесь плиз? Я догадываюсь, что исходники есть наверное в инсталяторе IAR, но как их вытянуть оттуда пока не знаю. Наверное нужна более дорогая лицензия.
                              Цитата ir0407 @
                              Смотрю в даташит по ATtiny45. Вижу следующее:
                              Как видно - везде выравнивание вроде как на байт.
                              Не на байт, а на слово. Память программ при переходах адресуется пословно, младший бит адреса не указывается в коде команды и подразумевается равным 0. Ну или, если смотреть с другой стороны - адрес является порядковым номером 16-битного слова. Особенность архитектуры AVR.
                                Спасибо. :) А в каком документе на сайте Atmel-a можно найти эту инфу об особенностях архитектуры. А то я что-то никак не могу ничего такого найти. Инфы столько, что глаза разбегаются.
                                  Вот уж не помню.
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0537 ]   [ 15 queries used ]   [ Generated: 23.04.24, 16:52 GMT ]