Перейти к содержанию
    

Оооо! Я тоже на таком же велосипеде езжу!

Этажом ниже ATMega, ATXMega (кроме USB), Renesas RZ/A1L, AT91SAM9S, ATSAM3/4S, STM32Fxxxx

 

// +++ dsp
// Интерфейс к НЧ кодеку
void hardware_audiocodec_enable(void);        // Интерфейс к НЧ кодеку
void hardware_audiocodec_initialize(void);    // Интерфейс к НЧ кодеку

// Интерфейс к ПЧ кодеку или FPGA
void hardware_fpgacodec_enable(void);        // Интерфейс к ВЧ кодеку
void hardware_fpgacodec_initialize(void);    // Интерфейс к ВЧ кодеку
void hardware_fpgaspectrum_enable(void);    // Интерфейс к источнику данных о спектре
void hardware_fpgaspectrum_initialize(void);    // Интерфейс к источнику данных о спектре

void hardware_dac_initialize(void);        /* инициализация DAC на STM32F4xx */
void hardware_dac_ch1_setvalue(uint_fast16_t v);    // вывод 12-битного значения на ЦАП - канал 1
void hardware_dac_ch2_setvalue(uint_fast16_t v);    // вывод 12-битного значения на ЦАП - канал 2


void hardware_spi_io_delay(void);

void cat2_parsechar(uint_fast8_t c);                /* вызывается из обработчика прерываний */
void cat2_rxoverflow(void);                            /* вызывается из обработчика прерываний */
void cat2_disconnect(void);                            /* вызывается из обработчика прерываний произошёл разрыв связи при работе по USB CDC */
void cat2_sendchar(void * ctx);                            /* вызывается из обработчика прерываний */

// Функции тестирования работы компорта по прерываниям
void cat3_parsechar(uint_fast8_t c);                /* вызывается из обработчика прерываний */
void cat3_rxoverflow(void);                            /* вызывается из обработчика прерываний */
void cat3_disconnect(void);                            /* вызывается из обработчика прерываний */
void cat3_sendchar(void * ctx);                            /* вызывается из обработчика прерываний */

void modem_parsechar(uint_fast8_t c);                /* вызывается из обработчика прерываний */
void modem_rxoverflow(void);                        /* вызывается из обработчика прерываний */
void modem_disconnect(void);                        /* вызывается из обработчика прерываний */
void modem_sendchar(void * ctx);                            /* вызывается из обработчика прерываний */

void nmea_parsechar(uint_fast8_t c);                /* вызывается из обработчика прерываний */
void nmea_rxoverflow(void);                            /* вызывается из обработчика прерываний */
void nmea_sendchar(void * ctx);                            /* вызывается из обработчика прерываний */

void hardware_uart1_initialize(void);
void hardware_uart1_set_speed(uint_fast32_t baudrate);
void hardware_uart1_tx(void * ctx, uint_fast8_t c);    /* передача символа после прерывания о готовности передатчика */
void hardware_uart1_enabletx(uint_fast8_t state);    /* вызывается из обработчика прерываний */
void hardware_uart1_enablerx(uint_fast8_t state);    /* вызывается из обработчика прерываний */
uint_fast8_t hardware_usart1_putchar(uint_fast8_t c);/* передача символа если готов порт */
uint_fast8_t hardware_usart1_getchar(char * cp); /* приём символа, если готов порт */

void hardware_uart2_initialize(void);
void hardware_uart2_set_speed(uint_fast32_t baudrate);
void hardware_uart2_tx(void * ctx, uint_fast8_t c);    /* передача символа после прерывания о готовности передатчика */
void hardware_uart2_enabletx(uint_fast8_t state);    /* вызывается из обработчика прерываний */
void hardware_uart2_enablerx(uint_fast8_t state);    /* вызывается из обработчика прерываний */
uint_fast8_t hardware_usart2_putchar(uint_fast8_t c);/* передача символа если готов порт */
uint_fast8_t hardware_usart2_getchar(char * cp); /* приём символа, если готов порт */

void usbd_cdc_tx(void * ctx, uint_fast8_t c);            /* передача символа после прерывания о готовности передатчика - вызывается из HARDWARE_CDC_ONTXCHAR */
void usbd_cdc_enabletx(uint_fast8_t state);    /* вызывается из обработчика прерываний */
void usbd_cdc_enablerx(uint_fast8_t state);    /* вызывается из обработчика прерываний */

/* отладочная выдача через USB CDC */
void debugusb_initialize(void);                /* Вызывается из user-mode программы при запрещённых прерываниях. */
uint_fast8_t debugusb_putchar(uint_fast8_t c);/* передача символа если готов порт */
uint_fast8_t debugusb_getchar(char * cp); /* приём символа, если готов порт */
void debugusb_parsechar(uint_fast8_t c);    /* вызывается из обработчика прерываний */
void debugusb_sendchar(void * ctx);            /* вызывается из обработчика прерываний */

 

 

И далее в том же духе:

