PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Питание (http://pccar.ru/forumdisplay.php?f=173)
-   -   Блок питания NEXUS7-2012,2013 (или любого другого планшета) (http://pccar.ru/showthread.php?t=23236)

awtoap 22.06.2017 10:59

Цитата:

При всем уважении, но по моему нет ни одного ответа от awtoap, где бы он не обо$рал все, что связанно с ардуино. Я понимаю, что ардуино для начинающих, но зачем эта агрессия? Не надоело еще?
Але...ты ниче не попутал? Я за нее от силы пару раз упоминал за все время тут.

jonikus81 22.06.2017 11:33

Цитата:

Сообщение от awtoap (Сообщение 388994)
Але...ты ниче не попутал? Я за нее от силы пару раз упоминал за все время тут.

Видимо спутал. Извиняюсь. Стало неприятно, когда Вы приравняли все счетчи ардуино к быдлокоду. Мне с моим расстройством памяти этот быдлокод дается с огромными усилиями и трудом(поймут единицы). А тут тебя еще и к быдлу ровняют.

oleg707 22.06.2017 15:48

Цитата:

Сообщение от awtoap (Сообщение 388994)
код

PHP код:

void UPRAVLENIE_PINAMI() // функция перевода логических параметров в реальные состояния пинов   // http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry  // https://geektimes.ru/post/255744/ Ускоряем свою Arduino   /* http://robotosha.ru/arduino/digitalwrite-optimizing-arduino.html */
{// UPRAVLENIE_PINAMI ~~~//тут мы сначала пишем  в переменную регистры, а потом сделаем PORTB = PORTBregistr; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
// PORTBregistr - обрабатывем регистры порта B атмеги

        
if (LED == ){ PORTBregistr |= 1<<5;     } //PORTB |= 1<<5; //установит "1" (сигнал высокого уровня) на выводе PB5. //digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
             
else { PORTBregistr &= ~(1<<5);  } //PORTB &= ~(1<<5); //установит "0" (сигнал низкого уровня) на выводе PB5. //digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
     
if (SAMOZAPITKA == 1){ PORTBregistr |= (<< 1); } else {PORTBregistr &= ~((<< 1));}         //PB1 управление самозапиткой блока питания IN4///1 = есть самозапитка; 0 = нет самозапитки //http://microsin.net/programming/avr/accessing-avr-ports-with-winavr-gcc.html
           
if (SLEEP == 1){ PORTBregistr |= (<< 2); } else {PORTBregistr &= ~((<< 2));}         //byte SLEEPpin = 10; /* PB2  управление транзюком сна VT4 (на датчик холла))*/ //1 = потух экран(есть масса на пине сна); 0 = штатная работа планшета (нет массы на пине сна)
           
if (HUB == 0)  { PORTBregistr |= (<< 3); } else {PORTBregistr &= ~((<< 3));}         //HUB =0;//byte HUBpin = 11; /* PB3 управление транзюком питания хаба*/ // 1-есть питание, 0 - нет питания
           
if (OTG == 1)  { PORTBregistr |= (<< 4); } else {PORTBregistr &= ~((<< 4));}         //bool OTG = 0; //byte OTGpin = 12; /* 16pin = PB4 = pin D12 MISO управление транзюком OTG Q1*/ //1 = есть масса на OTG; 0 = нет массы на OTG

// PORTDregistr - обрабатывем регистры порта D атмеги

       
if (PlanshBAT == 1){ PORTDregistr |= (<< 6); } else {PORTDregistr &= ~((<< 6));}         //bool PlanshBAT = 0; //byte PlanshBATpin = 6; /* 10pin = PD6 = pin D6 PWM    включить 1 канал KIW            ..... управление питания БАТАРЕИ планшета через управляющую ногу IN2-5pin*/ //0 = нет питания; 1 = есть питание ( БАТАРЕИ планшета)
     
if (REGISTRATOR == 1){ PORTDregistr |= (<< 4); } else {PORTDregistr &= ~((<< 4));}         //bool REGISTRATOR = 0;   //byte REGISTRATORpin = 4; /* 2 pin = PD4 = pin D4 выход 12В для работы видеорегистратора (D4 -IN1)*/ 
 
if (II_KIW_pin_POGO == 1){ PORTDregistr |= (<< 2); } else {PORTDregistr &= ~((<< 2));}         //bool II_KIW_pin_POGO = 0;   //byte II_KIW_pin_POGOpin = 2; /*  32pin = PD2 = pin D2         включить 2 канал KIW    управление SS2 выходом питания  +5V (2 канал kiw3312s) на пого пин(или USB), чтоб планшет думал, что идет зарядка*/ //0 = нет 5V на POGO; 1 = есть 5V на POGO
             
if (REM == 1){ PORTDregistr |= (<< 7); } else {PORTDregistr &= ~((<< 7));}         //bool REM = 0; //byte REMpin = 7;          /* 11pin = PD7 = pin D7 выход сигнала REM (+12v) (IN3)*/ //0 = нет 12В на выходе REM; 1 = есть 12В на выходе REM
 
            //Serial.print ("PORTBregistr, BIN = "  ); Serial.println (PORTBregistr, BIN); // вывели порт B атмеги на монитор порта
            //Serial.print ("PORTDregistr, BIN = "  ); Serial.println (PORTDregistr, BIN); // вывели порт D атмеги на монитор порта
PORTD PORTDregistr//прописали порту D атмеги в регистры команду на запись нулей и единиц.
PORTB PORTBregistr//прописали порту B атмеги в регистры команду на запись нулей и единиц.
}//конец UPRAVLENIE_PINAMI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

вот кусок кода из моего ардуино, это оптимальный код?


Цитата:

Сообщение от jonikus81 (Сообщение 388989)
ATmega2560 за глаза должно хватить... В связке с сериал менеджером можно реализовать кнопки, а так же обратную связь с андроидом (кнопки, виджеты и тд). Ног вполне достаточно.

то есть еще на сериал атмеги2560 вешать тот же ch340g, а с него уже делать выход на юсб(хаб)?
Или лучше прицепить блютуз модуль? ( hc06 тот же)
На планшет, соответственно, сериал менеджер.

jonikus81 22.06.2017 18:54

Цитата:

Сообщение от oleg707 (Сообщение 389010)
то есть еще на сериал атмеги2560 вешать тот же ch340g, а с него уже делать выход на юсб(хаб)?
Или лучше прицепить блютуз модуль? ( hc06 тот же)
На планшет, соответственно, сериал менеджер.

Если делать "народный" БП, что бы каждый мог прошить дома не имея программатора тупо через ЮСБ, то да, ch340g нужно ставить (но бутлоадер все равно придется шить через ISP единожды в начале). Тут МК через CH340G в хаб и все.
Если делать "себе" и шить программатором через ISP(юзеры без программатора мимо), то можно подключить HS-05(06) и общаться по блютусу, но звук по блютусу уже не пустишь на магнитолу, так как блютус планшета будет занят.

awtoap 22.06.2017 19:03

Цитата:

Видимо спутал. Извиняюсь. Стало неприятно, когда Вы приравняли все счетчи ардуино к быдлокоду. Мне с моим расстройством памяти этот быдлокод дается с огромными усилиями и трудом(поймут единицы). А тут тебя еще и к быдлу ровняют.
Не воспринимай так все близко к сердцу...легче по жизни будет. Я тоже не вчера начал программировать и мне это стоило расставания с двумя подругами...это так лирика.

Цитата:

вот кусок кода из моего ардуино, это оптимальный код?
Скорее что нет. Оптимальным будет прямая запись в порт ибо выполняется за одну машинную команду (если память не подводит). Вообще оптимальность по этому куску можешь определить так: как сейчас, откомпилировав и посмотреть размер полученного файла на выходе. Затем заменяешь прямой записью в порт и делаешь тоже самое, что и выше и сравниваешь. В голове у себя откладываешь какой вариант был лучше и пользуешь потом.

ЗЫ. Используй константы пинов, дабы потом не путаться. Типа pinPlanshBAT=6 PortB = | (1 << pinPlanshBAT)...и тд.

Цитата:

то есть еще на сериал атмеги2560 вешать тот же ch340g, а с него уже делать выход на юсб(хаб)?
Или лучше прицепить блютуз модуль? ( hc06 тот же)
На планшет, соответственно, сериал менеджер.
Тыж вроде говорил, что хочешь эмулировать клаву через усб? То мост не подойдет. Если через serialmanager, то можешь и мост прицепить и блюпуп. У нее вроде 2 уарта.

oleg707 22.06.2017 21:54

Цитата:

Сообщение от awtoap (Сообщение 389021)
Не воспринимай так все близко к сердцу...легче по жизни будет. Я тоже не вчера начал программировать и мне это стоило расставания с двумя подругами...это так лирика.



Скорее что нет. Оптимальным будет прямая запись в порт ибо выполняется за одну машинную команду (если память не подводит). Вообще оптимальность по этому куску можешь определить так: как сейчас, откомпилировав и посмотреть размер полученного файла на выходе. Затем заменяешь прямой записью в порт и делаешь тоже самое, что и выше и сравниваешь. В голове у себя откладываешь какой вариант был лучше и пользуешь потом.

ЗЫ. Используй константы пинов, дабы потом не путаться. Типа pinPlanshBAT=6 PortB = | (1 << pinPlanshBAT)...и тд.

прямая запись в порт выполняется за одну машинную команду.
прямая запись в 8 портов ( одного регистра) тоже выполняется за одну машинную команду.
значения , пихаемые в порт меняются по всему скетчу, поэтому, чтобы не дергать порт, значение виртуальное(pinPlanshBAT), а перезапись портов выполняется один раз за цикл через вызов функции.
Плюс удобнее портировать на другую платформу - просто переназначить номера портов в функции.
Я бы сказал, что чуть оптимальнее писать напрямую в порт, не пихая в переменную регистров, но экономия пару тактов буквально, потому не я не заморачивался на 2/16000000 секунды (2 такта на 16МГц)

Цитата:

Тыж вроде говорил, что хочешь эмулировать клаву через усб? То мост не подойдет. Если через serialmanager, то можешь и мост прицепить и блюпуп. У нее вроде 2 уарта.
я хочу кнопки на руль, универсальные.
атмега32u4 умеет usb_hid, то есть будет работать без сериал менеджера.
Если сериалменегер решает проблему без дополнительного проца - тогда проще.
У меня и так юсб портов не хватает:
1 - звук карта
2 - изи кап( камера)
3 - на управляющий процессор ( напрямую или через уарт)
4 - для внешней флешки.

Тут вопрос нубский, если я подключу сериал менеджер, то смогут ли одновременно работать звуковая и изикап ?

awtoap 22.06.2017 22:50

Цитата:

Тут вопрос нубский, если я подключу сериал менеджер, то смогут ли одновременно работать звуковая и изикап ?
А какие должны быть проблемы? Хотя это ведро и тут трабла может быть в самом не подходящем месте. Вообще можешь поставить эксперимент через внешний хаб и уже точно будешь знать пашет или нет.

Цитата:

Я бы сказал, что чуть оптимальнее писать напрямую в порт, не пихая в переменную регистров, но экономия пару тактов буквально, потому не я не заморачивался на 2/16000000 секунды (2 такта на 16МГц)
Тут не в скорости дело, а в размере кода! У нас стоит задачи впихнуть не впихуемое.
Либо бери жирный проц изначально с усб, либо разнеси на два проца. Скажем управление логикой питальника на меге 48(8) и передачей ей временных параметров по уарт (спи). А на проце с усб вся остальная требуха.

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

oleg707 23.06.2017 00:01

Цитата:

Сообщение от awtoap (Сообщение 389026)
А какие должны быть проблемы? Хотя это ведро и тут трабла может быть в самом не подходящем месте. Вообще можешь поставить эксперимент через внешний хаб и уже точно будешь знать пашет или нет.



Тут не в скорости дело, а в размере кода! У нас стоит задачи впихнуть не впихуемое.
Либо бери жирный проц изначально с усб, либо разнеси на два проца. Скажем управление логикой питальника на меге 48(8) и передачей ей временных параметров по уарт (спи). А на проце с усб вся остальная требуха.

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

тогда проще 2560 взять с ch340 и не заморачиваться.

jonikus81 23.06.2017 10:25

Цитата:

Сообщение от oleg707 (Сообщение 389027)
тогда проще 2560 взять с ch340 и не заморачиваться.

И один проц будет проще прошивать, нежели 2 или 3. Согласен с awtoap, нужны эксперименты, а то теория очень часто разнится с практикой. Хаб желательно более 4х портов.

oleg707 23.06.2017 17:05

Цитата:

Сообщение от jonikus81 (Сообщение 389034)
Хаб желательно более 4х портов.

места не хватает ((
и на разъёмы юсб тоже


Часовой пояс GMT +4, время: 14:27.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot