Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 31 по 40 из 51
  1. #31
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    95% времени основной цикл занимается тем, что ждет, пока таймер запишет в CalcedWaveLength что-либо ненулевое.

    Таймер в CalcedWaveLength записывает посчитанную длительность импульса как только импульс закончится. При этом в качестве единицы измерения используются не микросекунды, а в вызовы таймера. Если на ноге существовала 1 в течении 4х вызовов таймера - в CalcedWaveLength попадет именно 4. И попадет она туда строго после того, как импульс закончится.

    Этот веселый цикл for (;CalcedWaveLength==0 со смайликом тупо стоит и ждет пока таймер не запишет CalcedWaveLength. Как только обнаружилось, что в переменной CalcedWaveLength не 0 (таймер записал значение), цикл ожидания завершается и идет программа дальше.

    После получения CalcedWaveLength сохраняем ее значение, обнуляем (чтобы не пропустить следующую длительность импульса) и шлем в комп полученные данные.

    В новом коде сразу идет анализ полученных данных исходя из известных длительностей.
    Код:
    	uint8_t cwl=CalcedWaveLength;
    	CalcedWaveLength=0;
            if ((cwl>2)&&(cwl<5))
              UART_SendByte('0');
            else
            if ((cwl>=5)&& (cwl<8))
              UART_SendByte('1');
            else
              UART_SendByte('?');

  2. #32
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Ты на какую ногу вешаешь вход данных?

  3. #33
    Пользователь
    Регистрация
    25.01.2011
    Сообщений
    24
    Вес репутации
    168

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Чтобы проверить работает ли хоть что-то, вставил "неправильные" функции вывода:
    void loop (void)
    {
    for (;CalcedWaveLength==0;
    uint8_t cwl=CalcedWaveLength;
    CalcedWaveLength=0;
    if ((cwl>2)&&(cwl<5)) {
    UART_SendByte('0');
    Serial.print('0'); }
    else
    if ((cwl>=5)&& (cwl<8)) {
    UART_SendByte('1');
    Serial.print('1');
    }
    else {
    UART_SendByte('?');
    Serial.print('2');
    }
    }

    открыл монитор порта - тишина

  4. #34
    Пользователь
    Регистрация
    25.01.2011
    Сообщений
    24
    Вес репутации
    168

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Цитата Сообщение от SBorovkov Посмотреть сообщение
    Ты на какую ногу вешаешь вход данных?
    Менял. Пробую и D2 и D3. Сейчас висит на D2.

  5. #35
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Используй либо мои функции отсылки данных в UART либо свои. Мешать их в одном проекте нельзя.

    "Неправильную" инициализацию порта не забыл добавить?
    И мою инициализацию UART_Init() убирай тогда.

    Если не поможет инициализация порта, пробуй поменять содержимое таймера на какое-нибудь простое, в духе.

    WaveLength++;
    if (WaveLength==50)
    {
    WaveLength=0;
    CalcedWaveLength=3;
    }

    Ну и в начале попробуй что-нибудь заслать в порт для теста.
    Последний раз редактировалось SBorovkov; 26.01.2011 в 04:36.

  6. #36
    Пользователь
    Регистрация
    25.01.2011
    Сообщений
    24
    Вес репутации
    168

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    "Неправильную" инициализацию порта не забыл добавить? - просто не понял, что и куда добавлять.

  7. #37
    Пользователь
    Регистрация
    25.01.2011
    Сообщений
    24
    Вес репутации
    168

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    И еще:

    for (;CalcedWaveLength==0;


    судя по всему, из этого цикла программа уже не выходит

  8. #38
    Пользователь
    Регистрация
    25.01.2011
    Сообщений
    24
    Вес репутации
    168

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Проверял банально управляя зажиганием и гашением светодиода. 8-)

  9. #39
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    Вместо моей инициализации UART_init() надо вписать твою инициализацию порта
    Serial.begin(115200);

    Из цикла видимо не выходит потому, что CalcedWaveLength==0

  10. #40
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Помогите. Не могу понять тянет ли ардуино проект.

    другой код в прерывание пробовал записать? Который просто до 50 считает

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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