uint_fast8_t board_getadc_filtered_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper);    /* получить значение от АЦП в диапазоне lower..upper (включая границы) */
uint_fast16_t board_getadc_filtered_u16(uint_fast8_t i, uint_fast16_t lower, uint_fast16_t upper);    /* получить значение от АЦП в диапазоне lower..upper (включая границы) */
uint_fast8_t board_getadc_smoothed_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper);    /* при изменении отфильтрованного значения этого АЦП возвращаемое значение на каждом вызове приближается к нему на 1 */
uint_fast8_t board_getadc_unfiltered_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper);    /* получить значение от АЦП в диапазоне lower..upper (включая границы) */
uint_fast16_t board_getadc_unfiltered_u16(uint_fast8_t i, uint_fast16_t lower, uint_fast16_t upper);    /* получить значение от АЦП в диапазоне lower..upper (включая границы) */
uint_fast32_t board_getadc_unfiltered_u32(uint_fast8_t i, uint_fast32_t lower, uint_fast32_t upper);    /* получить значение от АЦП в диапазоне 0..255 */
adcvalholder_t board_getadc_filtered_truevalue(uint_fast8_t i);    /* получить значение от АЦП */
adcvalholder_t board_getadc_unfiltered_truevalue(uint_fast8_t i);    /* получить значение от АЦП */
adcvalholder_t board_getadc_fsval(void);    /* получить максимальное значение значение от АЦП */
void hardware_set_adc_filter(uint_fast8_t i, uint_fast8_t v);    /* установить способ фильтрации данных (в момент выборки их регистра АЦП */

void hardware_set_adc_filterLPF(uint_fast8_t i, uint_fast8_t k);    /* Установить способ фильтрации LPF и частоту среза - параметр 1.0..0.0, умноженное на HARDWARE_ADCFILTER_LPF_DENOM */
#define HARDWARE_ADCFILTER_LPF_DENOM    128        /* положение фиксированной точки при фильтрации HARDWARE_ADCFILTER_LPF */

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На русском комментарии делать некультурно, между прочим! Как китайцы читать будут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На русском комментарии делать некультурно, между прочим! Как китайцы читать будут?

Намного культурнее, чем на ломаном английском, от которого англичанина наизнанку вывернет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По крайней мере, он хотя бы поймет, о чем речь!

Вот я смотрю два кЕтайских исходника. У одного комментарии на кетаглийском, у другого — на китайском. Какой исходник я в /dev/null сразу же отправил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Между прочим, на pudn кто-то залил архив моего проекта, переведя readme.txt с русского на китайский.

А началось с того, что я не один раз пытался своего друга, который делает гигантские платы на x51 и Atmega с внешней памятью (компилируя с -O0, потому что иначе проект обваливается) на ARM перетащить. И писал для него примеры кода с русскими комментариями... Не удалось, но к русскому привык.

readme__32763___35793_.txt

readme.txt

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И писал для него примеры кода с русскими комментариями... Не удалось, но к русскому привык.

 

Я русские комментарии не признаю в принципе. Щелкать регистром постоянно меня выводит из себя. Так что комментарии английские, англоязычных не выворачивает, некоторые из коллег в свое время путались делать кислое лицо - но проблемы индейцев шерифа не волнуют. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделитесь примером с комментариями на английском, который не стыдно показать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделитесь примером с комментариями на английском, который не стыдно показать.

 

Не знаю, какой в этом смысл, но вот - хватанул с экрана что было в окне редактора... ;)

 

  for (;;)         // Task, that caused error, will loop here forever
   {
#ifndef DEBUG
       if (!(SysFlags & SYSF_OSStarted)) VdHitWd(wd);
#endif

     UpdLEDs ();
         t2 = _SET_TIMEOUT(100);         // 100 ms delay
         while (!(_CHK_TIMEOUT(t2))) {}

         if (_CHK_TIMEOUT(t))            // Check if timeout expired
          {
            SysFlags |= SYSF_ResetReq;   // Set restart request flag
            t = _SET_TIMEOUT(3000);      // Allow 3 sec for graceful termination of other tasks
            while (!(_CHK_TIMEOUT(t))) {}
            GSMPower(0);                 // Turn modem off
            if (GenCnf.dat.DSLflags & DSMF_Enable)
            {
              Slv_SleepCmd (SLAVE_ADDR, 3600, 0x01, &err);
              t = _SET_TIMEOUT(3000);    // Delay 3 sec 
              while (!(_CHK_TIMEOUT(t))) {}  // (actually, power will be shut down during this delay)
              // If we pass here, something went really wrong. Reboot anyway.  
              reboot();                   // Reset unit, if wasn't done already by other task
            }              
            else
              reboot();                   // Reset unit, if wasn't done already by other task
          }
    }

}

//////////////////////////////////////////////////////////////////////////

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то у вас излишне комментариев. Например, зачем комментировать очевидное — паузы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то у вас излишне комментариев. Например, зачем комментировать очевидное — паузы?

Комментариев мало не бывает ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то у вас излишне комментариев. Например, зачем комментировать очевидное — паузы?

Ну может человеку оплата начисляется на килобайты :biggrin:

Такие "комментарии" только ухудшают читаемость проекта. Код должен быть по возможности самокомментируемым, а то что невозможно понять по коду, то только это и должно комментировать. Имха!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"…зачем комментировать очевидное — паузы?…"

 

А для чего эта пауза? Очевидно? Не думаю… (;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А для чего эта пауза? Очевидно? Не думаю… (;
Согласен. Комментарий есть, но толку от него никакого потому что описывает то, что и так предельно понятно из кода.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А для чего эта пауза? Очевидно? Не думаю… (;

Во-во. Правильней было бы объяснить, на кой черт она вообще нужна!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, зачем комментировать очевидное — паузы?

У меня такие комментарии частенько бывают. По двум причинам.

1. Частенько лень писать спец. макрос и число в коде не явно описывает реальное время задержки.

2. Как выше в примере - число реальное, а единицы измерений неизвестно какие (мкс, мс, сек ??)

А через год нужно подкрутить код - и ищи концы по проекту. А так - комментарий присутствует :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...