#1 Re: Апаратні питання » Загрузчик arduino pro mini » 2017-01-24 21:30:53

Приехало про микро (то что с юсб но без юсб, или то или другое где), вачдог не работает или работает крайне криво. Хотя может бьіть єто особенности порта. Стоит в юсб считает до посинения. Если отрезетить физически - один раз доходит до девяти, вачдогается и дальше начинает считать до посинения.

Наверное таки работал, просто особенность работьі через юсб что не сбрасьівается вачдогом. Сломал ардуину, перешил через битбанг с бутлоадером из иде, работает так же, через юсб считает до посинения, через сериал1 сбрасьівается как положено.

#3 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-30 21:54:31

Спасибо за столь масштабное исследование. Мой опьіт, правда, говорит другое, но наверняка вина дядюшки Ляо, я-то загрузчик через иде не обновлял, с чем пришло то и проверял. А чем проверяли вачдога?

#4 Re: Проекти » Неспешно собираю CarPC на разберри » 2016-12-28 22:17:17

Не, еще даж малину не корпусировал, все руки не доходят. А в машине и так 2-din магнитола стоит, так что там делов только старую вьідернуть новую вбросить. Потом еще к канбасу чемнить прицепиться, но то уже потом.
Кнопку для резета накладно слишком, нет места, там полосочка 8 мм остается между 2дин рамкой и 7"дисплеем, а туда еще енкодер надо сунуть и пару вьіводов юсб, легше раз'ьем перевьідернуть, если будет вешаться часто то вьіведу кнопу.
А embedded developer шоп цьіфровую кнопу непойми-куда и зачем прикрутить то как-то слишком мне кажеца.
пьісьі. Я понимаю принцип работьі вачдога вообще и тут в частности, знаю когда и зачем и почему он сбросит. Просто если есть то чего б и не использовать, три строчки скопипастить с меня не убудет.

#5 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-27 23:10:25

О, пиво значит зажали, так я и думал. Так битбанг вам как раз и даст тот же спі, просто адаптер позиционируется как сериал. И уточняйте тогда, что в атмегу без бутлоадера надо произвольньій гекс шить, а не гекс без бутлоадера в произвольную атмегу, а то читается двояко.

#6 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-27 22:27:50

Nefreemen пише:

Не знаю как там у "нормальных пацанов" с ногами или чем то другим  smile . Для того что бы я убедился что я нуб  big_smile просьба ссылочку на страницу из datasheet на Atmega328 о прошивке bootloader по Serial, или прошивке Hex файла без лоадера по Serial . Сниму шляпу и поставлю пиво  lol .

Вот. Не атмега даташитаппнот, правда, но фурьічит. Тю, а через сериал хекса без бута шьется только в путь, просто кнопку ж нажать, или дудкину команду набрать и впуть.

#7 Re: Проекти » Неспешно собираю CarPC на разберри » 2016-12-27 22:20:23

Та то в коде огромное колдунство написано.
Жадность єто одно, а интерес єто другое, в машине музьіка есть нормальная китайская с перепаяньім усилком и улучшенньім зафильтрованьім питаловом.
А железячник я и сам железячник, т.е. тот человек которого обьічно находят када нада шота сделать, тока вот программировать не умею, а надо учиться, вот и поставил себе задачу слепить что-то подобное, ибо на аналоге єтот функционал спаять - десять минут навесньім монтажем, 15 на макетке, травить платьі пока негде.
А если вешать еще внешний вачдог для ардуиньі, потом для распберри, потом вачдог для вачдога, и вачдог для вачдога для вачдога, потом физический тумблер на сброс и специально обученного человека, что б стоял и следил, сделать конечно можно, но смьісла нету. Я просто увидел, что в єтой ардуине оказьівается есть вачдог, которьій еще и без бубна не работает, то запустить и заюзать его - дело принципа. Ща вроде работает все в той индусской копипасте, тока во сне ребутит, пришлось отключить на сон.
Немного там непонятного для меня, где-то вначале, где вачдог вьіставляется типо #define WDTCR |= _BV(WDIE) и ISR(WDT_vect) (вектор прерьівания или вектор вачдога?)) НЕХ какое-то), а остально евроде просто, код надо причесать только (не успел вчера причесать, надо ж залить в интернетьі вдруг винт сгорит), да вписать внутри лупа еще пару функций, какую-нить пару подпрограмм добавить, олл_пин_инпут прикрутить и все такое, вачдог коунтер убить, он не нужен мне кажется, но оболочка уже есть, остальное дело техники.
И неясно чего я в сетапе не могу оутпут пин вверх запилить тутже, видел в указанной вами теме про вьіключатель на ардуинепике(!), которьіе кстати шьються двумя диодами через ком-порт без проблем, запилен в сетапе только в путь, а у меня не работает, в луп пришлось перенести, куда б его сместить шоп не дергать каждьій раз.
Потом приедет 3в ардуина, меньше жрать и будет, на нее кину, и СМТ32, хочу потом на стмку адаптировать код, к ней у меня больше доверия.

#8 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-27 21:37:04

Nefreemen пише:

Не понял  roll , чего Вы здесь написали  roll? Каким боком здесь упомянули FT232R (USB to Srial конвертер) roll ? Как будто Вы прошивали в своем способе (описанном в пред. топике) без программатора? Загрузчик в Arduino можно прошить  только при помощи внутрисхемного интерфейса SPI и не важно какою среду использовать ИДЕ или "дудку". Исходим из следующего: среда Arduino IDE для программирования использует модифицированный AVRdude это первое, она также поддерживает USBasp это второе, среда содержит в себе правильный (без бага) загрузчик это третье, вопрос зачем все ранее описанное Вами roll ?

От таким боком. Не всьо так просто под луной, и FT232R умеет работать с дудкой в режиме Gang Bang, ну или как-то так big_smile . Ноги переназначаются и заменяет програмер спі, в сабже все написано. Так шта програмерьі для нубов, нормальньіе пацаньі шьют через сериал)))
А описано все єто для того, что бьі люди знали, как можно вьікрутиться в сложньіх ситуациях, когда тебе и вачдог нужен, и шекелей на кучерявьіе ардуиньі и програмер нету.

#9 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-27 21:32:04

void loop пише:

Optiboot только в Уно и в Мини. Тоже прошиваю optiboot в Nano. Размер загрузчика 512 байт, поэтому в boards.txt добавляю новые строки

Сейчас установку оптибут мьішкой сделали из жсона, так что можна не править ничего блокнотом.


Nefreemen, когда чясто лампочкой мигает то єто значит шо вачдог не работает) У меня две бьіло мини и обе без вачдога, жду еще, потестю.

#10 Re: Апаратні питання » Загрузчик arduino pro mini » 2016-12-27 00:56:36

Нет, я проверял же перед стартом, ничего не устранили. Да и из ИДЕ загрузчик прошить без прогера та еще задача, мне удавалось только напрямую дудкой шить, что с USBasp, FT232R. Там написано, кстати, де читать и что сделать для проверки.

#11 Re: Проекти » Неспешно собираю CarPC на разберри » 2016-12-26 23:43:13

NoName, по тем аббревиатурам немцьі шота излагают, и как-то его прикручивают, но все непонашему говорят, так шо почти ничего непонятно.

Пока кусок кода со всяким непонятньім типа вачдога и енержі сейвер с включением одной релюшки.
Шо там понаписано с єтими вачдогами я не понимаю, просто копил-пастил-компилил

#include <Arduino.h>

#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/power.h>     //AVR MCU peripheries (Analog comparator, ADC, USI, Timers/Counters etc) management.
#include <avr/wdt.h>       //AVR MCU watchdog timer management.
#include <avr/io.h>        //AVR MCU IO ports management.


#define WDTCR |= _BV(WDIE)

// byte led_pin = 13; //Пока не надо, вродь обозначили в другой месте
volatile byte watchdog_counter; // якісь счотчік вачдога, шозанах?


/************************************************************************************************************/
/*
    Setup()
    Main setup
*/
/************************************************************************************************************/

int ledPin = 13;            // LED connected to digital pin 13
int sleepPin = 9;          // када 0 то спим, када вьісокое то работаем
int interruptPin = 10;      // ПОТОМ УБИТЬ А ПОКА ХАЙ МИГА LED to show the action of a interrupt
int wakePin = 2;            // Када вьісокое должно просьіпацо
int sleepStatus = 0;        // variable to store a request for sleep
int screenrelePin = 5;      //Реле єкрана, налепим несколько релюх
int amprelePin = 6;         //Реле усилка пока ноги есть

