ДядяВован Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Прежде чем писать какие либо функции, в т.ч. и про которую сейчас речь, тебе надо на листке бумаги нарисовать некую структуру программы. Кубиками, типа блок схемы, но более "грубо". Потом каждый кубик детализировать, какие в нём будут функции, какие данные будут храниться, в каком формате и где. Какие входные параметры, какие выходные. Тогда станет понятно, что сейчас стоит задача преобразовать hex-string в число, опять таки в hex. Потому что именно эти числа удобно хранить и обрабатывать в МК. А потом тебе один раз понадобится функция преобразования hex числа в dec-string для вывода на индикацию. Ну и т.д. 1 С уважением, Владимир Ссылка на комментарий Поделиться на другие сайты Поделиться
Нэцкэ Опубликовано 28 апреля Поделиться Опубликовано 28 апреля (изменено) @tifaso Не забывай что МК , это не не бортовой капутер на орбитальной станции Вот чем хорош, но трудно изучемый Асемблёр неприкаяный Тем что он учит общатся с МК на том языке который понятен ему без пол литры выпитой МК умеет понимать нули иединицы , а нам Человекам все десятично подавай ( на как на блюдечке готовое ) @ДядяВован Вот !!! Наша ошибка начинающих !!! эта штукенция называется Алгоритм Изменено 28 апреля пользователем Нэцкэ 1 У меня есть мысль , и я её думаю ... Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
ДядяВован Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 6 минут назад, tifaso сказал: такую хрень больше не предлагай Я предлагаю тебе реальные вещи, которые как-то могут помочь в этой безнадежной ситуации. А вот ты по большому счету несёшь хрень и чушь! 2 С уважением, Владимир Ссылка на комментарий Поделиться на другие сайты Поделиться
Особенности хранения литиевых аккумуляторов и батареекПотеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
tifaso Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля (изменено) Только что, ДядяВован сказал: А вот ты по большому счету несёшь хрень и чушь! Даже в мыслях не было. У меня всё чётко и по делу. Изменено 28 апреля пользователем tifaso Ссылка на комментарий Поделиться на другие сайты Поделиться
Секреты депассивации литиевых батареек FANSO EVE EnergyСамыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Нэцкэ Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Ну вы ещё подеритесь бравые программеры ... У меня есть мысль , и я её думаю ... Ссылка на комментарий Поделиться на другие сайты Поделиться
donec Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 20 минут назад, tifaso сказал: Да только выводить нужно не на экран, а на семисегментные индикаторы Да подожди ты, все равно вернешься к LCD1602, а лучше 2004, на семисегментниках это извращение. 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Ассемблер tifaso не предлагать!!! Хотя он и обещал его изучить. На Си, говорит, проще. Вот Вам, tifaso, и "проще". Так теперь Вы, мало того, что "кашу из топора" варите (за счет других форумчан), так еще и умудряетесь ножкой топать и всех подгонять с решением Вашего проекта. 33 минуты назад, tifaso сказал: ...проблему то нужно решить. Сколько уже можно тянуть с этим проектом. Сейчас обязательно нужно... 4 Ссылка на комментарий Поделиться на другие сайты Поделиться
tifaso Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля 2 минуты назад, donec сказал: подожди ты, все равно вернешься к LCD1602, а лучше 2004, на семисегментниках это извращение. Нет уж на семисегментных индикаторах проще выводить. Вот сейчас только одна эта проблема с переводом чисел держит, а дальше уже всё как по маслу пойдёт. Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 28 апреля Поделиться Опубликовано 28 апреля @tifaso , никогда не говорите НИКОГДА. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
korsaj Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Нэцкэ Опубликовано 28 апреля Поделиться Опубликовано 28 апреля (изменено) @Геннадий Я и сам хочу на СИ и на Си++ , но Асемблер как строгий сен - сей , его херь проведёшь А все рано заставит усваивать все в нулях и единичках . Зато как в душу и в органы внутрение без ренгена сморишь в МК А дадости то сколько как даже самое простое сотворил на Асемблере то От тепереча tifaso можешь поржать с меня ... У меня радости то как у маленького ребёнка ... Изменено 28 апреля пользователем Нэцкэ У меня есть мысль , и я её думаю ... Ссылка на комментарий Поделиться на другие сайты Поделиться
donec Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 4 минуты назад, tifaso сказал: Вот сейчас только одна эта проблема с переводом чисел держит, а дальше уже всё как по маслу пойдёт. А дальше парсинг строки нужно кому-то сделать, чтоб поразрядно вывести, а дальше знакогенератор для семисегментников должен кто-то сделать и т.д.и т.п. Пока дойдет время до BT201 и желание что-то делать испарится Ссылка на комментарий Поделиться на другие сайты Поделиться
ДядяВован Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 1 минуту назад, tifaso сказал: дальше уже всё как по маслу пойдёт 2 минуты назад, tifaso сказал: Вот сейчас только одна эта проблема с переводом чисел держит Вот мой вопрос к чату гпт, который я тебе советовал воспользоваться: Напиши функцию на Си для ATMega8, которая преобразую строковое число в hex-виде в двухбайтовое целое hex-число. Входящий параметр строка, значение 0 конец строки Возвращает 2-х байтовое число Вот ответный код: #include <avr/io.h> uint16_t hexStringToUInt16(char* hexString) { uint16_t result = 0; int i = 0; while(hexString[i] != '\0') { char currentChar = hexString[i]; if(currentChar >= '0' && currentChar <= '9') { result = (result << 4) | (currentChar - '0'); } else if(currentChar >= 'A' && currentChar <= 'F') { result = (result << 4) | (currentChar - 'A' + 10); } else if(currentChar >= 'a' && currentChar <= 'f') { result = (result << 4) | (currentChar - 'a' + 10); } i++; } return result; } Теперь еще раз расскажи, какую хрень я тебе предложил? 11 минут назад, tifaso сказал: проблема с переводом чисел держит Кстати, не трать время зря. Обычной практикой в программировании является написание dummy function. Всяких шаблонов/заглушек. Ты сейчас напиши временную функцию перевода чисел, которая просто будет возвращать фиксированное число, не занимаясь переводом. И двигайся дальше, программируй другие функции проекта. А к этой заглушке вернешься позже. С приобретением опыта программирования, появятся и мысли как реализовать этот перевод чисел. А может он и не нужен окажется. Не надо неделями сидеть над разработкой одной функции. На данном этапе не получается - делаешь шаблон и идешь дальше. Я снова предлагаю не хрень, веришь? С уважением, Владимир Ссылка на комментарий Поделиться на другие сайты Поделиться
CruelAsm Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Тут нуль-терминированная строка на входе, а у Впринцепи Тифасо массив. Готовьтесь отгребать за неработающий код. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
korsaj Опубликовано 28 апреля Поделиться Опубликовано 28 апреля Та точно, вы решили tefaso в ступор полный ввести. Думаете он знак умножение за что-то другое может воспринять )) 2 часа назад, tifaso сказал: @korsaj У меня вариантов вообще не осталось. Всё что я нашёл уже перепробовал, но ничего не заработало Я вас просил разобраться с таблицей символов, вы хоть как-то пытались вникнуть в мои слова? Ссылка на комментарий Поделиться на другие сайты Поделиться
donec Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 7 минут назад, CruelAsm сказал: Готовьтесь отгребать за неработающий код. Ссылка на комментарий Поделиться на другие сайты Поделиться
ДядяВован Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 14 минут назад, CruelAsm сказал: Готовьтесь отгребать за неработающий код. Мне как-то фиолетово, работающий, неработающий. Пусть другой вопрос натыкает пальчиком в чат, получит другой код. Свой код может тоже туда скопипастить... Для более адекватных ответов. С уважением, Владимир Ссылка на комментарий Поделиться на другие сайты Поделиться
tifaso Опубликовано 28 апреля Автор Поделиться Опубликовано 28 апреля 32 минуты назад, ДядяВован сказал: Кстати, не трать время зря. Обычной практикой в программировании является написание dummy function. Всяких шаблонов/заглушек. Нет так дело не пойдёт. Данный код нужно записать сейчас в первую очередь и только потом дальше без этого работать ничего не будет (я про индикацию на семисегментниках сейчас говорю). Есть у меня ещё одна мысль как можно записать перевод чисел будет время попробую. Ссылка на комментарий Поделиться на другие сайты Поделиться
Огонёк Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 1 час назад, donec сказал: Все расчеты в МК ведутся в hex, Все расчёты в МК ведутся в двоичном формате. Остальное - интерпретация и преобразование. Хранить можно где угодно, делать - аналогично. Любой регистр, любой адрес памяти в полном распоряжении программиста. МК тем и хорош. Лучше всего исполнять это на ассемблере, но и Си тоже даёт возможность развернуться. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
korsaj Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 9 минут назад, tifaso сказал: Есть у меня ещё одна мысль Если вы не хотите разбираться в том на что вам указывают, то остаётся либо найти готовое, либо дождаться. На другое вы не способны. Удачи. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Нэцкэ Опубликовано 28 апреля Поделиться Опубликовано 28 апреля У меня есть мысль , и я её думаю ... Ссылка на комментарий Поделиться на другие сайты Поделиться
korsaj Опубликовано 28 апреля Поделиться Опубликовано 28 апреля @Нэцкэ , tifaso это все до лампочки, не обучаем он. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
ДядяВован Опубликовано 28 апреля Поделиться Опубликовано 28 апреля 55 минут назад, tifaso сказал: Нет так дело не пойдёт Как скажете, профессор. Больше советов не имею. 1 С уважением, Владимир Ссылка на комментарий Поделиться на другие сайты Поделиться
donec Опубликовано 29 апреля Поделиться Опубликовано 29 апреля 16 часов назад, tifaso сказал: Числа от плеера приходят в таком формате 00000C2E long int iii; char text[] = "00000C2E\r\n"; LCD_String(text); LCD_Command(0xC0); // в начало 2-й строки iii = strtol(text, NULL, 16); // это для МК sprintf(str, "%d", iii); // это для экрана LCD_String(str); 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
tifaso Опубликовано 29 апреля Автор Поделиться Опубликовано 29 апреля Ладно тогда попробую всё вместе с народом разобраться ещё раз с дисплеем может здесь что получится по итогу. Со схемой там впринцепи понятно я уже делал ранее схему. На дисплей конечно информации можно больше вытащить, но как я уже говорил ранее проблема в коде. Сейчас ещё раз прошёлся по коду дисплея и выявил и устранил целый ряд ошибок, но однако одна всё же осталась и не понятно чего от меня хочет студия. Я всё же выложу сюда сейчас код по дисплею и скрин ошибки. Думаю вместе можно будет всё же решить эту проблему. Вот скрин непонятной никаким боком ошибки Далее собственно сам код дисплея. Это всё было взято из примера работы с дисплеем. #define MAIN_H_ #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #define LCD_H_ #define LCD_DDR DDRD #define LCD_PORT PORTD #define LCD_PIN PIND #define DATA 0xF0 #define RS PD2 #define E PD3 #define E1 LCD_PORT|=(1<<E) #define E0 LCD_PORT&=~(1<<E) #define RS1 LCD_PORT|=(1<<RS) #define RS0 LCD_PORT&=~(1<<RS) void lcd_ini(void); void lcd_str(char* str); void lcd_pos(uint8_t line, uint8_t pos); void lcd_num(uint8_t num, uint8_t line, uint8_t pos); uint8_t n=0; void write(uint8_t, n) { n<<=4; E1; //линию Е в 1 LCD_PORT&=~DATA; //удалить предыдущую отправку LCD_PORT|=n; //выставить значение на пины управления дата битами asm("nop"); //пропуск такта E0; //линию Е в 0 } void send_byte(uint8_t byte, uint8_t tip) { if (tip) //если тип данные на линии RS 1 { RS1; } else //иначе тип команда и на линии RS 0 { RS0; } write(byte>>4); //передача старшего полубайта write(byte); //передача младшего полубайта } void lcd_ini(void) { LCD_DDR|=DATA | (1<<RS) | (1<<E); _delay_ms(20); RS0; write(3); _delay_ms(5); write(3); _delay_us(150); write(3); _delay_us(50); write(2); _delay_us(50); send_byte(40,0); _delay_us(50); send_byte(12,0); _delay_us(50); send_byte(1,0); _delay_ms(2); send_byte(6,0); _delay_us(50); //send_byte(0b01000001,1); //A //send_byte(0x41,1); //A //send_byte('A',1); lcd_str("count="); lcd_pos(1,2); lcd_str("HOLa Amgos!"); } void lcd_str(char* str) { uint8_t n=0; while(str[n]) { send_byte(str[n],1); n++; } } void lcd_pos(uint8_t line, uint8_t pos) { uint8_t adress=(line*0x40+pos)|0x80; send_byte(adress,0); _delay_us(50); } void lcd_num(uint8_t num, uint8_t line, uint8_t pos) { char buf[4]; utoa(num, buf,10); lcd_pos(line, pos); lcd_str(" "); lcd_pos(line, pos); lcd_str(buf); } int main(void) { lcd_ini(); uint8_t count=0; while(1) { _delay_ms(500); count++; icd_num(count, 0,6); } } Этот код был написан под ATMEGA8. Пока просто нужно запустить сам дисплей и попробовать вывести на него хоть что то. Например какие нибудь символы из этого примера. А далее уже будет понятно как с дисплеем работать. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения