IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Разработка микропроцессорного модуля, Модуль для ввода и обработки сигналов
сообщение
Сообщение #1


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Может, у кого есть подобная программка на асемблере:
Разработать микропроцессорный модуль ввода и обработки сигналов с двигателя, имеющий следующие входные параметры:
1. Напряжение с термодатчика сопротивления от -1 до +1 В.
2. Частота вращения вала – 5000 об/мин
3. Точность преобразования сигнала аналогового сигнала 0.01%.
4. Точность преобразования сигнала 0.0001%.
5. Точность срабатывания контроллера при перегрузке двигателя - +\-0.05%
6. Индикация выхода – параметры указанные выше и индикатор аварии с возможностью автоматизированного выключения питания двигателя.
Или может, что не будь простенькое подобное?



--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


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


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Мало данных. Да и те что есть неинтерпретируемы. Чем отличается "сигнал" от "сигнала аналогового сигнала"? smile.gif Что такое "термодатчик сопротивления"? На какой архитектуре должен быть построен модуль? Как организован обмен со внешними устройствами? Или это совсем абстрактный модуль, в котром можно обойтись процедурами-заглушками, имитирующими выборку данных с АЦП и вывод на дисплей?


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Вообще я неправильно выразился. Мне надо написать программку для AVR микроконтроллера модель 2313. Всю эту модель надо прогнать в проге AVR Studio. Суть задания не во входных и выходных показаниях, а отображения самого процесса. У меня есть уже два написанных модуля для ввода данных с входа и вывода их на семисегментный индикатор, они работаю независимо друг от друга и надо их связать, а вот как? И цель задания, следующая если всё правильно, то я могу вручную задать значения двоичных сигналов на входе и автоматически получу соответствующие десятичные значения на выходе.
Для выхода:
Код

.include "2313def.inc"
    LDI R16, 0b00001000;
DIND:clr r30;
    ser r31;
    out DDRB, R31;
    out PORTB,r30;
    LSR R16;
    BRCC M1;
    LDI R16, 0b00001000;
    MOV R0,R4;
M1: SBRC R16,2;
    MOV R0,R3;
    SBRC R16,1;
    MOV R0,R2;
    SBRC R16,0;
    MOV R0,R1;

INR0: ldi r30,low(tab0);
    ldi r31,high(tab0);
    lsl r30;
    rol r31;
    add r30,r0;
    clr r0;
    adc r31,r0;
    lpm;
    out PORTD, r16;
    out PORTB, r0;
    
    RJMP DIND
TAB0: .DB 0b00111111, 0b00010010, 0b01011011, 0b01001111, 0b01110010, 0b01111001, 0b01111101, 0b00000111, 0b01111111, 0b01101111;
.exit


Для входа:
Код

.include "2313def.inc"
    LDI R16, 0xdf;
    STS 0x5d, R16;
    LDI R16, 0b11110111;
    out PORTD, r16;
    LDI R16, 0x0F;
    out DDRD, R16;
    ser r16;
    out DDRB, R16;

DIND:clr r16;
    rcall k0;
    out PORTB, r16;
    in r16, PORTD;
    LSR R16;
    BRCS M1;
    LDI R16, 0b11110111;
    MOV R0, R4;
M1: SBRC R16, 2;
    MOV R0,R3;
    SBRC R16, 1;
    MOV R0, R2;
    SBRC R16, 0;
    MOV R0, R1;
    RCALL INR0;
    out PORTD, r16;
    out PORTB, r0;
    RJMP DIND

INR0:ldi r30,low(tab0);
    ldi r31,high(tab0);
    rcall k0;
    rol r31;
    add r30, r0;
    clr r0;
    adc r31, r0;
    lpm;
    RET;

k0: rcall k1;
    ret;

TAB0: .DB 0b00111111, 0b00010010, 0b01011011,0b01001111, 0b01110010, 0b01111001, 0b01111101, 0b00000111, 0b01111111, 0b01101111;
k1: ret;
.exit



--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Узнал более конкретно задание: нужна прога на любой AVR контроллер со встроенным АЦП (но желательно модели 2313), что она преобразовала аналоговый сигнал с датчика температуры измеряемой в Кельвинах (температура в Кельвинах 0 Цельсия=273 Кельвина = 2,73Вольта, 100 Цельсия =373Лельвина= 3,73 Вольта), и выдавалась в десятичном виде на семисегментный индикатор. Модель термодатчика и индикатора не имеет значения. Микроконтроллер то же можно любой, но AVR. Прога, как я понимаю, состоит из двух частей, преобразовать сигнал из аналогового в цифровой и вывести на индикатор в десятичном виде. Любой пример похожего задания то же пойдет. Нужна просто прога на ассемблере для отображения самого хода процесса на AVR Studio.


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


2313 не бывает со встроенным АЦП. Подойдёт ATmega8 или ATtiny26. Программа должна быть именно на ассемблере? Или можно на Си?

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Цитата
2313 не бывает со встроенным АЦП. Подойдёт ATmega8 или ATtiny26. Программа должна быть именно на ассемблере? Или можно на Си?


А это AVR’овские микроконтроллеры? Лучше конечно на ассемблере, но, наверное, и на Си пойдет.
С датчиком температуры понятно, что чем выше идет напряжение, тем выше температура, а вот для датчика частоты вращения, что надо и какой принцип работы будет с ним?
Если использовать цифровые датчики (есть такие модели?), то АЦП не нужен будет и тогда, можно будет использовать 2313?

Сообщение отредактировано: Atreides -


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Вот firmware простого термометра (рабочий - прямо сейчас показывает 300.5 К smile.gif). Микроконтроллер - ATtiny26L-8 @ 1MHz (Atmel), дисплей - MT-10T7-7 (МЭЛТ), датчик температуры - LM335 (TI, аналоговый).
Прикрепленный файл  firmware2.zip ( 2.09 килобайт ) Кол-во скачиваний: 380



Цитата
для датчика частоты вращения, что надо и какой принцип работы будет с ним?

Датчик оборотов - стробоскоп или датчик Холла - просто генерирует импульс (несколько импульсов) на каждый оборот вала двигателя. Достаточно посчитать количество импульсов за единицу времени.



--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 20:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name