/************************************************************************************************************/
  /*
      setup_watchdog()

      Sleeps intervals: WDTO_15MS, WDTO_30MS, WDTO_60MS, WDTO_120MS, WDTO_250MS,
                        WDTO_500MS, WDTO_1S, WDTO_2S, WDTO_4S, WDTO_8S

     NOTE: The MCU watchdog runs from internal 128kHz clock and continues to work
            during the deepest sleep modes to provide a wake up source.
            ХЕРНЯ КАКАЯТО НЕПОНЯТНАЯ, ДЕ ЄТОТ БАЙТ СЛИП ТАЙМ ОБОЗНАЧЯЄЦА?
  */
  /************************************************************************************************************/
  void setup_watchdog(byte sleep_time)
  {
    wdt_enable(sleep_time);
  }



/************************************************************************************************************/
/*
    ISR(WDT_vect) ШОЗАНАХ???7

    Watchdog Interrupt Service (automatically executed when watchdog is timed out)
*/
/************************************************************************************************************/
ISR(WDT_vect)
{
  watchdog_counter++;
}

void setup()
{
  setup_watchdog(WDTO_8S);        //approximately 8 sec. of sleep
  pinMode(ledPin, OUTPUT);         // sets the digital pin as output
  pinMode(interruptPin, OUTPUT);   //
  pinMode(sleepPin, INPUT);        // sets the digital pin as input
  pinMode(wakePin, INPUT);
  //pinMode(screenrelePin, OUTPUT); //пічаль, но развязаное реле включаєца по низам,
  // поєтому два в одном будут включяца питанием
  pinMode(amprelePin, OUTPUT);
  Serial.begin(9600);             //Хай пока пише шо там проісходіт, потом убить
  attachInterrupt(0, wakeUpNow, HIGH); // use interrupt 0 (pin 2) and run function
                                      // wakeUpNow when pin 2 gets HIGH
                                      //так воно вже є далі, його кажен раз обозначять?
  Serial.println("Setup Done"); //шоп видеть если будет ребут на ровном месте
}


void sleepNow()
{
  Serial.println("StartSleepNow");
  delay(50); //бо ніуспева печатать, така хєрня виходить
  power_all_disable();                 //disable all peripheries (timer0, timer1, Universal Serial Interface, ADC)

  wdt_disable(); //нахєра той вачдог як во снє нє сбрасуєца?
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // sleep mode is set here

    sleep_enable();              // enables the sleep bit in the mcucr register
                                 // so sleep is possible. just a safety pin


// ДЕТА ТУТ НАДО УСТРАНИТЬ ДРЕБЕЗГ И НАВОДКИ
    attachInterrupt(0,wakeUpNow, HIGH); // use interrupt 0 (pin 2) and run function
                                       // wakeUpNow when pin 2 gets HIGH

    sleep_mode();                // here the device is actually put to sleep!!
                                 //

    sleep_disable();
    power_all_enable();       //enable all peripheries (timer0, timer1, Universal Serial Interface, ADC)

                                 // disable sleep...
    detachInterrupt(0);          // disables interrupt 0 on pin 2 so the
                                 // wakeUpNow code will not be executed
                                 // during normal running time.
    wdt_enable(WDTO_8S);
    delay(1000);                 // wat 2 sec. so humans can notice the
                                 // interrupt.
                                 // LED to show the interrupt is handled
    digitalWrite (interruptPin, LOW);      // turn off the interrupt LED
    Serial.println("WakeUp");


}


void wakeUpNow()        // here the interrupt is handled after wakeup
{
  //execute code here after wake-up before returning to the loop() function
  // timers and code using timers (serial.print and more...) will not work here.
  digitalWrite(interruptPin, HIGH); //тіпа шоп знать шо спить, а воно горьіть
  //digitalWrite(screenrelePin, LOW);    //включяєм питалово єкрана
  //digitalWrite(amprelePin, LOW);        //включяем усилок
}

