Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
5 / 5 / 0
Регистрация: 03.09.2013
Сообщений: 79

Перемещение в метку, непонятное поведение. avr-as

15.10.2024, 08:04. Показов 3549. Ответов 42

Студворк — интернет-сервис помощи студентам
Здравствуйте! Решил ради интереса пописать на AVR assembler, но столкнулся с неожиданными проблемами.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
.equ    portB, 0x05             ; 13.4.2 of datasheet.
 
.section .text                                                                  
                                                                                                                                                                                                                        
main:                                                                           
        rjmp main               ;  Жужалка. :)                                                              
                                                                                
                                                                                
label1:                         ;  Метка (адрес счётчика команд), в которую 
                                ; я гипотетически не должен попадать.                                            
        sbi portB, 5            ; Зажигаю led L на ардуино нано.                                              
        ret
Собирается всё и прошивается следующим образом:
Bash
1
2
3
4
avr-as  -mmcu=atmega328p led_book.S -o led_book.o
avr-objcopy -O ihex led_book.o led_book.hex
avrdude -b 57600  -c usbasp -p atmega328p -P usb \
    -U flash:w:led_book.hex
В результате, светодиод загорается на плате, когда гипотетически счётчик команд не должен доходить до адреса соответствующего метке label1. Почему светодиод загорается? Что я делаю не так?

Также попробовал это дело дизассемблировать, надеясь придти к понимаю, но тоже безуспешно.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
avr-ld -o led_book.elf led_book.o
avr-objdump -d led_book.elf 
 
led_book.elf:     file format elf32-avr
 
 
Disassembly of section .text:
 
00000000 <__ctors_end>:
   0:   ff cf           rjmp    .-2         ; 0x0 <__ctors_end>
 
00000002 <label1>:
   2:   2d 9a           sbi 0x05, 5 ; 5
   4:   08 95           ret
Вроде должно просто жужжать, но светодиод загорается.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2024, 08:04
Ответы с готовыми решениями:

avr непонятное поведение порта
Други делаю первые шаги в авр. такая проблема. в общем ваяю часы с динамической индикацией на otmyko48 индикатор с общим анодом,...

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о. частота тактирования на таймере=42Мгц ...

Непонятное поведение
Всем привет! В книге &quot;Прата - Язык программирования C++. Лекции и управжения 2011&quot; нашёл вот такой пример: const free_throws...

42
10 / 8 / 2
Регистрация: 01.11.2019
Сообщений: 95
23.10.2024, 15:17
Студворк — интернет-сервис помощи студентам
Ну, например в AtMega328 по умолчанию этот фьюз запрограмирован. Я это понял,только когда по UART кракозябры с МК начал получать. Решил проблему в лоб, запрограмировав CKOUT и подключив осциллограф.
0
 Аватар для COKPOWEHEU
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
23.10.2024, 19:58
Цитата Сообщение от MrQwert Посмотреть сообщение
Ну, например в AtMega328 по умолчанию этот фьюз запрограмирован.
По умолчанию да, но ТС ведь ардуину использует, а не отдельный камень.
Цитата Сообщение от MrQwert Посмотреть сообщение
Решил проблему в лоб, запрограмировав CKOUT и подключив осциллограф.
Можно сделать мигалку на _delay_ms(), уж секунду от 8 секунд отличить несложно. То же можно на таймерах сделать.
Это если осциллографа нет или лень его доставать.
0
10 / 8 / 2
Регистрация: 01.11.2019
Сообщений: 95
23.10.2024, 20:29
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Можно сделать мигалку на _delay_ms(), уж секунду от 8 секунд отличить несложно
Да, именно так я и делал, когда пытался с тактированием по простому разобраться. Так же на некоторых МК CKOUT нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2024, 20:29

Непонятное поведение ОС
Здрасте! Купил новый комп, а он загружается через раз (чаще через несколько раз), выключается долго, и один раз не вышел из спячки. ...

Непонятное поведение
Касперский обнаружил немного мусора. После загрузки компьютер работает нормально, но со временем начинает подтормаживать. То ли железоЮ то...

Непонятное поведение
Всем привет) Задача: выбрать файл и , если это картинка, вывести изображение в окне браузера (причем размер должен быть не более 300px...

Непонятное поведение присвоения
private void SetAddressType(DAL.Data.Organization org,bool isMailingSame,bool create) { if (org.OrganizationType !=...

Непонятное поведение ArrayList
У меня есть код, который циклом достаёт данные из базы данных и помещает их в HashMap, а оттуда уже типа HashMap помещает в ArrayList....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru