Jump to content

Recommended Posts

Кажется нашел ошибку. В файле port.c в строке

#define portCOMPARE_MATCH_A_INTERRUPT_ENABLE    ( ( unsigned char ) 0x02 )

У них стоит 0х10 надо 0х02. Записал в Ардуину с мега328 работает.

Share this post


Link to post
Share on other sites

Ох, мне уже неловко столько спрашивать.

Для чистоты эксперимента скачал тот же файл, что сам выкладывал. Сконвертил сначала в шестой студии. Исправил port.c. Скомпилировалось не без нюансов (2 картинки). Загрузил в чип - после ресета светодиоды горят около секунды и затем гаснут. Сконвертил в седьмой студии. Исправил port.c. Компиляция не проходит, ошибки (на картинке). 

Может, есть понадёжнее способ изучить rtos, чтобы сначала въехать в саму суть, а потом уже разбираться с такими траблами?

as6_error1.jpg

as6_error2.jpg

as7_error1.jpg

Share this post


Link to post
Share on other sites

Спрашивается, что не так с этой платой? :huh:

Отсоединял логический анализатор, поднёс руку к плате и, о чудо, светодиоды замигали! Питание нормальное, 4.7 В, отсоединение проводов программатора не помогает. Завтра попробую другой чип на другом участке платы. 

 

WP_20180518_01_14_08_Pro.jpg

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

Обычный тестовый код работает без проблем:

 

#include "_def.h"
//Глобальные переменные
#include "_var.h"
///*******************
#include "head_files.h"
//----------------------
//-----------------------------------------------------------------------------MAIN FUNCTION---
int main()
{
//----------------------------------------------------------------------***---INITIALISATION---***
_delay_ms(100);
InitLedPorts();
InitGTimers();
TCCR0A = (0<<COM0A1)|(0<<COM0A0)|(0<<COM0B1)|(0<<COM0B0)|(1<<WGM01)|(0<<WGM00);
TCCR0B = (0<<FOC0A)|(0<<FOC0B)|(0<<WGM02)|(1<<CS02)|(0<<CS01)|(0<<CS00);
OCR0A=62;
TIMSK0 = (0<<OCIE0B)|(1<<OCIE0A)|(0<<TOIE0);
//---------------------------------------------------------------------

//------------------------------------------------------------------------------------**--MAIN--**
 SEI
  while(1)  {  
//-------------------------------

    StartGTimer(timer_delay500);
    if (GetGTimer(timer_delay500)==500) {        
        StopGTimer(timer_delay500);
        StartGTimer(timer_delay500);
        TestLedWhite();
    }
//-------------------------------

  }//while
  return 0;
}//main
//------------------------------------------------------------------------------END of MAIN---

Edited by boris911

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

У меня было такое с СТМ32. Запускалась только при касании пальцем корпуса. Пропаял все цепи питания и земли - заработала. Возможно у вас цепи земля или питание длинные и много перемычек и гдето плохой контакт.

Здесь я взял Ардуино мини, удалил ардуиновский бутлоадер и записал программу. Все работает.

У Курница не было проблем потому что Мега 323 и Мега 128 имеют одинаковые Таймер 1.

Share this post


Link to post
Share on other sites

Уже два с половиной года на этой макетке (ес-но, не каждый день), программы у меня все на конечных автоматах, никогда таких проблем не было, да и сейчас, как написал выше, тестовая прога с простейшей мигалкой и службой таймеров заработала сразу. Были бы проблемы с землей или питанием - она бы тоже не запускалась, логично?

Есть паяная макетная плата, чуть попозже попробую на ней.

https://youtu.be/EM_r9gGlIAs

 

Share this post


Link to post
Share on other sites
7 minutes ago, boris911 said:

Были бы проблемы с землей или питанием - она бы тоже не запускалась, логично?

Абсолютно логично. В этом и проблемы, что по логике все должно работать. Мигать начинает когда подносите палец к правой стороне микросхемы. Попробуйте В0 посадить на землю. Это вход, можно через резистор 1 к.

В0 это вход таймера 1 ICP.

Share this post


Link to post
Share on other sites
1 час назад, snn_krs сказал:

Попробуйте В0 посадить на землю. Это вход, можно через резистор 1 к.

В0 это вход таймера 1 ICP.

Просто горят оба. Но шаманство руками уже никакого влияния не оказывает.

Может быть, в шестой версии фриртос недостаточно корректно определены некоторые выводы и таймеры? И в последней десятой версии это уже устранено? Просто у меня не получается запустить десятку, там больше взаимосвязей между файлами, пока для меня неподъемно.

 

Share this post


Link to post
Share on other sites

Теперь всё чудесно! На С5 500 мс, на И1 - 200, вроде как. В чем же был этот секрет?

Share this post


Link to post
Share on other sites

