Афанасий Яковлев Опубликовано 18 марта, 2018 Поделиться Опубликовано 18 марта, 2018 .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; } } } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 18 марта, 2018 Поделиться Опубликовано 18 марта, 2018 1 час назад, Афанасий Яковлев сказал: if (TCNT0 == 255) Программа может не поймать этот момент. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
snn_krs Опубликовано 18 марта, 2018 Поделиться Опубликовано 18 марта, 2018 2 hours ago, Афанасий Яковлев said: if (TCNT0 == 255) Правильней наверно будет проверять флаг переполнения if ( TIFR & ( 1 << TOV0 )) { i++; TIFR |= 1 << TOV0; } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
солар Опубликовано 18 марта, 2018 Поделиться Опубликовано 18 марта, 2018 2 часа назад, Афанасий Яковлев сказал: который был переведен Какова цель? Задача в чём состоит? 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Starichok Опубликовано 18 марта, 2018 Поделиться Опубликовано 18 марта, 2018 3 часа назад, солар сказал: Программа может не поймать этот момент. предделитель 1024. поймает легко. 0 Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду. Ссылка на комментарий Поделиться на другие сайты Поделиться
Афанасий Яковлев Опубликовано 18 марта, 2018 Автор Поделиться Опубликовано 18 марта, 2018 (изменено) 10 часов назад, солар сказал: Какова цель? Задача в чём состоит? А цель проста для интереса, и еще я заметил что на ASM бинарный код получается намного меньшего размера чем на си. На си писать меньше, а на ASM больше, но код получается меньше. И еще потому что я начинаю на ATTINY13A у которой флэш память на 1Кб. На си работает как надо(или как задумывалось), а на асм нет=) вот я и спрашиваю у ASM пишущих. Как сказал @snn_krs попробую тогда на флаг переполнения. Изменено 18 марта, 2018 пользователем Афанасий Яковлев 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 19 марта, 2018 Поделиться Опубликовано 19 марта, 2018 8 часов назад, Афанасий Яковлев сказал: ...На си писать меньше, а на ASM больше... Я бы заменил слово "писать" на слово "думать". Ваша беда в том, что Вы не представляете, как работает МК (в СИ это не важно). Например. В примере на СИ Вы сбрасываете счетный регистр TCNT0, а в примере на Asm этого не делаете (забывчивость?). Посчитайте, сколько инкрементов выполнится пока TCNT0 не перейдет на значение 0 самостоятельно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 19 марта, 2018 Поделиться Опубликовано 19 марта, 2018 (изменено) 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 Изменено 19 марта, 2018 пользователем Геннадий 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Афанасий Яковлев Опубликовано 3 апреля, 2018 Автор Поделиться Опубликовано 3 апреля, 2018 Спасибо Геннадий, по вашему совету получилось. Вы правы на счет того что я не представляю как работают МК. Спасибо за раб пример. Думаю тема закрыта. Всем бооольшое спасибо за ваши отзывчивость!!! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starichok Опубликовано 3 апреля, 2018 Поделиться Опубликовано 3 апреля, 2018 вот только к сожалению, Геннадий оформил свой код, как цитату Афанасия. хотя у Афанасия в том посте был совсем другой текст... 0 Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду. Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 3 апреля, 2018 Поделиться Опубликовано 3 апреля, 2018 Извиняюсь, но отредактировать уже не могу. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starichok Опубликовано 6 апреля, 2018 Поделиться Опубликовано 6 апреля, 2018 понятно, что уже не можешь. на потом - будь внимательным и не торопись... 0 Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду. Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 6 апреля, 2018 Поделиться Опубликовано 6 апреля, 2018 В 19.03.2018 в 01:27, Афанасий Яковлев сказал: на ASM бинарный код получается намного меньшего размера чем на си Некоторые приёмы я подсмотрел как раз в ассемблерных файлах, полученных после компилирования Си. Так, мысли вслух. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.