Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Сообщения без ответов | Активные темы
Страница 412 из 414
[ Сообщений: 8273 ]
... , , , , ,
Автор
Сообщение
stepan_31
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2021 10:09:52
Зарегистрирован: Пн сен 06, 2021 18:48:17Сообщений: 5
Рейтинг сообщения: 0
Доброго времени суток. Помогите адоптировать кусочек кода под CodeVision.
Начну из далека. На сайте есть проэкт "БП с микроконтроллерным управлением и регулировкой параметров при помощи энкодера." есть исходники написаные в CodeVision.Используется экранчик bc1602. А мне бы хотелось в этом пролэкте использовать графический lcd на на st7567.....нашол код под него но он написан в avr studio .
В CodeVision он не работает.....компилируется и т.д но экран не реагирует.......
Кто подскажет где собака зарыта?
avr studio
Спойлер Код:
#define F_CPU 8000000UL // объявляем частоту процессора #include <avr/io.h> #include <util/delay.h> #include <avr/pgmspace.h> //#include "btg13264.h" #define LCDPORT PORTC // #define CS PC0 // #define RES PC1 // #define DC PC2 // #define CLK PC3 // #define SDA PC4 // #define LCD_bias_set 0b10100010 // #define ADC_select 0b10100000 // #define COM_out_mode 0b11001000 // #define V_sel 0b00100101 // #define VOL_set 0b10000001 // #define COLUMN_adr_set 0b00011011 // #define POWER_set 0b00101111 // #define START_line_set 0b01000000 // #define PAGE_adr_set 0b10110000 // #define COLUMN_adr_up 0b00010000 // #define COLUMN_adr_lo 0b00000000 // void CpuInit(void) { DDRC=0xFF; PORTC=0b11111111; } void LcdSend(char byte, char data ) // { if(data) LCDPORT |=(1 << DC); else LCDPORT &= ~(1 << DC); LCDPORT |= (1 << CLK); // SPI_MODE = 1 LCDPORT &= ~(1 << CS); // Chip Select - Enable char i; for(i=0; i<8; i++) { if (byte & 0x80) { LCDPORT |= (1 << SDA); } else { LCDPORT &= ~(1 << SDA); } LCDPORT &= ~(1 << CLK); byte <<= 1; LCDPORT |= (1 << CLK); } LCDPORT |= (1 << CS); // Chip Select - Disable LCDPORT |= (1 << CLK); // SPI_MODE = 1 } void LcdInit(void) { LCDPORT &= ~(1 << CS); LCDPORT &= ~(1 << RES); LCDPORT &= ~(1 << DC); _delay_us(40); LCDPORT |= (1 << RES); LCDPORT &= ~(1 << RES); _delay_us(10); LCDPORT |= (1 << RES); LcdSend(LCD_bias_set, 0); LcdSend(ADC_select, 0); LcdSend(COM_out_mode, 0); LcdSend(V_sel, 0); LcdSend(VOL_set, 0); LcdSend(COLUMN_adr_set, 0); LcdSend(POWER_set, 0); } void LcdOn(void) { LcdSend(0b10101111, 0); } void LcdGoToXYSym(char x, char y)//переход на знакоместо (1-22, 1-8) { if(0<<y<=8) LcdSend(PAGE_adr_set | (y-1), 0); if(0<<x<=22){ x=(x-1)*6; LcdSend((COLUMN_adr_up | (x >> 4)), 0); LcdSend((COLUMN_adr_lo | (x & 0b00001111)), 0); } } void LcdClear(void) { LcdSend(START_line_set, 0); for(char num=1; num<=8; num++){ LcdGoToXYSym(1, num); for(char i=0; i < 132; i++ ){ LcdSend(0x00, 1); } } } int main(void) { CpuInit(); LcdInit(); LcdClear(); LcdOn(); while (1) { LcdGoToXYSym(3, 3); LcdSend(0x07, 1); LcdSend(0x08, 1); LcdSend(0x70, 1); LcdSend(0x08, 1); LcdSend(0x07, 1); LcdSend(0x00, 1); _delay_ms(500); } }
CodeVision
Спойлер Код:
#include <mega8.h> #include <io.h> #include <delay.h> //#include <avr/pgmspace.h> //#include "btg13264.h" #define LCDPORT PORTC // #define CS PORTC.0 // #define RES PORTC.1 // #define DC PORTC.2 // #define CLK PORTC.3 // #define SDA PORTC.4 #define LCD_bias_set 0b10100010 // #define ADC_select 0b10100000 // #define COM_out_mode 0b11001000 // #define V_sel 0b00100101 // #define VOL_set 0b10000001 // #define COLUMN_adr_set 0b00011011 // #define POWER_set 0b00101111 // #define START_line_set 0b01000000 // #define PAGE_adr_set 0b10110000 // #define COLUMN_adr_up 0b00010000 // #define COLUMN_adr_lo 0b00000000 // void CpuInit(void) { DDRC=0xFF; PORTC=0b11111111; } void LcdSend(char byte, char data ) // { char i; if(data) LCDPORT |=(1 << DC); else LCDPORT &= ~(1 << DC); LCDPORT |= (1 << CLK); // SPI_MODE = 1 LCDPORT &= ~(1 << CS); // Chip Select - Enable for(i=0; i<8; i++) { if (byte & 0x80) { LCDPORT |= (1 << SDA); } else { LCDPORT &= ~(1 << SDA); } LCDPORT &= ~(1 << CLK); byte <<= 1; LCDPORT |= (1 << CLK); } LCDPORT |= (1 << CS); // Chip Select - Disable LCDPORT |= (1 << CLK); // SPI_MODE = 1 } void LcdInit(void) { LCDPORT &= ~(1 << CS); LCDPORT &= ~(1 << RES); LCDPORT &= ~(1 << DC); delay_us(40); LCDPORT |= (1 << RES); LCDPORT &= ~(1 << RES); delay_us(10); LCDPORT |= (1 << RES); LcdSend(LCD_bias_set, 0); LcdSend(ADC_select, 0); LcdSend(COM_out_mode, 0); LcdSend(V_sel, 0); LcdSend(VOL_set, 0); LcdSend(COLUMN_adr_set, 0); LcdSend(POWER_set, 0); } void LcdOn(void) { LcdSend(0b10101111, 0); } void LcdGoToXYSym(char x, char y)//переход на знакоместо (1-22, 1-8) { if(0<<y<=8) LcdSend(PAGE_adr_set | (y-1), 0); if(0<<x<=22){ x=(x-1)*6; LcdSend((COLUMN_adr_up | (x >> 4)), 0); LcdSend((COLUMN_adr_lo | (x & 0b00001111)), 0); } } void LcdClear(void) { char num; char i; LcdSend(START_line_set, 0); for(num=1; num<=8; num++){ LcdGoToXYSym(1, num); for(i=0; i < 132; i++ ){ LcdSend(0x00, 1); } } } void main(void) { CpuInit(); LcdInit(); LcdClear(); LcdOn(); while (1) { LcdGoToXYSym(3, 3); LcdSend(0x07, 1); LcdSend(0x08, 1); LcdSend(0x70, 1); LcdSend(0x08, 1); LcdSend(0x07, 1); LcdSend(0x00, 1); delay_ms(500); } }
Вернуться наверх
Реклама
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 13:17:20
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Здравствуйте. Сделал библиотеку как в прилагаемой статье. С файлами *.lib и *.h
Для того что бы понять смысл как работают библиотеки.
https://mega-avr.ucoz.ru/publ/create_li ... r/1-1-0-12 И знаете. Не работает. CVAVR ругается на PORTD. Словно не знает что это такое. Хотя объявлено в #include <mega8535.h> всё порты. Что не так то бл...
Вернуться наверх
Реклама
Reflector
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 13:21:10
Поставщик валерьянки для Кота
Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03Сообщений: 2090
Рейтинг сообщения: 0
CVAVR ругается на PORTD. Словно не знает что это такое.
Просто на PORTD или записи типа:
Код:
PORTD.0=1;
А стоп, все правильно, это же CVAVR такое понимает, а все остальные компиляторы нет...
Вернуться наверх
Реклама
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 13:23:03
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Вернуться наверх
Реклама
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Подробнее>>
roman.com
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 14:28:13
Зарегистрирован: Вт мар 13, 2012 12:16:13Сообщений: 6892Откуда: .ru
Рейтинг сообщения: 0
я настраиваю порты в главной программе... а библиотеки отдельно)) //////////////////////////////////////////////////////////////////////////////// void main(void) { /////////////////////////////////////////////// SPI (мастер) DDRB.5=1; // выход SCK PORTB.5=0; // выход SCK DDRB.4=0; // вход MISO PORTB.4=0; // вход MISO DDRB.3=1; // выход MOSI PORTB.3=0; // выход MOSI ... ... ... у меня не ругается))
Вернуться наверх
Реклама
Реклама
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подробнее>>
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 16:44:00
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Ну на другие разные библиотеки он же не ругается?
Вернуться наверх
Реклама
roman.com
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 13, 2022 17:13:46
Зарегистрирован: Вт мар 13, 2012 12:16:13Сообщений: 6892Откуда: .ru
Рейтинг сообщения: 0
не знаю... я вообще не использую библиотеки)) раньше писал... потом передумал)) не удобно бегать по библиотекам... лучше всё в одной программе void main(void) написать и всё))
Вернуться наверх
Реклама
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 14, 2022 15:27:36
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Напомните как передать значение в функцию. Я делаю функцию USART_initialization (9600) ; Вместо 9600 можно влепить int с другими значениями. Внутри функции расчёт по формуле и подстановка в регистр
Вернуться наверх
Реклама
ARV
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 14, 2022 15:32:45
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
mixon46 писал(а):
Напомните как передать значение в функцию
дык вот прямо так и передать, как вы сами и написали:
mixon46 писал(а):
USART_initialization(9600) ;
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
Реклама
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 14, 2022 15:36:09
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
void USART_initialization(int) Пишу так. А он мне слишком мало аргументов.
Вернуться наверх
ARV
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 14, 2022 15:40:13
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
mixon46 писал(а):
void USART_initialization(int)
так можно только описать функцию, а реализовать её надо с параметром типа int:
Код:
void USART_initialization(int baud){ if(baud == 9600){ /* или что там надо */ } }
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 14, 2022 15:45:22
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Не хочет. Пишет мало аргументов
Вернуться наверх
roman.com
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт фев 15, 2022 00:56:02
Зарегистрирован: Вт мар 13, 2012 12:16:13Сообщений: 6892Откуда: .ru
Рейтинг сообщения: 0
каких аргументов...
рабочий пример АЦП
////////////////////////////////// АЦП:
void adc(unsigned char adc_input)
{
ADMUX = 0b01000000 | adc_input; // опорное AVCC // канал ADC0...ADC7
delay_us(10);
ADCSRA|=0b01000000;
while (ADCSRA & 0b01000000);
}
////////////////////////////////// вызов функции АЦП:
adc(5); // канал ADC 5
//////////////////////////////////
Вернуться наверх
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт фев 15, 2022 12:30:52
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Разобрался уже. Я тут библиотеку пишу для работы с uart. Пока только uart_initialization написал. Надо ещё функции добавить для отправки и считывания
Вернуться наверх
ARV
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт фев 15, 2022 13:41:01
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
мне вообще не понятно, зачем для кодвижна писать свою библиотеку UART, если там своя встроенная есть.
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт фев 15, 2022 18:48:15
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Вернуться наверх
roman.com
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 16, 2022 11:31:29
Зарегистрирован: Вт мар 13, 2012 12:16:13Сообщений: 6892Откуда: .ru
Рейтинг сообщения: 0
mixon46 писал(а):
Я тут библиотеку пишу для работы с uart.
зачем ?
mixon46 писал(а):
Надо ещё функции добавить для отправки и считывания
какие ?
Зачем это всё ? И как это всё должно работать ?
Вернуться наверх
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 16, 2022 12:06:29
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
В общем разобрался. Переоткрыл проект. Но теперь другая проблема. Он ругается на мою функцию. Пишет declaration syntax error. В чем проблема может быть? В общем смотрите. Есть заголовочный файлСпойлер #ifndef _UART32U4_H_ #define _UART32U4_H_ //эта деректива запрещает компилятору выдавать предупреждения о том, что функция объявлена, но в программе не используется #pragma used+ //прототипы функций void uart (unsigned int long BAUD); #pragma used- //эта деректива разрешает компилятору выдавать предупреждения о том, что функция объявлена, но в программе не используется //подключение библиотечного файла name.lib #pragma library uart32u4.lib #endif [/spoiler далее идет файл реализации [spoiler]#include <mega32u4.h> #define CLOK 16000000 unsigned int CLOKtemp = 0; void uart (unsigned int long BAUD) { #asm ("sei"); UCSR1A=(0<<RXC1)|(0<<TXC1)|(0<<UDRE1)|(0<<FE1)|(0<<DOR1)|(0<<UPE1)|(0<<U2X1)|(0<<MPCM1); //RXC1- ФЛАГ ЗАВЕРШЕНИЯ ПРИЕМА //TXC1- ФЛАГ ЗАВЕРШЕНИЯ ПЕРЕДАЧИ //UDRE1 - ФЛАГ ОСВОБОЖДЕНИЯ РЕГИСТРА ДАННЫХ //FE1 - ОШИБКА ПОСЫЛКИ //DOR1 - ФЛАГ ПЕРЕПОЛНЕНИЯ ДАННЫХ //UPE1 - ОШИБКА ПАРИТЕТА //U2X1 - УДВОЕНИЕ СКОРОСТИ СВЯЗИ //MPCM1 - РЕЖИМ МНОГОПРОЦЕССОРНОЙ СВЯЗИ UCSR1B=(1<<RXCIE1)|(0<<TXCIE1)|(0<<UDRIE1)|(1<<RXEN1)|(1<<TXEN1)|(0<<UCSZ12)|(0<<RXB81)|(0<<TXB81); //RXCIE1 - РАЗРЕШАЕТ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИЮ ПРИЕМА //TXCIE1 - РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИЮ ПЕРЕДАЧИ //UDRIE1 - РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ ПО ОСВОБОЖДЕНИЮ РЕГИСТРА ДАННЫХ //RXEN1 - РАЗРЕШЕНИЕ РАБОТЫ ПРИЕМНИКА //TXEN1 - РАЗРЕШЕНИЕ РАБОТЫ ПЕРЕДАТЧИКА //UCSZ12 - ФОРМАТ ДАННЫХ //RXB81 - ЗНАЧЕНИЕ 8 РАЗРЯДА ПРИНЯТЫХ ДАННЫХ //TXB81 - ЗНАЧЕНИЕ 8 РАЗРЯДА ПЕРЕДАВАЕМЫХ ДАННЫХ UCSR1C=(0<<UMSEL11)|(0<<UMSEL10)|(0<<UPM11)|(0<<UPM10)|(0<<USBS1)|(1<<UCSZ11)|(1<<UCSZ10)|(0<<UCPOL1); //UMSEL11 //UMSEL10 - ЭТИМИ ДВУМЯ БИТАМИ ВЫБИРАЕТСЯ РЕЖИМ РАБОТЫ 00-АСИНХРОННЫЙ 01-СИНХРОННЫЙ 11-МАСТЕР SPI //UPM11 //UPM11 - ЭТИМИ ДВУМЯ БИТАМИ УСТАНАВЛИВАЕТСЯ РЕЖИМ ПАРИТЕТА 00-ОТКЛЮЧЕН 10-ЧЕТНОСТЬ 11-НЕЧЕТНОСТЬ //USBS1 - ФОРМАТ ДАННЫХ (0-1 СТОП БИТ) (1-2 СТОП БИТА) //UCSZ11 //UCSZ10 - ЭТИМИ 3 БИТАМИ НАСТРАИВАЕТСЯ ФОРМАТ ДАННЫХ (000 - 5 БИТ) (001 - 6 БИТ) (010 - 7 БИТ) (011 - 8 БИТ) //UCPOL1 - ПОЛЯРНОСТЬ СИНХРОНИЗАЦИИ (ИСПОЛЬЗУЕТСЯ/РАБОТАЕТ В СИНХРОННОМ РЕЖИМЕ) CLOKtemp = (CLOK / (16*BAUD))-1; //ВЫСЧИТЫВАЕМ ЗНАЧЕНИЕ ДЛЯ СКОРОСТИ РАБОТЫ UART UBRR1L = CLOKtemp & 0xFF; UBRR1H = (CLOKtemp & 0xFF00) >> 8; //РАЗБИВАЕМ CLOKset НА МЛАДШИЙ И СТАРШИЙ РЕГИСТРЫ UBRR1L, UBRR1H } ну а далее я объявляю функцию в программеСпойлер #include <mega32u4.h> #include <uart32u4.h> void main(void) { void uart (9600); while (1) {} ; } и компилятор ругается что я что то не так объявляю. что не так не могу понять
Вернуться наверх
roman.com
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 16, 2022 17:23:14
Зарегистрирован: Вт мар 13, 2012 12:16:13Сообщений: 6892Откуда: .ru
Рейтинг сообщения: 0
я так и не понял... зачем это всё ?
Вернуться наверх
mixon46
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 16, 2022 17:28:25
Говорящий с текстолитом
Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29Сообщений: 1661Откуда: Курск
Рейтинг сообщения: 0
Ну мне интересно как библиотеки работают. Проще же взять готовую функцию. Вставить себе в программу и не вспоминать чего там и какие регистры настраивать
Вернуться наверх
Страница 412 из 414
[ Сообщений: 8273 ]
... , , , , ,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения