С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ATmega AVR Работа с прерыванием TIMER0. Atmega328p. Arduino nano https://www.cyberforum.ru/ avr/ thread3182553.html
Хочу по прерыванию TIM0_OFV зажигать светодиод PB5. .equ DDRB, 0x04 .equ PORTB, 0x05 .equ TCCR0B, 0x25 ; 14.9.2 of datasheet. .equ ...
ATmega AVR Перемещение в метку, непонятное поведение. avr-as
Здравствуйте! Решил ради интереса пописать на AVR assembler, но столкнулся с неожиданными проблемами. .equ portB, 0x05 ; 13.4.2 of datasheet. .section .text ...
ATmega AVR [ATmega128] На индикаторе отобразить введенное число и результат его побитовой инверсии Помогите решить задачу: Разработать программу для учебного стенда НТЦ-31.100, позволяющую вводить данные с клавиатуры, выполнять определенные действия над данными и выводить поясняющие надписи и результат вычислений на матричный жидкокристаллический индикатор (МЖКИ) или на дискретный светодиодный индикатор (ДСИ). На ДСИ отобразить введенное число и результат его побитовой инверсии. ... https://www.cyberforum.ru/ avr/ thread3181134.html ATmega AVR [ATmega128] На индикатор вывести бегущую строку Помогите решить задачу: Разработать программу для учебного стенда НТЦ-31.100, выводящую на матричный жидкокристаллический индикатор (МЖКИ) свою фамилию и номер варианта на первой строке и следующую информацию на второй бегущую строку, содержащую символы №20, №4F, №23 и №FF, с последовательным полным заполнением строки каждым из них. Ассемблер, ATmega128, Proteus 8 https://www.cyberforum.ru/ avr/ thread3181132.html
ATmega AVR Подключить три контроллера по I2C(TWI) Atmega, Assembler AVR
После Старта идет Адрес (SLA), второй Slave уже не откликается на второй SLA. Соответственно посылаем Повстарт, первый контроллер уходит в Событие $A0 (Повстарт, режим неадресованное ведомое) переставая вызывать TWINT и игноря пакеты TWDR, второй Контроллер соответственно начинает видеть пакеты. Тогда использую маску TWAMR, хоть частичну, хоть полную для разовой отправки Адреса обоим Slave, но...
ATmega AVR Выдать определенное количество импульсов с заданной частотой Добрый день. Нужно выдать на ножку Atmega88 определенное количество импульсов (N=125) с заданной частотой (F=440 Гц). Запрограммировать таймер Timer1 на 440 герц я справился. Подскажите, как попроще (надежнее) посчитать эти импульсы. Думаю , что через Timer0, но не соображу как. Пишу на ассемблере. https://www.cyberforum.ru/ avr/ thread3180478.html
ATmega AVR Проект часов реального времени на ATmega128 Здравствуйте, нужна помощь. У меня есть проект в Proteus, с реализованными часами реального времени, с индикацией на семи сегментный дисплей в динамическом режиме, мне необходимо сделать из этого проекта статическую индикацию с четырьмя дисплеями. Не могу понять как именно сделать это, сам процесс понимаю, необходимо перестроить схему с другими дисплеями и в коде по идее надо сразу выводить все... https://www.cyberforum.ru/ avr/ thread3180256.html bootloader atmega64 ATmega AVR
Здравствуйте всем может кто то сталкивался нужен bootloader atmega64 Заранее спасибо с уважением yerabdi!
ATmega AVR Прерывание по переполнению не хочет работать tiny13 Добрый день. Помогите разобраться с прерыванием по переполнению. Вроде делаю все правильно но работать не хочет. Кварц внутренний на 9,6MHz. Как я понимаю светодиод должен загореться через 36,6 сек. (9.600.00\1024\256=36,6 сек.) Вот сама программа: {* MCU: tiny13 *} program Interrupt; https://www.cyberforum.ru/ avr/ thread3179604.html ATmega AVR Часы реального времени со статической индикацией (переделать из динамической) Здравствуйте, преподаватель решил дать задание, сделать часы реального времени на ATmega128 с статической индикацией четырех(можно и пять) 7-сегментных индикатора. Использовать можно таймеры 0 и 2, предусмотреть вывод на цифровые индикаторы текущего значения часов реального времени: например, 59:01, причем, символ : должен мигать раз в секунду, где 59 – максимальное число минут, 01 -1 секунда... https://www.cyberforum.ru/ avr/ thread3178310.html
Метеостанция на основе Attiny13 + Nrf24L01 + ds18b20 + tm1637 ATmega AVR
Добрый день форумчане, есть проект, нашел в сети не могу в нем разобраться не программист, нужна помощь соединить один код с другим, файлы проекта прикреплю, частично перевел комментарии. Суть проекта в портативной метеостанции, на attiny13 описание в сети есть но оно на английском и так как я не программист понять очень сложно как передать правильно в функцию чтение температуры, и передать ее на...
ATmega AVR Инструкция CPSE неисправна. AVR Написал код на ASM, не работал. Команда CPSE должна была сравнить первую РОН с нулем и перепрыгнуть через следующую инструкцию, но вместо этого оказывалась на дальней метке, явно продо
2 / 2 / 0
Регистрация: 03.09.2013
Сообщений: 65
23.10.2024, 20:08  [ТС] 0

