Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
1

Atmega128 и 16

23.04.2020, 23:35. Просмотров 1316. Ответов 20
Метки нет (Все метки)

Добрый день есть программа реализации синуса на atmega16, нужно переделать функции под atmega 128, так же хотелось бы узнать до какого момента формируется синус, т.к. код программы формирует с вершинами отдельными от синуса
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
.include "m16def.inc"
.cseg
.org $01B
rjmp start
rjmp acp
 
start:
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low (RAMEND)
out SPL,r16
ldi r16, 0b00100000
out ADMUX,r16
ldi r16, 0b10011111
out ADCSRA,r16
ldi r16, 0b11111111
out DDRC,r16  
ldi r16, 0
out DDRA,r16 
ldi r16, 0b11110000
out DDRD,r16
ldi r16, 0b01000000
out PORTD,r16
ldi r16,$c0
ldi r17,$40
mov r21,r16
subi r21,$80
ldi r22,$ff
 
 
sei
sbi ADCSRA,ADSC 
m1:
rjmp m1
acp:
clc
in r18,ADCH
mov r20,r18
cp r18,r16
brlo m2 
eor r18,r22
add r18,r21
mov r20,r18  
rjmp m3
m2:
clc
cp r17,r18
brlo m3
mov r20,r17
m3:
cbi PORTD,6
out PORTC,r20
sbi PORTD,7 
cbi PORTD,7 
sbi PORTD,6 
sei
sbi ADCSRA,ADSC 
reti
буду благодарен любой подсказке
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2020, 23:35
Ответы с готовыми решениями:

производство Atmega128
Правда ли что Atmega128 снят с производства? В нигазинах-то их полно.

АЦП Atmega128
По жизненной необходимости столкнулся с МК. Есть куча непоняток. Прошу Вас помочь мне. Необходимо...

ATmega128 PORTF
Не получается настроить PORTF на выход. фуз джитага скинул, режим совместимости с м103 убрал,...

ATmega128 + FatFs
Третий день бьюсь над загадкой, и не выходит каменный цветок. Схему прилагаю. Подключено по SPI...

20
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
23.04.2020, 23:37  [ТС] 2
данный код выдаёт такой вот синус
0
Миниатюры
Atmega128 и 16  
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
24.04.2020, 09:48 3
Это не синус, это бэтмэн. Вам что нужно - синус или что?

Добавлено через 2 минуты
Assembler
1
2
3
sei
sbi ADCSRA,ADSC 
reti
Что за беда?
1
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
24.04.2020, 11:27  [ТС] 4
да, именно синус на atmega 128

Добавлено через 1 минуту
к сожалению по данному коду не смогу дать пояснений, т.к. был не мной написан
0
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
24.04.2020, 11:50 5
Синус формировать с помощью шим или R2R?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
24.04.2020, 11:54  [ТС] 6
с помощью шим
0
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
24.04.2020, 13:50 7
Цитата Сообщение от WarllordD Посмотреть сообщение
любой подсказке
Как вариант использовать вывод ОС2.
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
27.04.2020, 12:23  [ТС] 8
а как в данном случае использовать OC2?
0
27 / 22 / 5
Регистрация: 31.01.2019
Сообщений: 95
28.04.2020, 16:35 9
Цитата Сообщение от WarllordD Посмотреть сообщение
Добрый день есть программа реализации синуса на atmega16
А где же она эта программа?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
28.04.2020, 17:43  [ТС] 10
прикреплена к первому сообщению
0
27 / 22 / 5
Регистрация: 31.01.2019
Сообщений: 95
28.04.2020, 17:45 11
И где же тут синус?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
28.04.2020, 17:50  [ТС] 12
если не ошибаюсь то
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
start:
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low (RAMEND)
out SPL,r16
ldi r16, 0b00100000
out ADMUX,r16
ldi r16, 0b10011111
out ADCSRA,r16
ldi r16, 0b11111111
out DDRC,r16  
ldi r16, 0
out DDRA,r16 
ldi r16, 0b11110000
out DDRD,r16
ldi r16, 0b01000000
out PORTD,r16
ldi r16,$c0
ldi r17,$40
mov r21,r16
subi r21,$80
ldi r22,$ff
а остальной код задаёт другие параметры, но т.к. не силён в этом, точно не могу сказать, а отдельного кода синуса под atmega128 на assembler не нашёл
0
27 / 22 / 5
Регистрация: 31.01.2019
Сообщений: 95
28.04.2020, 17:52 13
Я ничего не понял. Причем тут АЦП?
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
28.04.2020, 18:03  [ТС] 14
это лабораторный макет, есть Генератор сигналов специальной формы и осциллограф , и программируются выходы на лабораторном макете, сам макет как выглядит , вложил в прикрепе
0
Миниатюры
Atmega128 и 16  
27 / 22 / 5
Регистрация: 31.01.2019
Сообщений: 95
28.04.2020, 18:10 15
Схема то стенда есть с вашим МК? (электрическая принципиальная)
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
28.04.2020, 18:17  [ТС] 16
в прикрепе PDF, там в самом конце схема
0
Вложения
Тип файла: pdf Система отладки AVR микроконтроллеров ATmega128.pdf (1.11 Мб, 2 просмотров)
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
20.05.2020, 11:25  [ТС] 17
появился новый код, который моделирует синус частично, может кто знает, что нужно изменить чтобы выдавал модуль синуса
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
.include "m128def.inc"
 
.def    temp1   =   R16
 
.equ    CENTER  =   0x80
 
.cseg
.org 0x0000
    JMP     RESET
