Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт мар 13, 2026 14:34:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 135, , , ...  
Автор Сообщение
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс фев 03, 2013 23:24:20 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
Это не каша, это стратегическая обфускация кода с целью недопущения возможности его использования китайскими конкурентами.

А если серьезно - ну учится человек, чем дальше тем лучше будет. Может быть не было времени заниматься "причесыванием" кода. Если захочет представить свой код на суд нам - то так и напишет :)).

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс фев 03, 2013 23:41:04 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Я так думаю, что если работал код в целом виде, то лучше так его и использовать. А если захотелось модули сделать, то лучше не из готового кода их сделать, а продуманно в каждый модуль нужные только там функции помещать и относящиеся только к этому модулю.Ну и про объявление не забывать :)
Так же чтобы не было ошибок необходимо делать блокировку повторного подключения модулей, как было в статье по ссылке.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс фев 03, 2013 23:49:25 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
vitalik_1984 писал(а):
Так же чтобы не было ошибок необходимо делать блокировку повторного подключения модулей, как было в статье по ссылке.

Всегда было интересно, почему препроцессор сам этого не делает :roll:.

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 03:24:47 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс сен 11, 2011 12:35:11
Сообщений: 378
Рейтинг сообщения: 0
Вывод времени в привычном формате.
У меня давнишняя проблема вывода времени в привычном формате.
А вот теперь сделал одну штуку на заказ за денежку. А вот с временем так и не разобрался что бы это сделать без извращений в языке.

Поясню. Обычно так 18:05 или 08:05
У меня так 18:5 или 8:5

Компилятор hi-tech, mplab. может в хайтеке есть уже какое то форматирование? Мануал пробовал почитать или слепой или не нашел. Да и в англицком совсем плохо.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 06:22:47 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 286
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1810
Откуда: Сибирские Афины
Рейтинг сообщения: 0
AVT-28, смотря чем пользуешься для преобразования чисел соответствующих часам и минутам в строку.
Вообще это называется вывод с лидирующими нулями (leading zeros).
На Си вот так можно
printf("%09d", 4917);
Напечатает
000004917

Ну, или проверять на значения числа, и для случая <10 добавлять "0" к строке отдельно.

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 07:47:08 
Открыл глаза

Зарегистрирован: Ср мар 28, 2012 10:46:17
Сообщений: 70
Рейтинг сообщения: 0
Коты подскажите что не так пожалуйста это моя программка только учусь программировать и не могу разобраться с переменными
ответ можно? в личку а то я боюсь тут не найду не своего вопроса не ответа
Код:
#include <mega16.h>
#include <delay.h>
// Declare your global variables here

void main(void)
{

PORTA=0x00;
DDRA=0x01;


PORTB=0x00;
DDRB=0x00;


PORTC=0x00;
DDRC=0x00;


PORTD=0x00;
DDRD=0x00;


while (1)
      {
      {
      //volatile unsigned char del;
      volatile char del;
      if (PINB.0 == 1) {
      del = (1);
      };
      if (PINB.1 == 1) {
      del = (50);
      };
      if (PINB.2 == 1) {
      del = (2);
      };
      if (PINB.3 == 1) {
      del = (15);
      };
      if (PINB.4 == 1) {
      del = (20);
      };
      if (PINB.5 == 1) {
      del = (25);
      };
      if (PINB.6 == 1) {
      del = (30);
      };
      if (PINB.7 == 1) {
      del = (35);
      };
   
     
      PORTA.0 = 1;
      delay_ms(del);
      PORTA.0 = 0;
     
 


      };
}}


Последний раз редактировалось Аlex Пн фев 04, 2013 07:57:23, всего редактировалось 1 раз.
[code][/code]


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 07:56:55 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А вопрос то какой ? :))


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:00:38 
Открыл глаза

Зарегистрирован: Ср мар 28, 2012 10:46:17
Сообщений: 70
Рейтинг сообщения: 0
Аlex писал(а):
А вопрос то какой ? :))

не могу разобраться с тем как правильно объявить переименую и с тем как её вызвать


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:02:05 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
как правильно объявить переименую
http://yandex.ru/yandsearch?clid=9582&t ... D0%B5&lr=2

Цитата:
как её вызвать
Как это ? Куда вызвать, на дом ? :))


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:15:08 
Открыл глаза

Зарегистрирован: Ср мар 28, 2012 10:46:17
Сообщений: 70
Рейтинг сообщения: 0
Аlex писал(а):
Цитата:
как правильно объявить переименую
http://yandex.ru/yandsearch?clid=9582&t ... D0%B5&lr=2

Цитата:
как её вызвать
Как это ? Куда вызвать, на дом ? :))


