Страница 178 из 386

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

Добавлено: Вс дек 29, 2013 11:06:35
coredumped
МБ на контрафакт нарвался. Такое в Китае бывает - продают то ли отбракоковку, вобщем ХЗ где они их берут. Ясен пень, что такая лажа может попасть к нашим продавцам. Мы берем чипы оптом у преставителей ST, из более чем 10 тысяч штук брака пока не обнаружено.
С Космодромом и прочими мелкими поставщиками не работаем, стараемся все покапать у официальных представителей, и пока на фуфло не нарывались. 200 штук - это уже мелкий опт, можно у ST заказать.

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

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

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

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

Кстати, я был бы очень рад, если бы вы дали мне ссылку на примеры/туториалы/документацию от ST по программированию STM БЕЗ их SPL. Чисто на CMSIS.
Не хочу холиварить
Я тоже. :beer: Но и не могу согласиться, что AVR прямо таки вымирают. У них есть своя ниша (как и у PIC), и они ее плотно занимают. Да, одно время у Atmel были трудности с производством, цены подскочили, было туго с поставками, но сейчас все налаживается.

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

Добавлено: Вс дек 29, 2013 17:04:52
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МГц не хватает...

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

Добавлено: Вс дек 29, 2013 17:47:40
YS
Эт правда, я производством не занимаюсь. В основном разработка штучных (<100 шт.)/уникальных девайсов (для исследований/конкретных задач автоматизации). А так, чтобы десятками тысяч - не, такого не было. Ну, пока, во всяком случае.
я не вижу ни одной причины заводить все это для TI
Так никто и не заставляет. :) Я ничего не имею против ST в смысле именно железяк. Просто меня настораживает их рыночная политика - я не знаю, чего от них ждать. Потому пока всерьез не вкладываюсь в их МК.
А если Вам нравятся Техасские Инструменты - так осваивайте их!
Уже, уже. Я успешно ставлю их в устройства. :) Их G-серия - мое стандартное решение, если нужен "просто маленький контроллер".

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

Добавлено: Вс дек 29, 2013 18:31:06
pokk
BCluster писал(а):YS, Там человек что-то типа часов делает :) Но судя по всему, перемудрил.
pokk, Вы бы задачу сказали, вам бы посоветовали как это правильно сделать :)
Задача у меня большая. Опрашивать с 10 датчиков и выводить значение их на веб странице и на LCD.
Вот там на одной из страниц надо отображать сетевые настройки ip адрес и тд на каждый из этих параметров 4 раза вызываю функцию преобразования.
Web на wiznet w5500 делаю.

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

Добавлено: Вс дек 29, 2013 18:35:25
YS
Опрашивать с 10 датчиков и выводить значение их на веб странице и на LCD.
Устройство штучное или пойдет в серию (>100 шт.)? Если штучное, проще взять роутер, поставить на него OpenWRT и lighttpd, например. Ну и делать на базе этого.

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

Добавлено: Пн дек 30, 2013 06:11:22
pokk
Серийное.

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

Добавлено: Пн дек 30, 2013 09:18:17
zero648
YS писал(а):Кстати, я был бы очень рад, если бы вы дали мне ссылку на примеры/туториалы/документацию от ST по программированию STM БЕЗ их SPL. Чисто на CMSIS.
STM32F3xxx and STM32F4xxx Cortex-M4 programming manual
http://www.st.com/web/en/resource/techn ... 046982.pdf

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

Добавлено: Пн дек 30, 2013 22:37:37
YS
zero648, спасибо.

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

Добавлено: Пт янв 10, 2014 16:35:08
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);

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

Добавлено: Пт янв 10, 2014 16:38:56
ploop
1<<3 -один сдвинуть на три бита в лево єто я понимаю.
А что может быть где-то написано:

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

#define PD0 3
понимаете?

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

Добавлено: Пт янв 10, 2014 16:48:12
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 того что вы сказали ровным щетом ничего не понял.

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

Добавлено: Пт янв 10, 2014 16:51:01
ploop
- Ты суслика видишь?
- Нет.
- И я нет. А он есть!
Загляните в avr/io.h или (если IDE умеет) CTRL+клик мышкой на идентификаторе - перебросит на объявление.
C того что вы сказали ровным щетом ничего не понял.
Я сказал то, что ваш PB0, PD0 и все остальные имена где-то задефайнены как числа или адреса.

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

Добавлено: Пт янв 10, 2014 17:20:48
sajkel
То что PD0 єто нулевой бит порта D я понимаю. Не могу понять что значит єто выражение 1<<pd0 -сдвинуть единицу на число указывающее номер бита? я прав? Почему тогда не записать єто вот так 1<<0? И зачем что то сдвигать если оно по сути ни куда не сдвигается?

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

Добавлено: Пт янв 10, 2014 17:26:24
YS
сдвинуть единицу на число указывающее номер бита?
Да.
Почему тогда не записать єто вот так 1<<0? И зачем что то сдвигать если оно по сути ни куда не сдвигается?
Для стандартизации. Почему это так полезно - поймете с опытом, когда начнете писать более сложные программы. :)

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

Добавлено: Пт янв 10, 2014 17:32:56
sajkel
Спасибо. Ответ исчерпывающий.

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

Добавлено: Пт янв 10, 2014 19:14:47
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))

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

Добавлено: Пт янв 10, 2014 19:21:43
coredumped
А лучше так:

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

while (PIND&(1 << PD0))
while (PIND&(1 << PD1))

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

Добавлено: Пт янв 10, 2014 19:23:58
menzoda
А еще лучше так

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

#define PD2    1 << 2

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

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

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

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

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

Добавлено: Пт янв 10, 2014 20:05:02
YS
А еще лучше так
Не особо. Будет конфликтовать со встроенными определениями. И макросы я бы в скобочки-то заключал...

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

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


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