Ср фев 09, 2022 23:50:58
Вс фев 13, 2022 17:31:58
Ср фев 23, 2022 16:29:31
Чт фев 24, 2022 19:24:30
#define F_CPU 24000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
_PROTECTED_WRITE (CLKCTRL.OSCHFCTRLA, CLKCTRL_FRQSEL_24M_gc); //Установка частоты
PORTC.DIR= PIN6_bm; //Порт 6 на выход
while (1)
{
PORTC.OUT|= PIN6_bm; //Установка на порте 6 лог.1
_delay_ms(1000);
PORTC.OUT&=~PIN6_bm; //Установка на порте 6 лог.0
_delay_ms(1000);
}
}
PORTC.DIRSET= PIN6_bm;
while (1)
{
PORTC.OUTSET= PIN6_bm;
_delay_ms(1000);
PORTC.OUTCLR=PIN6_bm;
_delay_ms(1000);
}
PORTC.DIRSET= PIN6_bm;
while (1)
{
PORTC.OUTTGL= PIN6_bm;
_delay_ms(1000);
}
Сб фев 26, 2022 10:43:42
Вс фев 27, 2022 12:00:09
Вс фев 27, 2022 12:28:35
Пн фев 28, 2022 16:22:05
#define F_CPU 24000000UL
#define USART1_BAUD_RATE(BAUD_RATE) ((float)(64 * F_CPU / (16 * (float)BAUD_RATE)) + 0.5)
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
static int uart_putchar(char c, FILE *stream);
static int uart_getchar(FILE *stream);
static FILE mystd = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW); //Поток
int main(void)
{
_PROTECTED_WRITE (CLKCTRL.OSCHFCTRLA, CLKCTRL_FRQSEL_24M_gc); //Настройка частоты кварца
PORTC.DIRSET = PIN0_bm; /* set pin 0 of PORT C (TXd) as output*/
PORTC.DIRCLR = PIN1_bm; /* set pin 1 of PORT C (RXd) as input*/
USART1.BAUD = (uint16_t)(USART1_BAUD_RATE(9600)); //Задаем скорость
USART1.CTRLC = USART_CHSIZE_8BIT_gc|USART_SBMODE_2BIT_gc; //Формат: 8Бит, 2 Стоп кадра
USART1.CTRLB = USART_TXEN_bm|USART_RXEN_bm; //Включить Передатчик и приемник.
stdout=&mystd;
stdin=&mystd;
while (1)
{
if (USART1.STATUS & USART_RXCIF_bm) //Проверяем наличие данных
{
char str[80];
scanf("%s", str); //Читаем данные
printf("%s\n", str); //Печатаем то что прочитали
}
//printf("Hello World!\n");
}
}
static int uart_putchar(char c, FILE *stream) //отправка данных по USART
{
if (c == '\n') uart_putchar('\r', stream);
while(!(USART1.STATUS & USART_DREIF_bm));
USART1.TXDATAL=c;
return 0;
}
static int uart_getchar(FILE *stream) //чтение данных по USART
{
while(!(USART1.STATUS & USART_RXCIF_bm));
return USART1.RXDATAL;
}
Сб мар 05, 2022 18:58:15
Вс мар 06, 2022 18:56:47
#define F_CPU 24000000UL //Частота МК
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
_PROTECTED_WRITE (CLKCTRL.OSCHFCTRLA, CLKCTRL_FRQSEL_24M_gc); //Настройка частоты МК
PORTC.DIRSET= PIN6_bm; //Пин Светодиода
RTC.CLKSEL = RTC_CLKSEL_OSC32K_gc; //Тактирование от внутреннего кварца 32к
RTC.INTCTRL=RTC_OVF_bm; //Прерывание при переполнении
RTC.CTRLA=RTC_RTCEN_bm; //Включить Таймер
RTC.PER = 0x8000; //Совпадение и сброс 0x8000=32768Hz
sei(); //Разрешить прерывание
while (1){}
}
ISR(RTC_CNT_vect)
{
PORTC.OUTTGL= PIN6_bm; //Инвертировать пин светодиода
RTC.INTFLAGS = RTC_OVF_bm; //Сбросить флаг прерывания
}
#define F_CPU 24000000UL //Частота МК
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
_PROTECTED_WRITE (CLKCTRL.OSCHFCTRLA, CLKCTRL_FRQSEL_24M_gc); //Настройка частоты МК
PORTC.DIRSET= PIN6_bm; //Пин Светодиода
RTC.CLKSEL = RTC_CLKSEL_OSC32K_gc; //Тактирование от внутреннего кварца 32к
RTC.PITCTRLA=RTC_PITEN_bm|RTC_PRESCALER_DIV16384_gc; //Включить PIT + Каждые 16384 такта
RTC.PITINTCTRL=RTC_PI_bm; //Включить прерывания PIT
sei(); //Разрешить прерывание
while (1){}
}
ISR(RTC_PIT_vect)
{
PORTC.OUTTGL= PIN6_bm; //Инвертировать пин светодиода
RTC.PITINTFLAGS = RTC_PI_bm; //Сбросить флаг прерывания
}
Чт май 19, 2022 14:43:22
Пт сен 22, 2023 22:31:00
Вт сен 26, 2023 19:53:09
Вс окт 08, 2023 21:39:14