Перейти к содержанию

Написать простенькую программу формирующую на выходе определенный импульс


Рекомендуемые сообщения

Реализовать простую программу для микроконтроллера ATiny2313a которая на выходе формирует импульс 9600ГЦ. (То есть с использованием таймеров, прерываний). желательно на ассемблере, но можно и на Си.

 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Заманчивое предложение

1 час назад, vyachic007 сказал:

То есть с использованием таймеров, прерываний

возможно вполне достаточно ШИМ (нужно посчитать).

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Крутить гайку. Варить уголок. Варить холодец. Красить забор. Полоть грядку. Инфинитивов накидать можно много. О, накидать инфинитивов. Понаписать причастных оборотов. Прыгнуть на два метра вверх и на четыре в длину. Поймать воробья и скормить ему тюльпан.

Что за бред порой пишут люди...

Ссылка на комментарий
Поделиться на другие сайты

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

2 часа назад, vyachic007 сказал:

Реализовать простую программу

Так что? Помогите реализовать, нужно за меня реализовать, подскажите как реализовать??
"Барыня лягли и просють..."
Вас что в школе, дома, на улице никто не учил диалог вести. 

Изменено пользователем korsaj
Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, korsaj сказал:

в школе, дома, на улице никто не учил диалог вести. 

Это телефонный СМС-очный диалог, короткий как выстрел. Не предназначен для передачи информации, но так любим поколением, рожденным с телефоном в руках.:)

Ссылка на комментарий
Поделиться на другие сайты

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

11 часов назад, vyachic007 сказал:

если что

 

Ссылка на комментарий
Поделиться на другие сайты

@vyachic007 что значит импульс 9600гц? В герцах измеряется частота, а длина импульса измеряется в секундах (миллисекундах, микросекундах). Вам нужен единичный импульс или частота? Какие условия по которым генерируется импульс или частота, нажатие кнопки, через определённое время или ещё какие-то?

Ссылка на комментарий
Поделиться на другие сайты

18 часов назад, vyachic007 сказал:

для микроконтроллера ATiny2313a которая на выходе формирует импульс 9600ГЦ. (То есть с использованием таймеров, прерываний).

Pulse_9600Hz.hex

Импульсы на выводе PD6. МК тактируется на частоте 1 МГц от внутреннего генератора, потому точность ещё та... при использовании кварца результат улучшится...  

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Огонёк сказал:

это же в два раза длиннее программа будет.

А вот и нет.

3 часа назад, Огонёк сказал:
10 сформировать на выходе импульс 9600ГЦ с помощью таймера
20 GOTO 10

:)

 

Ссылка на комментарий
Поделиться на другие сайты

Ответ ИИ

Цитата

 

Monica
Понял, вот пример простой программы на ассемблере для ATtiny2313a, которая генерирует импульс с частотой 9600 Гц:

ini
Копировать
.include "tn2313def.inc"

.org 0x00
    rjmp RESET        ; Reset Handler

.org OC1Aaddr
TIMER1_COMPA_vect:
    ; Код прерывания
    ldi r16, 1        ; Установка значения выходного порта
    out PORTB, r16     ; Вывод импульса на порт
    reti              ; Возврат из прерывания

RESET:
    ldi r16, low(RAMEND)  ; Инициализация стека
    out SPL, r16
    ldi r16, high(RAMEND)
    out SPH, r16

    ; Настройка таймера 1
    ldi r16, 0b00000101  ; Делитель частоты = 1024
    out TCCR1B, r16
    ldi r16, (1<<COM1A0) ; Установка генерации выхода на OC1A
    out TCCR1A, r16
    ldi r16, (1<<OCIE1A) ; Разрешение прерывания по совпадению A
    out TIMSK, r16
    ldi r16, low(F_CPU / 1024 / 9600) ; Загрузка счетчика
    out OCR1AL, r16
    ldi r16, high(F_CPU / 1024 / 9600)
    out OCR1AH, r16

MAIN_LOOP:
    rjmp MAIN_LOOP     ; Бесконечный цикл
Здесь мы использовали таймер 1 и прерывание по совпадению. На каждое срабатывание прерывания мы меняем состояние выходного порта, тем самым формируя импульс с частотой 9600 Гц.

Обратите внимание, что для определения правильного значения регистра OCR1A нам необходимо знать значение частоты микроконтроллера (F_CPU), в данном примере предполагается, что F_CPU = 8 МГц.

Если вам удобнее использовать C, то вот пример кода на языке C:

c
Копировать
#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 8000000UL // Частота микроконтроллера

int main(void) {
    // Настройка таймера 1
    TCCR1B = (1 << CS12) | (1 << CS10); // Делитель частоты = 1024
    TCCR1A = (1 << COM1A0); // Установка генерации выхода на OC1A
    OCR1A = F_CPU / 1024 / 9600; // Загрузка счетчика
    TIMSK = (1 << OCIE1A); // Разрешение прерывания по совпадению A

    // Разрешение прерываний
    sei();

    while (1) {
        // Бесконечный цикл
    }
}

// Обработчик прерывания по совпадению таймера 1
ISR(TIMER1_COMPA_vect) {
    PORTB ^= (1 << PB0); // Изменение состояния порта PB0
}
Данная программа на C делает то же самое, что и предыдущая версия на ассемблере. Основные отличия - использование библиотек AVR и обработчика прерываний с помощью ISR.

 

 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Boris U сказал:

ldi r16, 1        ; Установка значения выходного порта
    out PORTB, r16     ; Вывод импульса на порт

Верх полета мысли интеллекта (бывает не только у ИИ но и у ПИ).

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...