Pull to refresh
211.92

Programming microcontrollers *

Learning how to program microcontrollers

Show first
Rating limit

У меня есть знакомый энтузиаст LLM, который также изучает верилог. Я попросил его написать инструкцию к упражнению с неким сенсором, который он интегрировал. Он разумеется сбросил это на LLM, я почитал и понял, что LLM нужно запретить как распостранение Экстази и "солей" среди молодежи. Точно так же как "дизайнерские наркотики" дают ощущение счастья и достижения без труда, сгенеренная LLM документация выглядит как реальная, вот только читателю она не поможет.

Что нужно читателю? Картинку как подцепить сенсор к плате, временную диаграмму сигналов которые от него выходят и пару слов про проблемы, которые у него возникнут (дребезг) и как их стоит решать. Так чтобы было достаточно информации, чтобы сесть и написать код на верилоге.

Что выдал LLM? Сначала пять абзацев мутного словестного описания что "изменения переключателей проходят некоторую последовательность, позволяющую определить направление", с галлюцинациями что движется и что неподвижно. Потом не имеющую отношения к задаче информацию, из каких материалов делаются эти сенсоры в разных странах мира, чтобы быть дешевыми для хоббистов и образовательных учреждений. Далее про разные способы решения проблемы дребезга, в том числе способы, не имеющие отношения к данной ситуации. И наконец, куски определения пинов из QSF и XDC файлов из случайных примеров в интернете, которые не имеют отношения к описанному примеру, так как в нем во-первых эти файлы не используются (другой вендор, другой способ задания пинов), а во-вторых, в нем эта часть проекта абстрагирована (пользователю вообше это не нужно это делать).

То есть текст просто водит читателя за нос, не давая ему никакой полезной информации для решения проблемы. Но даже это не важно, потому что читатель этот текст читать не будет, так как учует LLM в заголовке и убедится в третьем предложении, после чего перестанет читать. Текст является иллюстрацией терминов "сделать на отцепись" и "из дерьма и палок".

UPD: И самое страшное: это 27 страниц вместо 1 страницы полезной инструкции, которую я ожидал. ДВАДЦАТЬ СЕМЬ СТРАНИЦ ЛАБУДЫ !!!

Я хочу обратно в годы, когда этого ужаса не было. Нашу цивилизацию ждут тяжелые времена. Я уже видел в ЖЖ посты агитирующие на перевод всей порноиндустрии на generative AI.

Tags:
+17
Comments18

Artery AT32F407 и scanf()

Речь пойдет об отладке AT-START-F407 V1.3. В составе платы находится программатор/отладчик AT-Link-EZ V1.2, который подключается по USB к ПК, где он виден как COM порт.

Его же можно использовать для целей отладки, а именно выводить информацию на ПК с помощью printf(). На эту тему а Artery есть AN0015_Printf_Debug_Demo, описанные там переопределения уже содержатся в файле at32f403a_407_board.c:

FILE __stdout;

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

PUTCHAR_PROTOTYPE
{
  while(usart_flag_get(PRINT_UART, USART_TDBE_FLAG) == RESET);
  usart_data_transmit(PRINT_UART, (uint16_t)ch);
  while(usart_flag_get(PRINT_UART, USART_TDC_FLAG) == RESET);
  return ch;
}

Все что нужно сделать, это добавить в код функцию инициализации uart_print_init(115200), где 115200 скорость COM порта.

Аналогичным образом можно с консоли передавать данные в МК с помощью функции scanf(). (На эту тему я не нашел AN). Добавим в файл at32f403a_407_board.c:

FILE __stdin;

#define GETCHAR_PROTOTYPE int fgetc(FILE * f)

GETCHAR_PROTOTYPE
{
  uint8_t cha = 0;
  usart_flag_clear(PRINT_UART, USART_ROERR_FLAG);  // Clear Overrun flag
  while(usart_flag_get(PRINT_UART, USART_RDBF_FLAG) == RESET);	
  cha = usart_data_receive(PRINT_UART);  
  usart_data_transmit(PRINT_UART, (uint16_t)cha); // Echo 
  return cha;
}

Все работает? Нет. Надо еще вызвать функцию

usart_receiver_enable(PRINT_UART, TRUE);

scanf("%d", &k);
k = 2*k;
printf(" \n\r You entered = %d", k);

И, теперь все работает.

Tags:
Total votes 1: ↑1 and ↓0+2
Comments0

Простое крепление проводов в контроллерах idiBus. Без кабельных каналов. Дешево и сердито.

Вдоль торца платы ряд отверстий
Вдоль торца платы ряд отверстий

Выходящие провода крепятся хомутами прямо к плате через отверстия по краю платы.

Или есть специальные хомуты, которые вставляются в эти отверстия.

Принимаются предложения и идеи по всяким полезным видам крепления проводов.

Tags:
Total votes 2: ↑2 and ↓0+2
Comments3