программирование микроконтроллеров avr( c для avr 'Структура' )

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

Спасибо Вам, дорогой ЧЕЛОВЕК! Настолько входчивые ваши уроки, трудно даже переоценить. Занимаюсь самостоятельным изучением, четкое понимание только после ваших занятий.

cedricgraf
Автор

Большое спасибо вам за этот видеоурок! На данный момент перехожу на стм32, но синтаксис языка Си каким был, таким и остался. Именно поэтому, ваши видео будут актуальны ещё очень долгое время)

bbymboh
Автор

Цель урока показать как работать со структурами. А это просто пример.

mjuxbnc
Автор

Александр, спасибо за уроки !! побольше бы такие..

avr_stm_pro
Автор

Александр привет. Спасибо за уроки. Очень интересные. Продолжай и дальше их выкладывать. Хотя я программирую уже лет 5 avr чипы. Все равно в твоих уроках нашел для себя много полезного и нового. В ближайшее время буду применять.

electronics_is_easy
Автор

Алех, забираю все свои слова обратно, и прошу извинения, Всё у Вас верно и как должно быть, потерял 1, 5 дня но разобрался, дело оказалось в сеттингах компилятора, а точнее в уровнях оптимизации.Спасибо за прекрасный урок !

vladimirlaiu
Автор

зачем делать 3 действия?
Timer_2.Pause++;
как по мне тоже самое, не делая никаких трех действий
p.s. поправьте если не прав

AntonPetersen
Автор

У меня вопрос есть переменная которая меняет положение меню на LCD.Если я объявил структуру и в ней прописал эту переменную .То она не работает. А удаляю со структуры. И прописую до майна она работает .Тоже касается переменной счёта таймера в прерывании .Пишу её в структуре прописываю. Запускаю светодиод не мигает. А удаляю со структуры. Прописываю до майна работает. Почему не работает переменная которая в структуре прописанная.И с указателем пробовал.А прописываю в начале вне структуры переменную.А в структуре её удаляю.Работает.Почему не работает.И как правильно сделать чтобы заработала данная программа?Мегание светодиода по таймеру.Или переключение меню в LCD?

ivanrusev
Автор

Добрий день!
Хочу себе сделать библиотеку для кнопок и там (в библиотеке MyKeyLib.с) создал масив структур
" struct Button{
uint8_t buttonDDR;
uint8_t buttonPORT;
uint8_t buttonPIN;
uint8_t buttonPinN;
uint8_t buttonStatus;
uint16_t buttonOnCount;
uint16_t buttonDelayClickOff ;
} Button_key[buttNum];"
Как мне определить етот масив структур в главном файле чтоб я мог обращаться к его елементам из главного файла?

ruslanmarkiv
Автор

Я то же попробовал инкриминировать без переменной "Т", напрямую Taimer_2.Pauza++. И вывел сразу в порт. Проверил в железе, работает. Помогите, объясните зачем тогда указатель если работает напрямую?   

fkzszst
Автор

Подскажите в чем отличие от массивов?
Я всегда в таких случаях использовал массивы двухмерные и т.д., если писать  код с структурами так будет правильнее?
Заранее спасибо.

TheHishko
Автор

День добрый!
Я создал 3 структуры:

struct power_chip {
uint8_t plus;
uint8_t minus;
};
struct test_outputs {
uint8_t* set_signal; // массив сигналов
uint8_t* result; // массив результатов
};
struct microchip_outputs {
uint8_t number_outputs;
struct power_chip power;
uint8_t* in_outputs; // массив входов
uint8_t in_outputs_number; // Кількість входів
uint8_t* out_outputs; // массив выходов
uint8_t out_outputs_number; // Кількість виходів
struct* test_outputs tests; // Массив тестов. Тест некоторых сигналов дает некоторые результаты на лапах микросхемы, например:
{ { 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 1, 0, 1, 0, 1, 0 } }, // set_signal - Сигнали, що ми посилаємо
{ { 0, 0, 0, 0 }, { 1, 1, 1, 1 } } // result
у каждого теста свой результат.
uint8_t tests_number; // Кількість пройдених результатів-тестів
};
есть тип:
typedef struct {
struct microchip_outputs chip;
uint8_t* MICROCHIP_NAME;
} microchip;
есть переменная: microchip la8;

Я не могу раименовать поля.
Программа работает, но это

работает неверно!

cffiihk
Автор

окно работает все эти значения вводят вручную у меня так получается

nniofyx
Автор

не работает окно watch1 данные в памяти не отображаются- что может быть?

griggrek
Автор

16:50 Timer_2.Pauza++; Разве так не выполниться, без всяких указателей и за один раз ? Понял как работать с указателями, но не пойму почему он быстрее и экономичней, он же все равно выделяет байт под указатель и просто записывает в него адрес ячейки на которую указывает... Может просто за счет этого быстрее но не совсем экономичней? Может я алгоритм по котором указатели работают не понял...

fkksijl
Автор

Я конечно не профессионал, но как в окне watch появились ещё 2 таймера до того как ты их создал? 4:00

dmitriibannikovasx
Автор

Здравствуйте! А почему в окошке, которое показывает, что происходит с переменными и всем остальным, появились только первые два таймера? Спасибо за уроки, наткнулся первый раз вчера, обязательно всё пересмотрю, доходчиво, аж жуть :)

ERadicator
Автор

implicit declaration of function 't1_on'
conflicting types for 't1_on' [enabled by default]
previous implicit declaration of 't1_on' was here
Не подскажите почему пишет предупреждение? В чём не явность описания функции?


t1_on(); // вызов функции включения таймера.

void t1_on()
{
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (1<<CS11) | (1<<CS10);
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (1<<OCIE1A) | (0<<TOIE1);
flag_T1 = 1; // установка флага включения таймера 1.
}

goodspeedmen
Автор

можно вопрос а как создать меню на структурах и указателях? Можете дать ответ.

nniofyx
Автор

asm ("nop") это как работает на Си?

zwdtqxi