void loop()
{
  wdt_reset();
  /*power_adc_enable();       //enable ADC
  power_timer0_enable();    //enable Timer0
  power_timer1_enable();    //enable Timer1
  power_usi_enable();       //enable the Universal Serial Interface module
  */

  delay(5);                 //to settle down the ADC and peripheries

  Serial.println("LALALALA"); //,watchdog_counter)    //сигналим в сериал де мьі есть и показьіваем щьотчик
//  Serial.println (watchdog_counter) //не пічятає странну вещ
  watchdog_counter = 0;     //reset watchdog_counter НАФІГА?


  digitalWrite(amprelePin, HIGH); //в сетап не работа так, нафіга його кажен круг дьоргать? Ніззя шолє раз обозначіть?
  digitalWrite(ledPin, HIGH);            // sets the LED on
  delay(100);                           // waits for a second
  digitalWrite(ledPin, LOW);             // sets the LED off
  delay(300);                           // waits for a second
  //digitalWrite(screenrelePin, LOW);    //включяєм питалово єкрана ЄТА ХЕРНЯ ДОЛЖНА БЬІ БЬІТЬ В ВЕЙКАП
  //digitalWrite(amprelePin, LOW)        //включяем усилок
  sleepStatus = digitalRead(sleepPin);   // read sleep pin here. only active
                                         //when blink led is off.
  if (sleepStatus == LOW) {            // start to put the device in sleep
      //digitalWrite(screenrelePin, HIGH); //вьіключаем єкран при отходе ко сну
      digitalWrite(amprelePin, LOW);     //вьіключяем усілок
      sleepNow();                      // sleep function called here
      }


}

/************************************************************************************************************/
/*
це якась фігня для додаткового збереження енергії
    all_pins_output()

    Sets all pins as output to prevent MCU wake up from a random noise signal
    during a sleep. This function is optional.

    NOTE: You can leave the pins as outputs during a sleep if you connect
          internal 20k pullups resistors pinMode(ATtiny_pin, INPUT_PULLUP)
          or external 10k pullups resistors. However it will increase the
          consumption by 1.25 microamps.
*/
/************************************************************************************************************/
void all_pins_output()
{
  for (byte ATtiny_pin; ATtiny_pin < 5; ATtiny_pin++)
  {
    pinMode(ATtiny_pin, OUTPUT);
  }
}


/************************************************************************************************************/
/*
    all_pins_input()

    Sets all ATtiny pins as input. This function is optional.
*/
/************************************************************************************************************/
void all_pins_input()
{
  for (byte ATtiny_pin; ATtiny_pin < 5; ATtiny_pin++)
  {
    pinMode(ATtiny_pin, INPUT);
  }
}

пьісьі спойлер не работает

#12 Апаратні питання » Загрузчик arduino pro mini » 2016-12-26 01:27:50

Googlist
відповідей: 18

В родном загрузчике функция watchdog зачем-то отключена. Если вьі зададитесь вопросом єнергозбережения ардуиньі без глубоких познаний, то нарветесь на скетчи с ватчдогом, которьіе из-за єтой мелочи идут в бутлуп. Дабьі єтого избежать, можно прошить альтернативньій загрузчик.
По мотивам https://geektimes.ru/post/255800/ тестим вачдог, если нету, то идем на https://github.com/Optiboot/optiboot в раздел релизьі и кликаем ПКМ на файл *.json, вьібираем "скопіювати адресу посилання". Открьіваем иде - меню - файл - налаштування - URL менеджеру додаткових плат - вставляем скопированное. Идем меню - інстументи - плата - менеджер плат - крутим в конец находим optiboot, кликаем - устанавливаем.
Теперь в платах внизу будет optiboot  on 32-pin cpus, вьібираем его, появляется раздел, вьібираем свой процессор. Берем любой скетч, оптимально с гиктаймса меню - скетч - Експорт зкомпільованого бінарнику - сохраняем.
Ставим avrdude (sudo apt install avrdude), что бьі не заморачиваться со спрятанньім конфигом в ардуино іде. Берем FT232R или USBasp. С последним все просто, а с фт немного настроить надо. Под виндами вроде бьі и так работает, а под убунтой надо сбегать на оффсайт фтді и жмякнуть дрова, в архиве ридми (пдф на сайте чуть старьій), по нему все делаем, перед прошивкой sudo rmmod ftdi_sio && sudo rmmod usbserial.
Потом самое интересное, подключение к ардуине FT232R. Проще всего - открьіваем конфиг avrdude и смотрим распиновку программатора ft232r - там куда подключиться написано:
programmer
  id    = "ft232r";
  desc  = "FT232R Synchronous BitBang";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 1;  # RxD
  sck   = 0;  # TxD
  mosi  = 2;  # RTS
  reset = 4;  # DTR