конечно спасибо но поиском я пользоваться умею тем более яндексом.
вот что я нашел
http://123avr.com/05.htm
по лучше того что нашли вы
но вот как объявить переименую и потом взять то значение которое в ней находиться (лежит)(записано)
не знаю вот и обращаюсь сюда чтоб узнать


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:17:29 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
но поиском я пользоваться умею
Заметно...
Если бы умели, то не задавали бы вопросов, типа
Цитата:
но вот как объявить переименую и потом взять то значение которое в ней находиться (лежит)

Зачем тут по 100 раз переписывать то, что уже неоднократно написано другими и выложено в интернет ?

Цитата:
по лучше того что нашли вы
Ну ну... Дерзайте...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:21:57 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
http://www.misigames.h15.ru/yroki/C/kernigan.pdf
Курите...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:23:17 
Открыл глаза

Зарегистрирован: Ср мар 28, 2012 10:46:17
Сообщений: 70
Рейтинг сообщения: 0
написано и переписывалась теми кто учился так?
ну вот
и как раз учусь я
повторение мать ученья так что можно и нужно повторить специально для таких как я
не так обязательно поясничить проше ведь повторить более подробно описав?


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:25:14 
Открыл глаза

Зарегистрирован: Ср мар 28, 2012 10:46:17
Сообщений: 70
Рейтинг сообщения: 0
Аlex писал(а):
http://www.misigames.h15.ru/yroki/C/kernigan.pdf
Курите...

вот так бы сразу! ото у вас то опыта огромный мешок сразу бы отсыпали да и всё
а то будто жалко вам!
спасибо сударь :))


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 04, 2013 08:31:52 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
ото у вас то опыта огромный мешок сразу бы отсыпали да и всё
Дак его, опыта этого, пол-интернета. Вы же поиском умеете пользоваться, что сами не нашли эту книгу ?
Мне бы вот было лень писать на форум, если можно найти ответ в течении 5 минут.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 05, 2013 05:22:42 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
спящий
СпойлерspiRoutine.h
Код:
#ifndef SPIROUTINE_H_
#define SPIROUTINE_H_

#include "stm32l1xx.h"
#include "stdio.h"

void spi_init(void);                  //инициализация SPI
static void xmit_spi(uint8_t xmit_data);   //отправка числа
static char rcvr_spi(void);               //прием числа
static void send_cmd(char cmd,char arg);   //посылка пакета

#endif

----------
spiRoutine.c
Код:
#include "stm32l1xx.h"
#include "stdio.h"
#include "spiRoutine.h"

void spi_init(void)   
{
   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; //Тактирование портов A, B
   //Линини SPI1 (Master)
   //PA12(MOSI), PA11(MISO), PA5(SCK), PA4(NSS) - AF, Push-Pull, AF5(SPI1)
   GPIOA->MODER |= GPIO_MODER_MODER12_1 | GPIO_MODER_MODER11_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER4_1; //Alternate function
   GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_11 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_4); //Push-Pull
   GPIOA->AFR[1] |= (5<<16 | 5<<12); //PA12 = AF5, PA11 = AF5
   GPIOA->AFR[0] |= (5<<20 | 5<<16); //PA5 = AF5, PA4 = AF5
   
   /*Настройка SPI1 (Master)
   8 бит данных, MSB передается первым, программный режим управления NSS, вывод NSS (PA4) разрешено использовать в качестве выхода*/
   RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //Тактирование модуля SPI1
   SPI1->CR1 &= ~SPI_CR1_CPOL; //Полярность тактового сигнала
   SPI1->CR1 &= ~SPI_CR1_CPHA; //Фаза тактового сигнала
   SPI1->CR1 &= ~SPI_CR1_DFF; //8 бит данных
   SPI1->CR1 &= ~SPI_CR1_LSBFIRST; //MSB передается первым
   SPI1->CR2 = 0; //Вывод NSS - выход управления slave select
   SPI1->CR1 |= SPI_CR1_MSTR; //Режим Master
   SPI1->CR1 |= SPI_CR1_BR; //Baud rate = Fpclk/256
   SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS
   SPI1->CR1 |= SPI_CR1_SSI; //Аналогично состоянию, когда на входе NSS высокий уровень
   SPI1->CR1 |= SPI_CR1_SPE; //Включаем SPI1
}

static void xmit_spi(uint8_t xmit_data)
{
   SPI1->DR = xmit_data; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными
   //отправка числа
   while (!(SPI1->SR & SPI_SR_TXE)); //убедиться, что предыдущая передача завершена
}

static char rcvr_spi(void)      //прием числа
{
   uint8_t res;
   SPI1->DR = 0xff; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными
   while (!(SPI1->SR & SPI_SR_TXE)); //убедиться, что предыдущая передача завершена
   //прием числа
   while(!(SPI1->SR & SPI_SR_RXNE)); //Ожидаем окончания приема данных модулем SPI1 (RXNE =1 - приемный буфер содержит данные)
   res= SPI1->DR;
   return res;
}