.org 0x002A
    JMP     ADC_Conversion_Complete_Handler
 
;Основная программа
.org 0x0046
RESET:
    ;Проинициализируем стек
    ;Необходимо для того, чтобы правильно возвращатся из CALL и прерываний
    LDI     temp1,  high(RAMEND);
    OUT     SPH,    temp1;
    LDI     temp1,  low(RAMEND);
    OUT     SPL,    temp1;
 
    ;Вызовим процедуру инициализации переферии.
    CALL    INIT;
 
    ;Разрешим прерывания.
    SEI;
 
    ;Все происходит в прерывании, поэтому бесконечный цикл ничего не делает (контроллер всегда в ожидании прерываний).
    ;Бесконечный цикл.
    LOOP:
        JMP     LOOP;
 
;Процедура инициализации переферии
INIT:
    ;Проинициализируем ЦАП, т.к. ЦАП внешний, проинициализируем выводы микроконтроллера для работы с микросхемой ЦАПа.
    SER     temp1;
    OUT     DDRA,   temp1;Порт, куда будем выводить данные для ЦАПа. Установим его направление работы на выход.
    ;Установим выход ЦАПа - OUTA, контролируем на XS7
    LDI     temp1,  (1 << PC0);
    OUT     DDRC,   temp1;
    ;DDRG   = (1 << PG0);
    ;При обращении к порту G при помощи "OUT" симулятор ругается, что адрес этого порта находится за пределами действия "OUT"
    ;Поэтому будем обращаться к этому порту как к оперативной памяти через регистровую пару R31:R30 (Z)
    ;Из даташита адрес 0x0064 - адрес DDRG, а адрес 0x0065 - адрес PORTG
    LDI     R30,    0x64;
    LDI     R31,    0x00;
    LDI     temp1,  (1 << PG0);
    ST      Z+,     temp1;Т.к. к DDRG нам больше не понадобится обращаться, что перейдём автоматически на следуюий одрес, он же адрес PORTG
    ;PORTG  = (1 << PG0);
    ST      Z,      temp1;Т.к. нам ещё понадобится обращаться к PORTG, то его адрес оставим в регистровой паре R31:R30 (Z) без изменений
 
    ;Проинициализируем ADC0 (PF0, XS4, АЦП)
    ;Кодключим вход АЦП к PF0, сместим результат влево (будем получать результат в ADCH), подключим внешний источник опорного напряжения
    LDI     temp1,  (1 << ADLAR);       
    OUT     ADMUX,  temp1;
    ;Включим АЦП, запустим преобразование, включим режим FR, включим прерывания от АЦП
    ;В режиме FreeRun нам нет необходимости каждый раз запускать новое преобразование, это происходит автоматически.
    LDI     temp1,  (1 << ADEN) | (1 << ADSC) | (1 << ADFR) | (1 << ADIE);
    OUT     ADCSRA, temp1;
    
    ;Выход из процедуры инициализации переферии
    RET;
 
;Процедура прерывания по завершению преобразования АЦП.
ADC_Conversion_Complete_Handler:
    ;Заберём результат преобразования (достаточно старших 8 бит)
    IN  temp1,  ADCH;
    ;Сравнием результат преобразования со средним уровнем синусоиды (CENTER).
    CPI temp1,  CENTER;
    BRPL    NO_EDIT_temp1;Переходим на NO_EDIT_temp1 и пропустим следующую команду, если (temp1 - CENTER) > 0 (если флаг N = 0).
        LDI     temp1,  CENTER; Если эту команду не пропускаем, то идёт нижная половина синусоиды, и вместо неё в temp1 записываем сдений уровень (CENTER).
    NO_EDIT_temp1:      
    ;Отобразим результат в ЦАП
    OUT     PORTA,  temp1;
    ;Простробируем ЦАП, переводя PG0 в низкий уровень, а затем обратно в высокий.
    ;Таким образом ЦАП сформирует и запомнит установленный нами уровень до следующего его изменения.
    ;PG0 -> lo
    ;Регистровая пара R31:R30 (Z) должна хранить адрес на PORTG
    CLR     temp1;
    ST      Z,      temp1;
    NOP;
    ;PG0 -> hi
    LDI     temp1,  (1 << PG0);
    ST      Z,      temp1;
    RETI;
сейчас выдаёт это
0
Миниатюры
Atmega128 и 16  
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
20.05.2020, 11:26  [ТС] 18
должен выдавать
0
Миниатюры
Atmega128 и 16  
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
20.05.2020, 12:13 19
Я знаю.
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 58
20.05.2020, 12:15  [ТС] 20
если не сложно , можно конкретнее где нужно изменить, чтобы модуль синуса выдавал?
заранее спасибо за ответ
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2020, 12:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Прошить ATMEGA128
Народ, ни разу не работал со 128 и 256 мегами. Все МК с чем приходилось работать, прошивал STK-500...

ESP8266+atmega128
помогите разобраться с модулем wi-fi. отправляю в модуль AT-команды, но не могу сделать нормальный...

atmega128 - фронт
Добрый день есть код программы , делающий таймер по переднему фронту, вопрос заключается в том как...

Внешние прерывания ATMega128
Всем привет. У меня задача такая: есть меиндр с изменяющейся частой и надо замерять время между...

Atmega128 управление ШИМ
Помогите, пожалуйста. Пишу программу на СVAVR. Нужно, что бы по приходу на ногу МК (например на...

Запрограммировал Atmega128. Не работатет...
Здравствуйте! Жил себе спокойно вместе с Atmega16. Захотелось работу с картой памяти. Запаял...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.