Перейти к содержанию

Рекомендуемые сообщения

.include "tn13Adef.inc"
; Macros    #####################################################

;RAM segment
.dseg
;Program segments FLASH
.cseg
;Interupts    #####################################################
.org 0x00
rjmp RESET ; Reset Handler 0x0000
;rjmp EXT_INT0 ; IRQ0 Handler 0x0001
;.org 0x02
;rjmp PCINTGO ; PCINT0 Handler 0x0002
;rjmp TIM0_OVF ; Timer0 Overflow Handler 0x0003
;rjmp EE_RDY ; EEPROM Ready Handler 0x0004
;rjmp ANA_COMP ; Analog Comparator Handler 0x0005
;rjmp TIM0_COMPA ; Timer0 CompareA Handler 0x0006
;rjmp TIM0_COMPB ; Timer0 CompareB Handler 0x0007
;rjmp WATCHDOG ; Watchdog Interrupt Handler 0x0008
;rjmp ADC ; ADC Conversion Handler 0x0009
;Initial    #####################################################
RESET:
;initial STACK
    LDI R16, RAMEND
    OUT SPL, R16
;set counter bit in 0
    LDI R16, 0x00
    OUT TCNT0, R16
;select timer clok
    LDI R16, 0x05
    OUT TCCR0B, R16

    LDI R20, 0x25
    LDI R21, 0x07
;port setting
    LDI R16, 0x07
    OUT DDRB, R16
    LDI R16, 0x00
    OUT PORTB, R16

start:
    LDI R17, 0xff
    IN R1, TCNT0
    CP R17, R1
    BREQ incr
     rjmp start
incr:
    inc R18
    CP    R18, R20
    BREQ LedOn
    rjmp start
LedOn:
    IN R16, PORTB
    EOR R16, R21
    OUT PORTB, R16
    LDI R18, 0x00
    rjmp start

Здрастье, я новичок в деле авр, наверху код который был переведен с си на асм результат работы не должно было отличаться от си, но что то оно работает не так как хотелось бы. Частота мигание диодов слишком частое. В чем может быть ошибка?

Фюзы выставлены так чтобы частота МК была 9.6 МГец

Формула расчета ПерТ0 = 1024/ЧастМК

Примерное переполнение Счетчика 37 раз что приблизительно 1 сек.

Но как уже писал оно не 1с а намного меньше .

Внизу код из си


 

#include <avr/io.h>
//PB0-2 led
int i = 0;
int main(void){

    DDRB = 0x07;
    PORTB = 0x00;
    
    TCNT0 = 0x00;
    TCCR0B = 0x05;

    while(1){

        if (TCNT0 == 255){
            i++;
            TCNT0 = 0x00;
        }
        if (i == 37){
            PORTB ^= 0x07;
            i = 0;
        }

    }

}

 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

3 часа назад, солар сказал:

Программа может не поймать этот момент.

предделитель 1024. поймает легко.

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, солар сказал:

Какова цель? Задача в чём состоит?

А цель проста для интереса, и еще я заметил что на ASM бинарный код получается намного меньшего размера чем на си. На си писать меньше, а на ASM больше, но код получается меньше. И еще потому что я начинаю на ATTINY13A у которой флэш память на 1Кб.

На си работает как надо(или как задумывалось), а на асм нет=) вот я и спрашиваю у ASM пишущих.

Как сказал @snn_krs попробую тогда на флаг переполнения.

Изменено пользователем Афанасий Яковлев
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Афанасий Яковлев сказал:

...На си писать меньше, а на ASM больше...

Я бы заменил слово "писать" на слово "думать". Ваша беда в том, что Вы не представляете, как работает МК (в СИ это не важно).

Например. В примере на СИ Вы сбрасываете счетный регистр TCNT0, а в примере на Asm этого не делаете (забывчивость?). Посчитайте, сколько инкрементов выполнится пока TCNT0 не перейдет на значение 0 самостоятельно.

Ссылка на комментарий
Поделиться на другие сайты

22 часа назад, Афанасий Яковлев сказал:

.include "tn13Adef.inc"
; Macros    #####################################################

;RAM segment
.dseg
;Program segments FLASH
.cseg
;Interupts    #####################################################
.org 0x00
rjmp RESET ; Reset Handler 0x0000
;rjmp EXT_INT0 ; IRQ0 Handler 0x0001
;.org 0x02
;rjmp PCINTGO ; PCINT0 Handler 0x0002
;rjmp TIM0_OVF ; Timer0 Overflow Handler 0x0003
;rjmp EE_RDY ; EEPROM Ready Handler 0x0004
;rjmp ANA_COMP ; Analog Comparator Handler 0x0005
;rjmp TIM0_COMPA ; Timer0 CompareA Handler 0x0006
;rjmp TIM0_COMPB ; Timer0 CompareB Handler 0x0007
;rjmp WATCHDOG ; Watchdog Interrupt Handler 0x0008
;rjmp ADC ; ADC Conversion Handler 0x0009
;Initial    #####################################################
RESET:
;initial STACK
    LDI R16, RAMEND
    OUT SPL, R16
;set counter bit in 0
    CLR R16
    OUT TCNT0, R16
;select timer clok
    LDI R16, 0x05
    OUT TCCR0B, R16

    CLR R20
    LDI R21, 0x07
;port setting
    LDI R16, 0x07
    OUT DDRB, R16
    CLR R16
    OUT PORTB, R16
pre_start:
    LDI R18,0x25
start:
    IN   R17, TCNT0
    CPI  R17, 0xFF
    BRNE start
incr:
    OUT  TCNT0, R20
    DEC  R18
    BRNE start
LedOn:
    IN R16, PORTB
    EOR R16, R21
    OUT PORTB, R16
    rjmp pre_start

 

 

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Спасибо Геннадий, по вашему совету получилось. Вы правы на счет того что я не представляю как работают МК. Спасибо за раб пример. Думаю тема закрыта. Всем бооольшое спасибо за ваши отзывчивость!!!

Ссылка на комментарий
Поделиться на другие сайты

вот только к сожалению, Геннадий оформил свой код, как цитату Афанасия. хотя у Афанасия в том посте был совсем другой текст...

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

понятно, что уже не можешь.

на потом - будь внимательным и не торопись...

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

В 19.03.2018 в 01:27, Афанасий Яковлев сказал:

на ASM бинарный код получается намного меньшего размера чем на си

Некоторые приёмы я подсмотрел как раз в ассемблерных файлах, полученных после компилирования Си. Так, мысли вслух.

Я не раздаю удочки. Я продаю рыбу.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...