static void send_cmd(char cmd,char arg)   /* Send command packet */
{
   xmit_spi(cmd); /* Start + Command index */
   xmit_spi((char)(arg >> 24)); /* Argument[31..24] */
   xmit_spi((char)(arg >> 16)); /* Argument[23..16] */
   xmit_spi((char)(arg >> 8)); /* Argument[15..8] */
   xmit_spi((char)arg); /* Argument[7..0] */
   xmit_spi(0x95);
}

----------
constants.h
Код:
#ifndef CONSTANTS_H_
#define CONSTANTS_H_

#define CMD0 (0x40+0) /* GO_IDLE_STATE */
#define CMD1 (0x40+1) /* SEND_OP_COND (MMC) */
#define ACMD41 (0xC0+41) /* SEND_OP_COND (SDC) */
#define CMD8 (0x40+8) /* SEND_IF_COND */
#define CMD9 (0x40+9) /* SEND_CSD */
#define CMD10 (0x40+10) /* SEND_CID */
#define CMD12 (0x40+12) /* STOP_TRANSMISSION */
#define ACMD13 (0xC0+13) /* SD_STATUS (SDC) */
#define CMD16 (0x40+16) /* SET_BLOCKLEN */
#define CMD17 (0x40+17) /* READ_SINGLE_BLOCK */
#define CMD18 (0x40+18) /* READ_MULTIPLE_BLOCK */
#define CMD23 (0x40+23) /* SET_BLOCK_COUNT (MMC) */
#define ACMD23 (0xC0+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
#define CMD24 (0x40+24) /* WRITE_BLOCK */
#define CMD25 (0x40+25) /* WRITE_MULTIPLE_BLOCK */
#define CMD55 (0x40+55) /* APP_CMD */
#define CMD58 (0x40+58) /* READ_OCR */

#endif

----------
main.c
Код:
#include "stm32l1xx.h"
#include "stdio.h"
#include "spiRoutine.h"
#include "constants.h"
uint8_t temp,res,i;

int main()
{
   spi_init();
   
   //LED
   GPIOB->MODER |= GPIO_MODER_MODER6_0 | GPIO_MODER_MODER7_0; //PB6, PB7 - GP Output
   GPIOB->OTYPER &= ~(GPIO_OTYPER_OT_6 | GPIO_OTYPER_OT_7); //PB6, PB7 - Push-Pull
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7; //40 MHz
   GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPDR6 | GPIO_PUPDR_PUPDR7); //No pull
   
   for (int n = 7; n; n--) xmit_spi(0xff); /* 80 dummy clocks */
   for (int n = 7; n; n--) xmit_spi(0xff); /* 80 dummy clocks */
   
   send_cmd(CMD0,0);
   while(!(res==1))
   {
      SPI1->DR = 0xff;
      res=rcvr_spi();
      if (i>10)
      {
         send_cmd(CMD0,0);
         i=0;
      }
      i++;
      putchar(res);
   }
   
   send_cmd(CMD1,0);
   while(!(res==0))
   {
      SPI1->DR = 0xff;
      res=rcvr_spi();
      if (i>20)
      {
         send_cmd(CMD1,0);
         i=0;
      }
      i++;
      putchar(res);
   }
   
   xmit_spi(CMD18);
   xmit_spi(0);
   xmit_spi(0);
   xmit_spi(0);
   xmit_spi(0);
   xmit_spi(0xff);
   
   while(1)
   {
      res=rcvr_spi();
      if(res!=0Xff)
      {
         if(res!=0X0) {putchar(res);}
      }
   }
}

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 05, 2013 06:13:34 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
В "spiRoutine.c" функция "rcvr_spi()" объявлена как static, и она же объявлена в "spiRoutine.h" как static (?!) да еще и вызывается из "main.c" (?!!!). Таких советчиков надо брать за шкирку и топить в ближайшем водоеме.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 05, 2013 07:57:44 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
Совесть писал(а):
Таких советчиков надо брать за шкирку и топить в ближайшем водоеме.


а теперь пролистали обсуждение сначала - у чела возникла проблема раскидать файл по кускам, что я и сделал, тупо скопировал код совсем в нем не ковыряясь, а про статик ему уже 3 страницы рассказывают

цель - показать что объявлений функций желательно размещать в хидерах, функции в с файлах и продемонстрировать что такой подход более удобен чем спихивание всего в один файл

если быть немного внимательным, то можно заметить - та функция которую я добавил, никакими статиками не болеет, остальное все копипаст

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср фев 06, 2013 05:27:26 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
Цитата:
...тупо скопировал код...
Вот это и есть причина моего высказывания.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср фев 06, 2013 09:08:19 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
мне лично лень ковырять чужой код, тем более вопрос звучал совсем другой
ну а если вы такой умный, так предоставьте правильный, или вы только критиковать умеете?

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 135, , , ...  

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y