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

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

Сообщение coredumped »

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

Сообщение YS »

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

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

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

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

Сообщение 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

Сообщение YS »

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

Сообщение pokk »

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

Сообщение YS »

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

Сообщение pokk »

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

Сообщение 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

Сообщение YS »

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

Сообщение 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);
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

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

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

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

Сообщение 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 того что вы сказали ровным щетом ничего не понял.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

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

Сообщение sajkel »

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

Сообщение YS »

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

Сообщение sajkel »

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

Сообщение 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))
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Сообщение coredumped »

А лучше так:

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

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

Сообщение menzoda »

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

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

#define PD2    1 << 2

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

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

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

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

Сообщение YS »

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

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

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


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

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

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