Jump to content

LEVV2006

Members
  • Content Count

    393
  • Joined

  • Last visited

  • Days Won

    1

LEVV2006 last won the day on March 17 2015

LEVV2006 had the most liked content!

Community Reputation

162 Хороший

About LEVV2006

  • Rank
    Постоялец
  • Birthday 11/10/1990

Контакты

  • Skype
    LEVV2008

Информация

  • Пол
    Мужчина
  • Город
    Москва

Электроника

  • Стаж в электронике
    Не связан с электроникой
  • Сфера радиоэлектроники
    Микроконтроллеры, Усилители НЧ
  • Оборудование
    Matrix MOS-620CH
    Aoyue Int968A+
    DT860B+

Recent Profile Visitors

4700 profile views
  1. Главное сам разобрался! Будет теперь наука
  2. ПОБЕДА! Но не совсем моя конечно..... 1) Я вносил изменения в Toolchain чтобы корректно отображался вывод числа с плавающей точкой. Зря я это делал..... Он давал кривой подсчет температуры. (Правда температура у меня почему то все равно отрицательная....) PS: нашел причину!!!! Не правильно производил чтение регистров. Младший байт задвигал на место старшего (не до разобрался в даташите ). (Я вообще не программист- это хобби по вечерам ). Температура заработала как надо! Но доделывать я свой код не буду сторонний мне понравился больше. 2) Совершенно случайно наткнулся на этот сайт. Библиотека с сайта стартанула СРАЗУ! и все заработало. Наконец то что то заработало без танцев с бубном! Кстати очень интересно (на мой взгляд) написан код! И весит он совсем не много Program Memory Usage : 6344 bytes 19,4 % Full Data Memory Usage : 125 bytes 6,1 % Full В общем прикладываю проект к этому сообщению + часть даташита на русском (может кому то будет интересно) bme280 Рус.DOCX BME280Term.rar
  3. Не у кого нет библиотеки........? Странно.... ну ладно. Я то продолжаю разбираться самостоятельно. Я частично (используя гугл) перевел даташит. Кое что узнал интересное и полезное. Решил разбираться с датчиком по частям и начать с температуры. Убрал из библиотеки все лишнее и оставил только температуру. Код отрабатывает. Но блин!!!!!! температура рассчитывается не верно! Что заметил: int32_t adc_T=bme280_read3Byte(BME280_REGISTER_TEMP_DATA); //Считываю регистры температуры. (прям по даташиту) printf("adc_T %x\n",adc_T); // Вывожу что считал с резисторв //adc_T a530 (к примеру такой ответ) adc_T >>= 4; //Сдвик на 4 в право так как там нули и эти бити не используются (по даташиту) printf("adc_T>> %x\n",adc_T); //adc_T>> 4a53 (а на деле вот такой ответ. Откуда 4 взялась?????) В общем я не знаю что за фигня твориться.... Толи числа большие и идет где то идет наслоение в оперативной памяти, то ли компилируется что то криво.... Других объяснений нет. Данные по другим резисторам: CHIPID 0x60 dig_T1 f270 dig_T2 56a dig_T3 3200 adc_T a890 adc_T>> 4a89 Temperature -29.21
  4. Всем привет! Порция очередных сложных вопросов от меня . Что то я совсем не соображу что не работает.... Подключаю датчик BME280 к Atmega328p 16МГц. Для работы с датчиком естественно требуется библиотека. Поискав в интернете я нашел (вроде как) рабочий вариант. Да еще и с примером! Всё это дело я скачал, скомпилировал и попробовал запустить. Итог предсказуем. Ничего не заработало и в первую очередь не стартанула библиотека I2C. Решил что будет надежнее написать самостоятельно попутно разбираясь в коде библиотеки. Библиотеку I2C я использовал свою проверенную :) ,а далее я вооруженный даташитом на BME280 адаптировал скачанную библиотеку для BME280. В целом ничего сложного нет. За вечер получилось все привести в норму. Считываются данные с регистров, ID датчика совпадает с даташитом. Кажется что все работает нормально. Но нет. Проблема в следующем: (Для теста я считываю только показатели температуры) 1) Не верные значения температуры. Причем любое не значительное изменение кода (не в формуле) влечет изменение показателя температуры. 2) Температура не изменяется. Все время в порт выводится одно и тоже. Она изменится если только что нибудь поменять в коде и перезалить прошивку. В чем может быть проблема? У кого нибудь есть уже проверенная и рабочая библиотека? main: I2C: BME280:
  5. Нашел причину зависания. У меня кроме часов на плате есть датчик температуры\влажности. В общем или я его перегрел когда впаивал или это из того что флюс из под датчика не вымылся. Я отпаял датчик и вроде все заработало.... Правда часы какую то чушь пишут... но хотя-бы контроллер не зависает. Буду дальше ковырять....
  6. Опять чудеса. Через каждую строчку кода прописал printf Код стал выполняться и добрался уже до библиотеке I2C. B Застрял в команде start... точнее в настройке TWCR = (1<<TWINT|1<<TWSTA|1<<TWEN); Что примечательно! Эту библиотеку я уже использовал в другом проекте и с тем же МК. Все работало....
  7. А можно поподробнее? Где это посмотреть\проверить?
  8. Я использую бутлоадер для загрузки прошивки. Настроен он так что запускается после нажатия кнопки ресет.
  9. IDE-AtmelStudio Watchdog - нет. Библиотека работы с I2C кривая - Выполнение кода не доходит до обращения к библиотеке. Режим отладки ? Не ? - Я не могу выбрать в настройках симулятор...
  10. Все привет! В очередной раз столкнулся с аномалией...... Пишу код опроса часов DS3231. Библиотеки есть, код написан (как мне кажется без ошибок), компилятор неначто не ругается. Заливаем. МК пытается стартовать..... А потом переключается на бутлоадер как будто после кнопки ресет.. Я немного сгруппировал код. Такой код выполняется (судя по монитору Сом пора) до строчки printf("0 (init_i2c)\n"); Дальше МК перезагрущается. Если код изменить так: То код выполняется как надо и программа продолжает работать. (Строчки printf("0 (init_i2c)\n"); и printf("1\n"); ) отрабатывают как надо. И значения переменным присваивается тоже нормально. Почему так происходит и куда копать? Вот из дизассемблера: Также заметил. Что при не рабочей версии кода иногда в Сом порте не полностью выводится сконтольная строка. Вместо: 0 (init_i2c) Может быть написана: 0 (init_i2c
  11. Когда я писал алгоритм на С у меня была проблема с первым светодиодом. Он всегда загорался разным цветом, а остальные горели нормально...... Вот я и искал библиотеку. Хорошо что у вас заработало сразу!
  12. Если подключить логически анализатор то вы увидите что код написанный на С выполняется дольше чем нужно. И во временные рамки протокола вам не попасть!!! Сам пробовал..... Единственный и нормальный выход из ситуации использовать стороннюю библиотеку. Прикрепил файл. Библиотека маленькая и понятная. Я её использую и по логическому анализатору все четко по временным рамкам. light_ws2812_AVR.rar
  13. Извините что вмешиваюсь. Всю ветку не читал. НО яркость на своих диодах я меняю одной строчкой. ws2812_buff=(uint8_t)((double)DataArray[i+3]*(((double)DataArray[2]*25.0+1.0)/255.0)); Данный приходят с ПК в виде R (0-254), G (0-254), B (0-254) И яркости (0-100) ws2812_buff - буфер цвета DataArray[i+3] - Код цвета. DataArray[2] - Яркость.
  14. Приветствую всех! Потихоньку изучаю контроллер Atmega32u4. Все вроде нормально, но вот bootloader срабатывает как то через раз. По нескольку раз приходится нажимать на кнопку ресет. Изначально (прям с завода) в МК был залит bootloader от Arduino Leonardo. При сбросе МК в диспетчере устройств так и писалось Arduino Leonardo COM - порт такой то. Я сильно заморочился и выяснил что исходники bootloaderа лежат вместе с самой ARDUINO IDE. И основаны они на библиотеке LUFA-111009. Ближе к делу. Используя LUFA-111009 + WinAVR-20100110 я пересобрал bootloader и теперь все работает нормально. НО в процессе правки кода я изменил PID и VID устройства, а также названия устройства (Вместо arduino leonardo установил 32u4 Bootloader). Прошил МК. Сам bootloader работает стабильно, но в диспетчере устройств почему то вместо моего названия ("32u4 Bootloader") написано "Устройство с последовательным интерфейсом USB", а в свойствах Модель:32u4 Bootloader. Хотя если подключить arduino leonardo, то так и определяется как arduino leonardo. Как сделать чтобы при активации моего bootloaderа было написано 32u4 Bootloader в диспетчере устройств?
  15. LEVV2006

    nrf24l01+pa+lna

    Починил! @DrobyshevAlex Большое Спасибо за помощь! Было дело в конденсаторе. Стоял конденсатор на 45 pF. Поставил 220pF и все заработало! Питание я проверил сразу. Все было в норме. Для конечных устройств я естественно делаю плату. А на макете использую Arduino Nano. Очень удобная вещь на мой взгляд. Весть обвес для МК + USB-Uart + удобно вставляется в макетку.
×
×
  • Create New...