1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Atmel Studio 6

Тема в разделе "Программирование", создана пользователем Loko41, 14.12.13.

  1. Loko41

    Loko41 Участник

    190
    0
    В данной проге при пошаговом дебагинге не правильно работает команда ret

    пример кода на асме

    .include "m32adef.inc"
    .list
    .def temp = R16
    .def loop = R17

    .cseg
    .org 0

    ldi temp,high(RAMEND)
    out SPL, temp

    ;------------------ИННИЦИАЛИЗАЦИЯ ПОРТОВ ВВ------------

    ldi temp, 0x00
    out DDRA, temp
    ldi temp, 0xFF
    out PORTA, temp
    out DDRB, temp
    out PORTB, temp

    ;------------------ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ------------

    MAIN: in temp, PINA
    SBRC temp, 0
    RJMP MAIN
    rcall wait

    ;------------------ПЕРЕКЛЮЧЕНИЕ СВЕТОДИОДА-------------

    IN temp, PINB
    SBRC temp, 0
    RJMP M1
    SBI PORTB, 0
    RJMP M2
    M1: CBI PORTB, 0

    ;------------------ЦИКЛ ОЖИДАНИЯ ОТПУСКАНИЯ КНОПКИ-----

    M2: IN temp, PINA
    SBRS temp, 0
    RJMP M2
    rcall wait
    RJMP MAIN

    ;------------------подпрограмма задержки---------------

    wait: ldi loop, 200
    wt1: dec loop
    brne wt1
    ret

    выполняя команду ret переходит не туда от куда вышла а на самый верх кода (ldi temp,high(RAMEND)). что я делаю не так? Работаю с JTAGICE3 и с симулятором, результат один и тот же. Простая схемка управления светодиодом(PORTB.0) с помощью кнопки (PINA.0)
     
  2. Loko41

    Loko41 Участник

    190
    0
    Спасибо что помогли, но нашел свой косяк, покурил даташит и нашел в чем проблема
    ldi temp,high(RAMEND)
    out SPH, temp
    ldi temp,low(RAMEND)
    out SPL, temp

    не глумитесь, сам только учусь :d
     
  3. электрик

    электрик Активный участник

    3.279
    33
    Под AVR прекраснейшая C++ среда разработки. Или ты из тех, кто любит в гамаке и стоя? :)
     
  4. Loko41

    Loko41 Участник

    190
    0
    электрик, зря ты так, вот даже на этапе обучения, у меня на си не пошла нормально простейшая программка, при дизассемблировании ее я нашел недостаток сей затыки, знание ассемблера не не маловажный момент при программировании микроконтроллеров. Почитав форумы, выяснился неприятный момент с Atmel Studio 6, что он криво работает с С++. На другие программные продукты не хочется переходить из-за того, что для этого всего действа был куплен фирменный программатор JTAGICE3. А в других оболочках нет поддержки этого программатора.
     
  5. The Last Winged

    The Last Winged Активный участник

    11.863
    48
    Loko41, а каким образом связаны программатор и компилятор?
     
  6. Loko41

    Loko41 Участник

    190
    0
    The Last Winged, А я и не утверждал этого, мне удобно работать в одной программе и прям из нее все скидывать на микроконтроллер, нежели каждый раз переключаться между студией и Khazama AVR Programmer. Я и написал выше, что сам себя привязал к студии из-за покупки дебагера. Я до JTAGICE3 купил USBASP, сам собрал 2 клона JTAGICE lite и AVRMKII lite, а отказался от них по причине наличия приятных плюшек в шестой студии, а в шестой студии вышеперечисленные устройства не поддерживаются, кроме JTAGICE3. На данный момент стоит всего одна шестая студия и мне очень нравиться в ней работать, а до этого стояла целая гора ПО чем очень сильно напрягала. Тем более я только начал учиться этому и мне этого за глаза хватает.

    ---------- Сообщение добавлено 15.12.2013 17:48 ----------

    Вот бы лучше чем флудить, помогли бы мне с освоением СИ и СИ++, если кому скучно по вечерам например. По скайпу я бы не отказался по вечерам за душевной беседой с кофе познавать данный предмет.