Здравствуйте. Нужен совет и если можно с примерами.
Логика задачи такова. Не обходимо реализовать следующую логику в железе. Имеем три блока на микроконтроллерах atmega8 с уникальными ID в каждом из которых установлена кнопка. Передача состояния кнопки осуществляется через интерфейс RS485 компьютеру ...
Найдено 22 результата
- Вт дек 05, 2023 11:36:11
- Форум: Теория
- Тема: Логирование из микроконтроллера в компьютере
- Ответы: 10
- Просмотры: 1408
- Ср ноя 08, 2023 11:13:25
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
На симуляторе работает отлично. Железо уже заказал. Как прибудет, буду тестировать на ней.
- Ср ноя 08, 2023 10:50:42
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4499500#p4499500"]. Осознал, что я зря потратил время...[/uquote]
Почему зря?
Даже не знаю как Вас благодарить. Сейчас применил Ваш код. И он сработал именно так как и ожидалось. Общее количество строк 161. Спасибо Вам огромное за терпение и помощь.
Почему зря?
Даже не знаю как Вас благодарить. Сейчас применил Ваш код. И он сработал именно так как и ожидалось. Общее количество строк 161. Спасибо Вам огромное за терпение и помощь.
- Ср ноя 08, 2023 10:44:48
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
Прикрепил видео работы устройства. http://youtu.be/W4kk08vahJY Здесь функция send(); отрабатывает до однократного мигания светодиода под лейблом "1" после того как отработает "#", затем идут три символа из конструкции switch, после чего работает функция end();
Так же прикрепил немного ...
Так же прикрепил немного ...
- Ср ноя 08, 2023 10:17:07
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4499336#p4499336"]ну, это и есть 1% - я ж досконально не знаю алгоритма...[/uquote]
Как отправить Вм видео файл работы устройства? Вы бы смогли понять алгоритм..
Как отправить Вм видео файл работы устройства? Вы бы смогли понять алгоритм..
- Вт ноя 07, 2023 22:21:06
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4499315#p4499315"]что-то странное и очень много.
Рискну утверждать, что ниже приведенный код из 154 строк эквивалентен начальному на 99%[/uquote]
Проверил Ваш код. При вводе 1012, или 1058 отрабатывает 1 и 0, при вводе 1100 отрабатывает 1 и 1. Два ...
Рискну утверждать, что ниже приведенный код из 154 строк эквивалентен начальному на 99%[/uquote]
Проверил Ваш код. При вводе 1012, или 1058 отрабатывает 1 и 0, при вводе 1100 отрабатывает 1 и 1. Два ...
- Вт ноя 07, 2023 21:21:17
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
Используя Ваши подсказки и советы, за что Вам премного благодарен, немного переписал код и теперь он состоит только из 651 строк против начальных ~2900.:
#define F_CPU 32000000UL // Определение тактовой частоты для функций задержки
#include <inttypes.h> // Библиотека для работы с типами int ...
#define F_CPU 32000000UL // Определение тактовой частоты для функций задержки
#include <inttypes.h> // Библиотека для работы с типами int ...
- Вс ноя 05, 2023 22:03:04
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4498458#p4498458"]если я правильно понял алгоритм, то весь это громадный switch сокращается[/uquote]
Почти да, но в Вашем коде комбинация от 0 до 9. А в моём от 1001 до 1100.
Спасибо за подсказки и советы.
ЗЫ: а вот над этим {
selectKey(arr1[buttons ...
Почти да, но в Вашем коде комбинация от 0 до 9. А в моём от 1001 до 1100.
Спасибо за подсказки и советы.
ЗЫ: а вот над этим {
selectKey(arr1[buttons ...
- Вс ноя 05, 2023 21:18:39
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4498440#p4498440"]эта комбинация как формируется?...[/uquote]
Прикрепил схему.
Функция send(); поочерёдно включает комбинацию светодиодов RES-PRI-TOT-CALL-0-OK-1.
Затем поочередно включает последовательность набранной комбинации с клавиатуры. Оно может ...
Прикрепил схему.
Функция send(); поочерёдно включает комбинацию светодиодов RES-PRI-TOT-CALL-0-OK-1.
Затем поочередно включает последовательность набранной комбинации с клавиатуры. Оно может ...
- Вс ноя 05, 2023 20:55:09
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Re: Оптимизация кода на С, возможно ли для этого кода?
[uquote="Martian",url="/forum/viewtopic.php?p=4498426#p4498426"]...но без алгоритма такую портянку оптимизировать - только за деньги.
..[/uquote]
В этом коде при наборе комбинации от 1001 до 1100 происходит последовательное включение светодиодов в определенном порядке. С начало идёт включение по ...
..[/uquote]
В этом коде при наборе комбинации от 1001 до 1100 происходит последовательное включение светодиодов в определенном порядке. С начало идёт включение по ...
- Вс ноя 05, 2023 20:23:39
- Форум: AVR
- Тема: Оптимизация кода на С, возможно ли для этого кода?
- Ответы: 22
- Просмотры: 5426
Оптимизация кода на С, возможно ли для этого кода?
Всем привет. Можно ли как то оптимизировать и сократить этот код? У кого какие идеи? А то что то громоздкий получился.
#define F_CPU 32000000UL
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include "keyboard.h"
#include "lcd_lib ...
#define F_CPU 32000000UL
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include "keyboard.h"
#include "lcd_lib ...
- Вт окт 17, 2023 17:24:55
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
[uquote="Martian",url="/forum/viewtopic.php?p=4489899#p4489899"] grachevvlad2023 , я решил не передавать пустые ячейки.....[/uquote]
Спасибо что откликнулись и помогли советами. В данное время рисую рабочую схему, затем закажу изготовление плат. Хочу продолжить уже в железе, протеус временами ...
Спасибо что откликнулись и помогли советами. В данное время рисую рабочую схему, затем закажу изготовление плат. Хочу продолжить уже в железе, протеус временами ...
- Пн окт 16, 2023 16:20:09
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
[uquote="Martian",url="/forum/viewtopic.php?p=4489859#p4489859"] OKF , ну, может, глядя на примеры, что-то стронется в голове.[/uquote]
Как то странно работает этот код.
1-2-3-4 не передаётся. только 1-2-3. При первой отправке в терминале 123, При второй отправке 23, При третьей отправке 3, при ...
Как то странно работает этот код.
1-2-3-4 не передаётся. только 1-2-3. При первой отправке в терминале 123, При второй отправке 23, При третьей отправке 3, при ...
- Пн окт 16, 2023 15:31:51
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
[uquote="Martian",url="/forum/viewtopic.php?p=4489832#p4489832"]неправильно.
если пятым нажатием будет какая-то кнопка не "*", будет ошибка.
и будет ошибка при k = 4, так как if(k<5) это значение пропустит, но 4 - это пятый элемент, а массив всего из четырёх. В общем, всё, что писал выше - напрасно ...
если пятым нажатием будет какая-то кнопка не "*", будет ошибка.
и будет ошибка при k = 4, так как if(k<5) это значение пропустит, но 4 - это пятый элемент, а массив всего из четырёх. В общем, всё, что писал выше - напрасно ...
- Пн окт 16, 2023 13:57:40
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
Немного подправил по свету Martian ,
while(1)
{
key = GetKey(); //если зафиксировано нажатие,
if ((key)&&(key!='*'))
{
buttons[k] = key; // сохраняем значение кнопки в массиве
k = k + 1; // увеличиваем счётчик нажатий на 1
}
if(key == '*')
{
if(k<5)
{
for(j=0; j<k; j++)
{
USART ...
while(1)
{
key = GetKey(); //если зафиксировано нажатие,
if ((key)&&(key!='*'))
{
buttons[k] = key; // сохраняем значение кнопки в массиве
k = k + 1; // увеличиваем счётчик нажатий на 1
}
if(key == '*')
{
if(k<5)
{
for(j=0; j<k; j++)
{
USART ...
- Вс окт 15, 2023 19:11:13
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
[uquote="Martian",url="/forum/viewtopic.php?p=4489573#p4489573"]а если пятый раз нажать, что будет со счётчиком и последующей адресацией к массиву? стоит проверить, что счётчик не превышает размерность массива, или изначально не допустить превышения.[/uquote]
Да, столкнулся с проблемой описанный ...
Да, столкнулся с проблемой описанный ...
- Вс окт 15, 2023 17:57:06
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
[uquote="veso74",url="/forum/viewtopic.php?p=4489542#p4489542"]попробуйте
на
[/uquote]
Спасибо. Сработало.
Код: Выделить всё
for(j=0; j<4; j++) ... Код: Выделить всё
for(j=0; j<k; j++) ... Спасибо. Сработало.
- Вс окт 15, 2023 17:17:04
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
Внёс следующие изменения в код:
int main( void )
{
unsigned char key;
char buttons[4]; // массив нажатых кнопок
int k = 0; // счетчик нажатий
int j;
...............
...............
...............
while(1){
//если зафиксировано нажатие,
key = GetKey();
if ((key)&&(key!= '*')){
buttons ...
int main( void )
{
unsigned char key;
char buttons[4]; // массив нажатых кнопок
int k = 0; // счетчик нажатий
int j;
...............
...............
...............
while(1){
//если зафиксировано нажатие,
key = GetKey();
if ((key)&&(key!= '*')){
buttons ...
- Сб окт 14, 2023 19:34:01
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Re: Запись значения нажатой кнопки в массив
Код писал не я, в заголовке указан источник. // Author(s)...: Pashgan http://ChipEnable.Ru
В массиве будет 4 числа.
переменная типа int.
По логике, при нажатии кнопки первый символ должен записаться в массив, при нажатии второй кнопки нужно проверить свободен ли нулевой адрес массива, если нет то ...
В массиве будет 4 числа.
переменная типа int.
По логике, при нажатии кнопки первый символ должен записаться в массив, при нажатии второй кнопки нужно проверить свободен ли нулевой адрес массива, если нет то ...
- Пт окт 13, 2023 08:22:16
- Форум: AVR
- Тема: Запись значения нажатой кнопки в массив
- Ответы: 24
- Просмотры: 8010
Запись значения нажатой кнопки в массив
Здравствуйте. Есть код опроса матричной клавиатуры. Работает отлично. Но в нем нажатая кнопка отправляется по символьно через UART. У меня же задача записать каждый символ в массив и считать этот массив в переменную в виде числа. Но как это сделать, не пойму. В интернете много тем с таким же ...