Вот полностью исходники попробуйте разобраться v9.zip

После конвертации из АС 4 в АС 7 были ошибки, типа компилятор у меня установлен на другом диске. Поэтому пришлось создать новую конфигурацию mydef. В этой папке скомпилированные файлы.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By ВикторТ
      Добрый день! Пытаюсь запустить SDкарту по 4-проводному интерфейсу совместно с использованием библиотеки STemWin под управлением FreeRTOS. Как только запускаю GRAPHICS_Init(), SDкарта перестает работать. Объясните, пожалуйста, в чем может быть причина.
    • By Anton Klapatun
      День добрый!
       
      Имеется sim-карта со статическим IP и модем SIM800C, который через UART соединен с STM32F0.
      Прочитав статью на хабре, которая и являлась отправной точкой, было решено повторить подвиг, но в версии lwip 2.0.3, которой я пользуюсь, ppp изменился до неузнаваемости, что сначала внесло некоторый сумбур. Но в документации к lwip был найден текстовый файл с настройкой ppp-соединения (ppp.txt, прикреплю его ниже), в котором было все, что нужно для счастья, но когда модем начал общаться с контроллером, дальше фазы LCP дело не зашло. Как я понял из документа (ppp_connect.docx), который оказался у меня уже-и-не-помню-откуда, после конфигурирования параметров соединения в фазе LCP контроллер должен посылать в модем пакет с заголовком PAP (C0 23), но он почему-то этого не делает... Он вообще больше ничего не делает. Я пытался проследить в отладчике весь путь запроса, что приходит от модема, но это только больше меня запутало.
      Собственно, прием данных у меня организован через прерывание. После ввода AT-команды "ATD*99***1#" и получения ответа "CONNECT", устанавливается флаг "ppp_enable" и при приходе байта он кладется в очередь `xQueue_PPP_Package`.
      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { uint8_t u8; if(huart == &huart1) { if (ppp_enable == true) { portBASE_TYPE xHigherPriorityTaskWoken_PPP_Rx; u8 = Sim800.UsartRxTemp; xHigherPriorityTaskWoken_PPP_Rx = pdFALSE; xQueueSendFromISR(xQueue_PPP_Package, &u8, &xHigherPriorityTaskWoken_PPP_Rx); } else { /*Reception of AT commands*/ } HAL_UART_Receive_IT(&huart1,&Sim800.UsartRxTemp,1); } } В задаче `StartLwIPTask` в бесконечном цикле проверяется эта очередь и при появлении элементов, записывает их в массив `PPPx.Data` и при фиксации второго HDLC-заголовка (0x7E), отправляет данные в lwip функцией `pppos_input`.
      P.S. Переменная `PPPx.Last_Index` это размер пришедшего ppp-пакета.
      void StartLwIPTask(void const * argument) { /* USER CODE BEGIN StartLwIPTask */ /*Создаем очередь*/ xQueue_Sim800_Package = xQueueCreate(128, sizeof(uint8_t)); xQueue_PPP_Package = xQueueCreate(128, sizeof(uint8_t)); uint8_t u8=0; volatile int setup = 0; tcpip_init( NULL, NULL ); /*Инициализация стека tcp/ip*/ /*Create a new PPPoS interface*/ ppp = pppos_create(&ppp_netif, output_cb, status_cb, 0); // /* Auth configuration, this is pretty self-explanatory */ ppp_set_auth(ppp, PPPAUTHTYPE_PAP, "beeline", "beeline"); /* Require peer to authenticate */ ppp_set_auth_required(ppp, 1); /*Only for PPPoS, the PPP session should be up and waiting for input.*/ ppp_set_silent(ppp, 1); /* * Initiate PPP listener (i.e. wait for an incoming connection), can only * be called if PPP session is in the dead state (i.e. disconnected). */ ppp_listen(ppp); /* Infinite loop */ for(;;) { if (sim800_init() == S_RESET) /*Настройка модуля Sim800*/ continue; for (;;) { if (pdPASS == xQueueReceive(xQueue_PPP_Package, &u8, 100/portTICK_RATE_MS)) { if (u8 == 0x7E) t++; PPPx.Data[PPPx.Last_Index++] = u8; if (t==2) { PPPx.Last_Index--; pppos_input(ppp, PPPx.Data, PPPx.Last_Index); t=0; memset(&PPPx, 0, sizeof(PPPx)); } } } } /* USER CODE END StartLwIPTask */ } Как я писал выше, все идет хорошо, пока идет фаза LCP, но после подтверждения контроллера запроса опций, наступает тишина.
      В интернете мне удалось найти довольно мало исчерпывающей информации и примеров по связке stm32+lwip+ppp, если кто-нибудь занимался подобным или сталкивался с похожей проблемой, буду очень признателен за помощь и за пинки в нужном направлении. Заранее спасибо.
       
       
      ppp.txt
      ppp_connect.docx
    • By Michael4you
      Основные обязанности:
      •проектирование, разработка и поддержка ПО для встраиваемых систем;
      •сопровождение кода и тестов;
      •документирование разрабатываемого ПО;
      Требования к кандидату: 
      • опыт работы от 3 лет;
      • уверенное знание C;
      • опыт разработки встраиваемых приложений;
      • опыт работы с платформами на ARM-процессорах;
      • опыт работы с STM32;
      • опыт работы с ОСРВ (желательно FreeRTOS);
      • опыт работы с Keil, System Workbench;
      • опыт работы c ModBus, USB, CAN;
      Приветствуется:
      • опыт проектирования архитектур ПО;
      • знание Python;
      Условия:
      •трудоустройство по ТК РФ;
      •доход обсуждается с успешным кандидатом (от 60 тыс.руб.)
      •дистанционная работа, можно работать из дома;
      •выплаты заработной платы 2 раза в месяц
      Наш сайт: http://i-mt.net/
      Моя почта: dezh@i-mt.net
      Мой мобильный: +7963 776 36 55 
      С уважением, Михаил.
    • By Wenter
      Доброго времени суток. Подскажите пожалуйста, как установить файл с расширением .dll в Keil. Необходимо установить утилиту StateViewer для изучения FreeRTOS.
  • Сообщения

    • Ты нарушил последовательность действий) 1) Припаиваешь конденсатор К ВЫХОДУ TP4056. Не к двигателю. Судя по тому, что ты подключаешь под напряжением, и подключаешь разряженный конденсатор (нарушаешь все инструкции), сработает защита от КЗ. 2) Вставляешь зарядку для зарядки конденсатора и соответственно выходу платы из защиты (стандартная процедура для выхода из защиты во всех общих случаях). Достаёшь зарядку. 3) Нажимаешь кнопку. Если ты не выполнил правильно последовательность, то работать и не должно было.   А если сильно напрягает то, что при перегрузке для выхода из защиты нужно ставить на зарядку, можно сделать автоматический выход из защиты - поставить резистор между B- и OUT-. А лучше, что логичнее  - выкинуть защиту\закоротить B- и OUT-. Ты это сам сделаешь, когда поймёшь, что при малейшей нагрузке срабатывает защита. У тебя и так механическая кнопка, она не требует защиты.
    • Поддельные моторы. Моторолла стала ONSEMI в 2000 году и маркировка была другой и корпусов как у правого у ней не было никогда, когда она была мотороллой   Слева правильная моторолла 
    • На фотке были мотороллеры, четко помню. Вот эти хорошие, бета очень линейная до 5 Ампер.
    • Здрасти. Эт снова я. Малая обновка. в УНЧ 50 8 были заменены дубовые транзюки П308М, на 2N5551. На одном выходе была постоянка 30мв, на другом было все в порядке - 8мв. Потому что на том на котором было 8мв, я ранее корректировал резисторы R5(3.9к) и R8(3.9к) до 4.7к. А на том канале на котором было 30мв, был скорректирован только R5. Добил еще и R8 и стало на выходе 12мв. На этом можно успокоиться. Также запаял помехогасящий конденсатор на первичную обмотку транса от возможных помех в сети.  Есть идея скорректировать резисторы рядом с выходными транзюками 1Ом 0,5 Вт до 0.33Ом. Говорят положительно сказывается на динамике и низких.  А так осталось привести макинтош в божеский вид. Отшкурить, залакировать (возможно покрасить). Также надо бы как то изготовить пластиковые кнопки для рычажков преда моно/стерео и тонкомпенсации + крутилку записи (хотя там оно отключено, но для эстетики надо). Есть друг занимающийся 3д печатью, думаю к нему обратиться с этой задачей.
    • У тебя хоть иногда возникают свои собственные мысли, чтобы подобные выводы делать? - или только умеешь повторять как попугай, патриот ты наш ?  Где это я об этом написал? Отсебячину несёшь. Если бы не любил жить, где родился, тогда бы давно отсюда сдристнул. А так буду по возможности очищать свою страну от воров, бандитов, убийц и другой твари.   
    • Вообще-то это не коммутатор, а 4-х канальный аудиопроцессор. Китайский аналог процессора TDA7313D. Выпускаются аналоги: PT7313, PT2313L, SC2313. CSC2313... На казусе я когда-то писал об этих микросхемах. Да и в интернете на профильных сайтах неоднократно упоминаются эти микросхемы при ремонте аудиоаппаратуры, в основном автомагнетол.
    • Staryy можно ссылку на удобоваримом ? или если у кого есть готовая печатная плата индикации в lay то скиньте пожалуйста
×
×
  • Create New...