31.12.2018, 13:27 | #21 | ||||
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
Цитата:
Цитата:
Цитата:
С частотой кварца я давно разобрался. Верхние строки кода я удалил ибо они никак не управляют ардуиной. Вернее не я а, разработчик этого кода - Лазаров. Я с ним списывался. Адаптировать его под 32U4 он, паразит не хочет. Ну это не беда. Это код не полностью (только луп). Цитата:
Попробую ещё раз повнимательнее, но чувствую что бесполезно |
||||
31.12.2018, 13:41 | #22 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Ок. Давай сначала.
Что из электронной схемы ты уже выкинул. Избавимся от лишнего кода сначала. Убери из кода который ты выше представил execCmd везде. И если работает убери и саму функцию. Убери это: ISR(INT0_vect) { //interr = register_get( INTSTATUS); //if( interr & ( 1 << ROKR) && interr & ( 1 << RNOKR)) //register_set( INTRESET, 0x83); //inter |= ( 1 << 1) | (1 << 0); //register_set( INTRESET, 0x00); }; и это: // Enable ATMega Interrupts on INT0 EICRA |= (1 << ISC01); // The falling edge of INT0 generates an interrupt request EIMSK |= (1 << INT0); // Enable INT0 После этого обязательно проверь работу кода! В коде поменяй строку на DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB2) Если работает, то поедем дальше. Убираем из кода который ты переделывал уже, там где отсылка в КОМ порт все строки начинающиеся с execCmd. Проверяем работает ли, если да, то убираем и функцию: void execCmd( const byte cmd) { PORTB &= ~( 1 << PINB1); spi_transfer( 0x11); spi_transfer( cmd); PORTB |= ( 1 << PINB1); _delay_ms( CMD_WAIT_MS); PORTB &= ~( 1 << PINB1); spi_transfer( 0x11); spi_transfer( nocmd); PORTB |= ( 1 << PINB1); }; и сверху void execCmd( const byte cmd); Затем эту же строку меняем на DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB6) И во всём коде заменяем PINB2 на PINB6 И перепаиваем вывод PB2 на PB6 После проделанного пиши получилось или нет. И если нет, то на каком шаге? Потом спортируем на другой контроллер. Забегая вперёд. Для портации строка DDRB |= (1 << DDB3) | (1 << DDB5) | (1 << DDB6) поменяется на DDRB |= (1 << DDB2) | (1 << DDB1) | (1 << DDB6) | (0 << DDB3) (вот это может и не надо | (0 << DDB3), но логичнее включить на вход порт, хотя он и так в 0... попробуй сначала без) (Вот поэтому у тебя на 32U4 не заводился SPI скорее всего). выводы SPI физически тоже поменяются, расположение PB6 поменяется физически, но уже программно останется как есть. Последний раз редактировалось T_r_D; 31.12.2018 в 14:28. |
31.12.2018, 16:39 | #23 |
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
T_r_D, что такое - execCmd?
Гуглил, бесполезно блин... НГ... как ни крути, мешает творчеству... дети послали за тетраборатом в аптеку... ох блин... |
31.12.2018, 18:19 | #24 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
А-ха-ха!
Зачёт! Ну ты в свой код посмотри. у тебя куча вызовов этой функции, там где в КОМ порт пишешь. Видимо эта функция передаёт данные на вторую микруху которую ты не используешь. Про тетраборат порадовало Лизунов в шампанском вылавливать будешь )))) |
31.12.2018, 21:10 | #25 |
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
я в юности на бейсике писал, фор ту некст лет принт, гоу ту, ну и тд... это и спасает.
Погоди, я чот не догоняю... - пишешь в ком порт, а функция передаёт данные на другую микруху... у микрухи, что... ком порт чтоль есть??? Не... шампунь мы не пьём!.. а водка, думаю, растворит эту мерзкую субстанцию, навязанную нам ненавистными буржуями :-) ))). ну или накрайняк - проскочит... |
31.12.2018, 21:31 | #26 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
execCmd( tdwn);
// PORTB &= ~( 1 << PINB0); //установить 0 на линии SS Serial.println ("колесо вниз"); Чей это код? ))))) А execCmd? А если посмотреть в тело функции, то понятно что он CS вешает на вторую микруху, которую ты не используешь (PB1). Так если ты её не используешь, так зачем код? Пробуй делать как выше написал короче. Если всё будет ок, то и от ножек избавимся и код поуменьшится. А если совсем всё норм, то и на промикре станет пахать (ну если до низу сообщения дойдём без ошибок). |
01.01.2019, 16:26 | #27 | |
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
Цитата:
Начинаешь удалять лишние строчки (или добавлять свои) и... код не проходит проверку. Ну сам понимаешь, к примеру, если вверху обьявлена переменная, а я внизу удалил строчку где есть на неё ссылка, то всё!... пипец... И сидишь ломаешь голову - что не так... НГ зараза. ща буду ковырять |
|
01.01.2019, 17:12 | #28 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Делай как описываю выше.
Сначала убери прерывание полностью. Затем убери из кода execCmd, саму функцию и её объявление сверху. Затем убери лишние порты. Перепиши один порт на другой и перепаяй проводок. Если всё работает, то переназначь выводы SPI и перекинь на другой контроллер. Но нужно на работающем экземпляре добиться того, чтоб не использовались не нужные ноги, чтоб CS перешёл на ногу PB6 поскольку она свободна на промикре и чуть покромсать код чтоб не было лишнего. |
01.01.2019, 17:32 | #29 |
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
Сука, заработала! про микро мучать не стал, врубил леонардо. Леонардо сразу заработала, правда почемуто иногда ложные команды залетают, типа наводки чтоли какието.. не знаю. с ардуино уно такого нет... Там всё нормально.
Спасибо, братан, буду пробовать библиотеку подключать для управления планшетом Начало положено)))) теперь надо запустить леонарду в режиме слейв, чтоб она не мешала магнитоле! )) PS/ execcmd не убирал. прерывания не убирал. только порты переназначил. я и раньше это делал на про микро, но почемуто только щас на леонарде заработала... ПРобовал на ардуине уно убирать execCmd. Работает, но в начале работы монитора порта залетают ложные нажатия, потом всё норм. Не знаю с чем это связано Последний раз редактировалось nikey; 01.01.2019 в 18:13. |
02.01.2019, 21:57 | #30 |
Новый Пользователь
Регистрация: 28.10.2018
Город: орел
Регион: 57
Машина: пежо 307
Сообщений: 17
|
Подцепил библиотеку управления планшетом Александра Фёдорова с сайта DIXOM. Теперича хоть планшет, хоть ноутбук управляются с подрулевых кнопок. Надо, конечно, еще многое что допилить, но пока и так прикольно :-)
Чото с наводками надо делать... T_r_D, прикинь, подключил планшет к леонарде, а леонарду к магнитоле (ну все как надо по схеме)... Как поперли ложные нажатия!... Песни, громкость как начали щёлкать!... Ну я поплевал на левую руку (чтоб контакт получче был) и взялся за металлическую крышку планшета. Ложные нажатия сразу прекратились и всё заработало. Надо где-то в коде массу прописать :-)))) Если серьёзно, то надо получше поизучать код - какая строчка за что отвечает. Я в общих чертах понимаю что и как, но многого всё равно не догоняю. Надо выяснить как код отлавливает нажатия кнопок... Ты ежели что, не пропадай хоть, а то я без тебя как... баран на новые ворота Последний раз редактировалось nikey; 02.01.2019 в 23:10. |
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|