ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Отладка систем на небольших микроконтроллерах с помощью осциллографа

Журнал РАДИОЛОЦМАН, июль 2014

Josef Valasek

EDN

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

При разработке систем на небольших микроконтроллерах доступные вам средства отладки программного кода могут быть очень ограниченными. В статье представлена простая отладочная программа для отображения одного двоичного байта на экране осциллографа. Программа использует один выход микроконтроллера.

Для отображения значения байта загрузите его в аккумулятор и вызовите программу, названную Debug. Значение байта, преобразованное в последоватеьную форму, будет выведено на вывод Test (Рисунок 1). Первым будет выводиться старший бит. Добавление коротких разделительных импульсов между одинаковыми битами упрощает восприятие информации. При необходимости посмотреть на осциллографе более одного байта, вызовите Debug еще раз.

Отладка систем на небольших микроконтроллерах с помощью осциллографа
Рисунок 1. Осциллограф говорит: «01000111».

Ниже представлена версия для микроконтроллеров 8051. Программе не требуется оперативная память, и нужен единственный регистр R7. Время выполнения при стандартной для подобных контроллеров тактовой частоте 12 МГц составляет 76 мкс (включая вызов программы).


         ;*********************************************************************
         ;*                                                                   *
         ;*      Подпрограмма:   Отладочная программа                         *
         ;*                                                                   *
         ;*      Вход:           Байт данных в аккумуляторе                   *
         ;*                                                                   *
         ;*      Выход:          Последовательность сигналов на выводе "Test" *
         ;*                                                                   *
         ;*      Используются:   Аккумулятор, r7                              *
         ;*                                                                   *
         ;*      Ассемблер:      KEIL, A51 MACRO ASSEMBLER                    *
         ;*                                                                   *
         ;*********************************************************************
         Test    bit     P1.5            ; Выходной диагностический порт
                 public  Debug
         SGC_DEBUG       SEGMENT CODE
                 RSEG    SGC_DEBUG
         Debug:  push    psw             ; Сохранить слово состояния программы
                 mov     r7,#9           ; Количество циклов
                 clr     EA              ; Запретить все прерывания
                 clr     c               ; Сбросить бит переноса
         Loop:   rlc     a               ; Сдвиг бита данных в C
                 jnc     Zero
         One:    clr     Test            ; Начало вывода бита "1"
                 setb    Test
                 djnz    r7,Loop
         Zero:   setb    Test            ; Начало вывода бита "0"
                 clr     Test
                 djnz    r7,Loop         ; Повторить для 9 битов
                 setb    EA              ; Разрешить все прерывания
                 pop     psw             ; Восстановить слово состояния программы
                 ret
                 END

Ниже показана версия для микроконтроллера PIC. Программа использует два байта памяти и два регистра.


     ;*********************************************************************
     ;*                                                                   *
     ;*      Подпрограмма:   Отладочная программа                         *
     ;*                                                                   *
     ;*      Вход:           Байт данных в W                              *
     ;*                                                                   *
     ;*      Выход:          Последовательность сигналов на выводе "Test" *
     ;*                                                                   *
     ;*      Используются:   W, C, TempCtr, TempData                      *
     ;*                                                                   *
     ;*      Ассемблер:      Microchip, MPASM                             *
     ;*                                                                   *
     ;*********************************************************************
             list    p=16F505,r=dec,c=93,n=63,st=OFF
             #include "p16F505.inc"
     #define Test            PORTB,1 ; Диагностический порт
             global  Debug
     TempCtr         equ     H'0E'   ; Временный счетчик
     TempData        equ     H'0F'   ; Временные данные
     DEBUG   CODE
     Debug   movwf   TempData        ; Сохранить байт данных
             movlw   9               ; Количество циклов
             movwf   TempCtr
             bcf     STATUS,C        ; Сбросить бит переноса
     Loop    rlf     TempData,F      ; Сдвиг бита данных в C
             btfss   STATUS,C
             goto    Zero
             nop
     One     bcf     Test            ; Начало вывода бита "1"
             bsf     Test
             decf    TempCtr,F
             goto    Loop
     Zero    bsf     Test            ; Начало вывода бита "0"
             bcf     Test
             decfsz  TempCtr,F
             goto    Loop
             retlw   0
             END

В качестве выхода очень удобно использовать вывод внутрисхемного программирования (ISP), поскольку это позволяет подключать щуп осциллографа непосредственно к контакту разъема.

Ссылки

  1. Peeters, Brad, PIC debugging routine reads out binary numbers, EDN, December 7, 2000, p.196

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Facilitate oscilloscope debug of small microcontroller systems

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя