Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по С/С++ (СИ)

Сообщение coredumped »

МБ на контрафакт нарвался. Такое в Китае бывает - продают то ли отбракоковку, вобщем ХЗ где они их берут. Ясен пень, что такая лажа может попасть к нашим продавцам. Мы берем чипы оптом у преставителей ST, из более чем 10 тысяч штук брака пока не обнаружено.
С Космодромом и прочими мелкими поставщиками не работаем, стараемся все покапать у официальных представителей, и пока на фуфло не нарывались. 200 штук - это уже мелкий опт, можно у ST заказать.
Все будет только лучше, в крайнем случае - хуже.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Всегда можно договориться о хороших оптовых ценах.
Я не хочу договариваться и торговаться. Я хочу сразу видеть четкую цену. Почему Atmel и TI могут держать предсказуемые цены, а ST - нет? Если один проц сегодня стоит $1, завтра $3, послезавтра $0.7, через месяц $1.8 и так далее, а другой все это время ровненько стоит $2, я буду рассчитывать на второй.

Против самих камней я ничего не имею. Процы как процы.
Никто Вас не заставляет использовать SPL
Ну да, ну да. Особенно на семинарах никто не заставляет. :))) Пытался добиться от представителя ST внятного объяснения как же работать с их детищем не заполняя километровых структур - так и не добился. Плюнул и стал читать сам. Официальная литература от ST, кстати, не особо помогает, ибо там 99% про их либы.

У TI в этом смысле все либерально. Хочешь либы? Есть либы, есть доки по ним. Хочешь сам? Пожалуйста, вот документация и примеры.

Кстати, я был бы очень рад, если бы вы дали мне ссылку на примеры/туториалы/документацию от ST по программированию STM БЕЗ их SPL. Чисто на CMSIS.
Не хочу холиварить
Я тоже. :beer: Но и не могу согласиться, что AVR прямо таки вымирают. У них есть своя ниша (как и у PIC), и они ее плотно занимают. Да, одно время у Atmel были трудности с производством, цены подскочили, было туго с поставками, но сейчас все налаживается.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по С/С++ (СИ)

Сообщение coredumped »

YS писал(а):Я не хочу договариваться и торговаться. Я хочу сразу видеть четкую цену. Почему Atmel и TI могут держать предсказуемые цены, а ST - нет?
Если один проц сегодня стоит $1, завтра $3, послезавтра $0.7, через месяц $1.8 и так далее, а другой все это время ровненько стоит $2, я буду рассчитывать на второй.
Это потому, что Вы производством не занимаетесь. Я никогда не смотрю на цены на сайтах или чьих-то прайсах. Пишется запрос на партию в N штук, после небольшой переписки, сосотоящей из согласования планов поставки, получается конечная цена. Поверьте - она значительно отличается от цен в магазинах.
Насчет непредсказуемости ST - есть такой момент, но цены только падали, ни разу никто не предлагал по повышенной цене то, что уже было обговорено.
Еще раз повторюсь, что против TI ничего не имею против, но у меня есть все средства и инструменты для ST, и я не вижу ни одной причины заводить все это для TI. Тут от FPGA мозги за малым не закипают, а если еще держать кучу разношерстных МК... :shock: Нет, ну его на фиг :)))
А если Вам нравятся Техасские Инструменты - так осваивайте их! (Я с них начинал :beer:) Кортексы - они и в Африке :))) Вот только у ST (пока) есть Cortex-M4 c частотой ядра 180МГц, а у меня есть пару проектов, где 120МГц не хватает...
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Эт правда, я производством не занимаюсь. В основном разработка штучных (<100 шт.)/уникальных девайсов (для исследований/конкретных задач автоматизации). А так, чтобы десятками тысяч - не, такого не было. Ну, пока, во всяком случае.
я не вижу ни одной причины заводить все это для TI
Так никто и не заставляет. :) Я ничего не имею против ST в смысле именно железяк. Просто меня настораживает их рыночная политика - я не знаю, чего от них ждать. Потому пока всерьез не вкладываюсь в их МК.
А если Вам нравятся Техасские Инструменты - так осваивайте их!
Уже, уже. Я успешно ставлю их в устройства. :) Их G-серия - мое стандартное решение, если нужен "просто маленький контроллер".
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Эиком - электронные компоненты и радиодетали
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: Вопросы по С/С++ (СИ)

Сообщение pokk »

BCluster писал(а):YS, Там человек что-то типа часов делает :) Но судя по всему, перемудрил.
pokk, Вы бы задачу сказали, вам бы посоветовали как это правильно сделать :)
Задача у меня большая. Опрашивать с 10 датчиков и выводить значение их на веб странице и на LCD.
Вот там на одной из страниц надо отображать сетевые настройки ip адрес и тд на каждый из этих параметров 4 раза вызываю функцию преобразования.
Web на wiznet w5500 делаю.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Опрашивать с 10 датчиков и выводить значение их на веб странице и на LCD.
Устройство штучное или пойдет в серию (>100 шт.)? Если штучное, проще взять роутер, поставить на него OpenWRT и lighttpd, например. Ну и делать на базе этого.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: Вопросы по С/С++ (СИ)

Сообщение pokk »

Серийное.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Вопросы по С/С++ (СИ)

Сообщение zero648 »

YS писал(а):Кстати, я был бы очень рад, если бы вы дали мне ссылку на примеры/туториалы/документацию от ST по программированию STM БЕЗ их SPL. Чисто на CMSIS.
STM32F3xxx and STM32F4xxx Cortex-M4 programming manual
http://www.st.com/web/en/resource/techn ... 046982.pdf
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

zero648, спасибо.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sajkel
Встал на лапы
Сообщения: 105
Зарегистрирован: Вт янв 19, 2010 22:52:13
Откуда: Украина
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение sajkel »

Здравствуйте. Я начинающий.
Объясните пожалуйста смысл вот этого 1 << PD0. 1<<3 -один сдвинуть на три бита в лево єто я понимаю.
Вот кусок кода:
while(1)
12.{
13.while ((PIND&(1 << PD0)) == 1){}
14._delay_ms(200);
15.if ((PINB&(1 << PB0)) == 0)
16.{
17.PORTB |= (1 << PB0);
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

1<<3 -один сдвинуть на три бита в лево єто я понимаю.
А что может быть где-то написано:

Код: Выделить всё

#define PD0 3
понимаете?
sajkel
Встал на лапы
Сообщения: 105
Зарегистрирован: Вт янв 19, 2010 22:52:13
Откуда: Украина
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение sajkel »

Вот весь код:
01.#include <avr/io.h>
02.#include <util/delay.h>
03.
04.int main(void)
05.{
06.DDRD = 0x00;
07.PORTD = 0xFF;
08.DDRB = 0xFF;
09.PORTB = 0x00;
10.
11.while(1)
12.{
13.while ((PIND&(1 << PD0)) == 1){}
14._delay_ms(200);
15.if ((PINB&(1 << PB0)) == 0)
16.{
17.PORTB |= (1 << PB0);
18.}
19.else
20.{
21.PORTB &= ~(1 << PB0);
22.}
23.while ((PIND&(1 << PD0)) == 0){}
24._delay_ms(200);
25.}
26.}
C того что вы сказали ровным щетом ничего не понял.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

- Ты суслика видишь?
- Нет.
- И я нет. А он есть!
Загляните в avr/io.h или (если IDE умеет) CTRL+клик мышкой на идентификаторе - перебросит на объявление.
C того что вы сказали ровным щетом ничего не понял.
Я сказал то, что ваш PB0, PD0 и все остальные имена где-то задефайнены как числа или адреса.
sajkel
Встал на лапы
Сообщения: 105
Зарегистрирован: Вт янв 19, 2010 22:52:13
Откуда: Украина
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение sajkel »

То что PD0 єто нулевой бит порта D я понимаю. Не могу понять что значит єто выражение 1<<pd0 -сдвинуть единицу на число указывающее номер бита? я прав? Почему тогда не записать єто вот так 1<<0? И зачем что то сдвигать если оно по сути ни куда не сдвигается?
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

сдвинуть единицу на число указывающее номер бита?
Да.
Почему тогда не записать єто вот так 1<<0? И зачем что то сдвигать если оно по сути ни куда не сдвигается?
Для стандартизации. Почему это так полезно - поймете с опытом, когда начнете писать более сложные программы. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sajkel
Встал на лапы
Сообщения: 105
Зарегистрирован: Вт янв 19, 2010 22:52:13
Откуда: Украина
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение sajkel »

Спасибо. Ответ исчерпывающий.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение WiseLord »

Кстати, писать так

Код: Выделить всё

while ((PIND&(1 << PD0)) == 1)
не совсем красиво.
Да, если это - проверка единисности бита, то в конкретно этом случае (только для 0-го бита) это сработает. Но для другого - придётся писать уже, по этой системе

Код: Выделить всё

while ((PIND&(1 << PD1)) == 2)
,

Код: Выделить всё

while ((PIND&(1 << PD2)) == 4),
и т. д.
Лучше сразу приучиться к единообразию типа

Код: Выделить всё

while ((PIND&(1 << PD0)) == (1 << PD0))
и

Код: Выделить всё

while ((PIND&(1 << PD1)) == (1 << PD1))
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по С/С++ (СИ)

Сообщение coredumped »

А лучше так:

Код: Выделить всё

while (PIND&(1 << PD0))
while (PIND&(1 << PD1))
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: Вопросы по С/С++ (СИ)

Сообщение menzoda »

А еще лучше так

Код: Выделить всё

#define PD2    1 << 2

while (PIND & PD2)
{
    ...
}
ну или

Код: Выделить всё

while (PIND & PD2 > 0)
{
    ...
}

while (PIND & PD2 == 0)
{
    ...
}
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

А еще лучше так
Не особо. Будет конфликтовать со встроенными определениями. И макросы я бы в скобочки-то заключал...

А вообще, в AVR-libc есть макрос _BV(...), как раз сдвигающий биты. :) Так что

Код: Выделить всё


while (PIND & _BV(PD0))
{
  ...
}

Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ответить

Вернуться в «Разные вопросы по МК»