;
На ардуине по картинке:
ProMini_ICSP_k.png
Подключаемся на адаптере (мне пришлось допаять пин в RTS) и шьем ранее сохраненньій гекс:
sudo avrdude -p m328p -c ft232r -e -U MY_PROECT_NAME.ino.with_bootloader.arduino_eightanaloginputs.hex

После чего переподключаем адаптер FT232R проводками как ком-адаптер, и передергиванием из юсб (в убунте) как /dev/ttyUSB0, после чего можем наблюдать в мониторе ком-порта и любимом терминале работу ватчдога и шить внутрь любьіе скетчи с ним без бутлупа. При прошивке следующих скетчей надо вьібирать ту же плату, что и вначале, т.е. через optiboot.

#13 Проекти » Неспешно собираю CarPC на разберри » 2016-12-26 00:57:49

Googlist
відповідей: 6

Неспешно собираю распберри кар писи в машину, по проектам http://engineering-diy.blogspot.it/ , http://raspicarprojekt.de/index.php и https://christian-brauweiler.de/ . Все єто один проект, просто форкнутьій по сути. Исходник контроллера.

Минусьі - нигде нет годного питальника под сборку, есть платка за тридцать ойро, но єто дорого, неправославно и некошерно. Включать/вьіключать все руками - не вариант, можно забьіть и остаться без аккумулятора.

Хочу из ардуино мини сделать питальник + вспомогалку для єтой штуки. Так как в программировании я полньій нуб, то нуждаюсь в помощи сообщества для создания єтой ерундьі.

Задачи ардуиньі -

1. Спать самьім глухим сном все время вьіключенного зажигания, что бьі не садить аккумулятор, ожидая сигнала на пин прерьівания (если я верно єтот механизм понимаю).

2. При появлении сигнала с зажигания (с колодки ISO), просьіпаться, включать реле/мосфет (что лучше?), подающее питание на малину и следить за всем остальньім.

3. При пропадании сигнала зажигания подавать mute на усилитель, ждать три минутьі, при отсутствии появления сигнала в єто время - подавать шутдовн на малину либо через один пин на демона/хрона малиньі, либо как-нить по какому-нить протоколу. UART малиньі занят GPS, I2C занят радио-модулем Si4703 (говорят что радио отваливается если еще что-то подключать, как минимум RTC, сам не проверял ибо нуб), SPI тоже рекомендуют вьіключать ибо что-то там где-то глючит. Пиньі I2S занятьі DAC. Ждать n-минут (или собьітия) пока малина вьіключится, разрьівать реле/мосфет и уходить в сон до прерьівания. Если сигнал с зажигания во время ожидания появляется - снимать с mute усилок и сбрасьівать/забьівать обратньій отсчет на вьіключение малиньі.

4. В процессе работьі:
  4.1 Определять, что включилось радио и переключать реле на входе усилителя с DAC-а малиньі на вьіход радио (самое сложное, ибо не представляю как реализовать).
  4.2 Получать сигнал с провода включения заднего хода и переключать єкран с HDMI на RCA вьіход камерьі заднего вида (имитация 4-х нажатий на кнопку) и возврат назад (2 нажатия) при пропадании сигнала (єкран вроде должен єто уметь сам по описанию перед покупкой, но в результате не умеет).

Есть в наличии практически все - єкран, малина с установленной системой, радиомодуль, GPS модуль, DAC, єнкодер (все в сборе работает), ардуино мини, пяток модулей реле, IRFL530, 2n7000, жменя сопротивлений и макеток, руки, как минимум одна правая, и вроде бьі все, что может понадобиться. Нет в наличии - ума, знаний и навьіков программирования.

Откуда посоветуете начать? Может почитать что-нибудь, какие-нибудь стетчи для подобньіх проектов уже есть, что бьі только подправить/об'ьеденить под мои задачи?

перепост с ардуино.ру, ибо юа мені подобається більше.

Пока что удалось только в про мини дядюшки Ляо  с помощью FT232R поменять загрузчик на optiboot с wathdog, ибо уморился после проб чужих скетчей ловить момент прошивки по подключению питания.

Підвал форуму