avr-gcc, ассемблер, директивы резервирования инициализированной памяти - ATmega AVR - Ответ 17426077

23.10.2024, 20:08. Показов 1334. Ответов 30
Метки (Все метки)

Ответ

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я же только что расписал
Я не очень умный.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
что при включении контроллера там будет мусор, а не данные. Чтобы в секции .data появились данные, их надо туда откуда-то записать.
В секции .data мусора как раз не будет, это секция инициализированных данных, в отличие от .bss -- секция неинициализированных данных. И по этим данным под программу выделяется оперативная память под управлением ОС. А malloc() память дополнительно выделяет, а free() освобождает. (Тут конечно всё чуть сложнее. free(), как мне известно, память освобождает, но при этом она продолжает принадлежать выполняющейся программе. При следующем malloc() будет взята сначала эта "освободившаяся" память, а только потом дополнительная. Как конкретно идёт освобождение оперативной программы, я не знаю.)

Как всё это дело работает с МК я пока не знаю. Идут ли cmd_*:, в оперативную память при включении МК?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А в самом коде менять только xxx на числа:
Осмелюсь предположить, что должно быть так, если работа со строками:
Assembler
1
2
  ldi r16, '1'
  ldi r17, '0'
ASCII же. :Р

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Представьте, что вы к контроллеру подключили какое-то внешнее устройство, которое управляется текстовыми строками.
Пока что этот пример дальше пропущу. Т.к. попытался поработать со строками и UART и пока неуверенно себя чувствую чтобы продолжить дисскусию. Вроде даже получалось кривость-накость выводить сообщение объявленное в секции .data. Но это было скорее по неведомой случайности. Так что, чтобы продолжить дискуссию, мне нужно понять как с этим работать.

Предположим, что UART у меня инициализирован правильно (я уже с отдельными байтиками поигрался, например спокойно вывожу все символы от A до Z, а в конце ставлю перенос строки и завершаю подпрограмму).

Есть код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.data                                                                           
msg:    .asciz "Hello, world!\n"  
 
main:                                                                           
        rcall uart_send_A_Z                                                     
        ;rcall uart_send_hello                                                  
        rjmp main                                                               
;main: 
 
main:
uart_send_hello:                                                                
        push r16                                                                
        push ZL                                                                 
        push ZH                                                                 
                                                                                
        ldi ZL, lo8(msg)        ; Set ptr to msg in Z-register.                 
        ldi ZH, hi8(msg)        ;                                               
1:                                                                              
        lpm r16, Z+             ; Post inc Z.                                   
        cpi r16, 0              ; Check if msg[i] \0.                           
        breq 1f                 ; Finish subroutine if \0 byte.                 
                                                                                
        rcall wait_UDRE0                                                        
                                                                                
        sts UDR0, r16           ; Send byte.                                    
        rjmp 1b                                                                 
1:                                                                              
        pop ZH                                                                  
        pop ZL                                                                  
        pop r16                                                                 
        ret                                                                     
;uart_send_hello:                                                               
                                                                                
                                                                                
wait_UDRE0:                                                                     
        push r16                                                                
                                                                                
1:      lds r16, UCSR0A         ; Wait until bit UDRE0 will be set in UCSROA    
        sbrs r16, UDRE0         ; register and UDR0 will be ready to send byte. 
        rjmp 1b                                                                 
                                                                                
        pop r16                                                                 
        ret                                                                     
;wait_UDRE0:
В какой-то момент оно даже как-то работало, когда вместо этого:
Assembler
1
2
3
1:      lds r16, UCSR0A         ; Wait until bit UDRE0 will be set in UCSROA    
        sbrs r16, UDRE0         ; register and UDR0 will be ready to send byte. 
        rjmp 1b
мой сверхинтеллект сделал так :
Assembler
1
2
3
1:      ldi r16, UCSR0A         ; Wait until bit UDRE0 will be set in UCSROA    
        sbrc r16, UDRE0         ; register and UDR0 will be ready to send byte. 
        rjmp 1b
Параллельно прерывание TIM_0VF мигало светодиодиком, а от количества nop'ов выше sts UDR0, r16 зависело качество выводимого текста. (Зря систему контроля версия тут не использовал, такой шедевр потерял.)

Цитата Сообщение от Dushevny Посмотреть сообщение
https://ftp.gnu.org/old-gnu/Ma... as_7.html
Тут не всё работает с avr-gcc. Вот тут больше похоже на правду. К сожалению, нет примеров с обращением к выделенной памяти.

Вернуться к обсуждению:
avr-gcc, ассемблер, директивы резервирования инициализированной памяти ATmega AVR
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2024, 20:08
Готовые ответы и решения:

Ассемблер AVR-AS из AVR-GCC
Помогите начать программировать на этом ассемблере. Интересует: - подробное описание...

Директивы резервирования памяти
При компиляции следующей строчки ассемблер выдает ошибку (ну оно и понятно, число превышает байт):...

Сколько байт памяти будут распределены после выполнения заданной директивы языка ассемблер
Здраствуйте, нужна ваша помощь в следующих заданиях: Сколько байт памяти будут распределены после...

STM8 после AVR с AVR-GCC
Привет! В процессе знакомства с STM8 накопились мелкие вопросы, ответы на которые пока не нашел:...

Уничтожение объектов в инициализированной памяти. sed::allocator
Есть данный код: #include "pch.h" #include <iostream> #include <memory> using namespace...

30
23.10.2024, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2024, 20:08
Помогаю со студенческими работами здесь

Gcc-avr
Здравствуйте. Прочитал немного про компиляторы, и решил написать программу, которая будет из...

Не работает ассемблер под GCC
сначала я долго искал как включить ассемблерный код в c++ под g++. (В boland это было крайне...

GCC-AVR Linux
Вот такая констукция #asm .equ __y2s_port=0?12 ;PORTD .equ __sda_bit=0 .equ __scl_bit=1...

компиляция avr-gcc
Народ подскажите как компилировать проекты написанные с помощью LUFA. 1 из командной строки. 2 из...

Запуск avr-gcc из notepad++
Всем привет. Нужна помощь. Как запустить компилятор avr-gсс из notepad++. Установил плагин NppExec...

АЦП -- реализация на С (avr-gcc)
Хочется но не могится тупо опросить 4 входных канала и записать в переменные Все исходники...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru