Перейти к содержанию

Как перевести код с регистров на ардуиновский?


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

23 минуты назад, korsaj сказал:

Ох и далеки у вас мысли )

Ну в данном случае, почти ничего) Ее я тоже в самом начале попробовал сделать, отладка по светодиодам - наше всё)

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 час назад, Огонёк сказал:

А что за восьминожка справа сверху так затейливо включена?

эта штука подает питание на мотор, на нее идет шим. по маркировке не бьется, подключение перепроверил, да все именно так и работает

Ссылка на комментарий
Поделиться на другие сайты

Собрал такую схемку на ардуине нано.
463810132_.png.daf6c9db6b2b874d865c86a8ca413a91.png
С таким кодом:
  digitalWrite(13, ACSR&0b00100000);
  if(ACSR&0b00100000) Serial.println("1");
  else Serial.println("0");
Осциллограмма на 13пине вышла такая:
2060933319_.png.80c964a43f43a7640ebdce7a21bc2c39.png

Откуда-то берутся ложные срабатывания. Ок, подключился к самому датчику:


1355166287_.png.a840dae5f244968c285abde21f1b7e9a.png

Все вроде четко, никаких лишних сигналов. Увеличил:

1261350933_.png.307ee585962a0cee8c8c047fc0f9c0fc.png

Ссылка на комментарий
Поделиться на другие сайты

12 минут назад, Андрей Гараж сказал:

такую схемку

Оооо, если в машинках стоит точно такая же схема, то дальнейшее написание кода смысла не имеет, ибо с таким датчиком оно работать никогда не будет. Для надежной работы сигнал должен иметь несущую, как это сделано во всех ИК ПДУ, а приемник должен выглядеть примерно вот так:

image.png.9de904fff05d1a533c7622fccf862377.png

У него внутри стоит демодулятор, рассчитанный на определенную частоту несущей (обычно от 30 до 60 КГц в зависимости от конкретной модели), что позволяет очень эффективно бороться с засветкой.

image.png.39536f6f9259ce326b29d9cc7e17ee9f.png

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

Изменено пользователем BARS_
Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, korsaj сказал:

тактовой частотой

частотой чего? как по этому сигналу понять хоть что-либо, кроме того что он существует?)

 

6 минут назад, korsaj сказал:

Половина форума

Весьма польщен)

Ссылка на комментарий
Поделиться на другие сайты

Только что, Андрей Гараж сказал:

частотой чего?

МК приемника.

 

Только что, Андрей Гараж сказал:

как по этому сигналу

Не по этому, а сделать вот так:

LED_H; 
_dealy_ms(100); 
LED_L; 
_dealy_ms(100);

Вы вообще читаете, что вам пишут?

Ссылка на комментарий
Поделиться на другие сайты

Да в любом случае, если там реально тупо фотодиод стоит на приемной стороне (а судя по всему, так оно и есть), то знание частоты автору ничем не поможет, один фиг оно все будет тупить и глючить...

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, korsaj сказал:

какая частота в проекте прописана

Я ж скинул исходник, и уже говорили что там частота задефайнена на 1МГц. исходников светофоров нет. Я хотел исходя из пакетов передаваемых светофором отследить логику программы машинок по их исходнику. Сигнал такой какой на последних фотках, и по нему не понятно с какой частотой но задается.

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Андрей Гараж сказал:

по нему не понятно с какой частотой но задается.

Да вообще плевать на сигнал. Важна частота МК. То, что в проекте 1 МГц не означает, что и фьюзы стоят на 1 МГц. Это и требуется выяснить!!!

 

3 минуты назад, Андрей Гараж сказал:

Сигнал такой какой на последних фотках

Еще раз вопрос про ИК приемник в машинке. Смотрите, с таким подходом скоро вам некому будет помогать. Ибо одних вы тупо игнорите, в слова других вникать отказываетесь. И какой смысл вам помогать после этого?

Ссылка на комментарий
Поделиться на другие сайты

@Андрей Гараж сделай крупные фотографии машинки: плату, приёмник, моторы, механику - всюду, короче говоря. Хоть посмотрим, о чём вообще речь идёт.

Ссылка на комментарий
Поделиться на другие сайты

@Андрей Гараж Проект любопытный, но много непонятного. Пока всё, что мы видели в коде, вроде бы про обработку сигналов компаратора от переднего датчика. А как машинка понимает, что надо поворачивать, где этот кусок кода? Не среди десятка if-ов же эта логика спрятана, так? Как она проходит кривые и перекрёстки? Последняя фотка намекает, что трасса может быть сложнее восьмёрки - и это лишь добавляет вопросов.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Огонёк сказал:

А как машинка понимает, что надо поворачивать, где этот кусок кода?

Это как-то завязано на адрес, который в исходнике в самом начале закомментирован. Такой-то адрес - такой-то маршрут. Но у зрителя создается впечатление что машинки ездят рандомно.  На передней оси машинки латунный поводок - направляющая, на нем магнитик, и он примагничивается к контуру под дорогой. Так поворачиваются колеса. На перекрестке что-то типо железнодорожной стрелки, только переводит магнитный поток по которому следует машинка. Я еще не дошел до этого момента) Так что это дорога перестраивается, а машинка тут просто как ведомый элемент.

// номер - минСкор - махСкор - маршрут + Kstart =
//
//
// СПб - 214 - 174 - 101
// 0047 - СПб - едит через мост - 174 адр
// 0089 - СПб - НЕ едит через мост - 214 адр
//
// 0093 - автоб зеленый - 90-180-197(был) - стал 60-137-174 СПб
// 1078 - Груз - 60-160-113 - Псков
// 1022 - ПАЗ - 80-180-182
// 0002 - автоб-МСК - 95-180-101 - // 157 адрес
// 0097 - автоб МСК - 75-180-197 - короткий - малый круг

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Андрей Гараж сказал:

направляющая, на нем магнитик, и он примагничивается к контуру под дорогой.

То есть этот контур не только зарядка, но ещё и рулилка. Однако...

3 минуты назад, Андрей Гараж сказал:

На передней оси машинки латунный поводок - направляющая

Кстати, а датчики случаем не на ней же? На одной из фоток создаётся такое впечатление, что датчики с этой латунькой движутся вместе.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • @korsaj Сегодня попробовал сделать как ты посоветовал. Получился следующий код. #define F_CPU 7372800UL #define BAUND 9600L #define UBRRL_value (F_CPU/(BAUND*16))-1 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> void init_pin(void); #define C_PC0 (~PINC&(1<<PC0)) #define C_PC1 (~PINC&(1<<PC1)) #define LED_1_ON() PORTD|=(1<<PD2) #define LED_1_OFF() PORTD&=~(1<<PD2) #define LED_2_ON() PORTD|=(1<<PD3) #define LED_2_OFF() PORTD&=~(1<<PD3) #define FLAG_END_RX (1<<3) #define FLAG_ERR_RX (1<<4) #define BUF_SIZE 20 char rx_buf[BUF_SIZE]; char buf_index = 0; volatile start=1, flags; char b; ISR(USART_RXC_vect) { b=UDR; if(!(flags & FLAG_END_RX)) { rx_buf[buf_index]=UDR; if(rx_buf[buf_index] == 0x0D) { flags |= FLAG_END_RX; return; } buf_index++; if(buf_index >= BUF_SIZE) { buf_index = 0; flags |= FLAG_ERR_RX; } } } void init_UART() { UBRRL = UBRRL_value; UBRRH = UBRRL_value>>8; UCSRB|=(1<<TXEN); UCSRB|=(1<<RXEN); UCSRC|=((1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)); UCSRB|=(1<<RXCIE); sei(); flags = 0; } void send_UART(char value) { while(!(UCSRA&(1<<UDRE))); UDR=value; } int main(void) { init_pin(); init_UART(); while(1) { if (start==1) { _delay_ms(500); send_UART('O'); send_UART('K'); send_UART('!'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); start=0; } if (b == '0') { LED_1_ON(); LED_2_OFF(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('0'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '1') { LED_1_OFF(); LED_2_ON(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '2') { LED_1_ON(); LED_2_ON(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (b == '3') { LED_1_OFF(); LED_2_OFF(); send_UART('N'); send_UART('+'); send_UART('0'); send_UART('3'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); b=4; } if (C_PC0) { send_UART('P'); send_UART('C'); send_UART('0'); send_UART(0x0D); send_UART(0x0A); _delay_ms(250); } if (C_PC1) { send_UART('P'); send_UART('C'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(250); } } } void init_pin(void) { DDRC = 0b00000000; PORTC = 0b11111111; DDRD |= ((1<<2)|(1<<3)); PORTD &=~ ((1<<2)|(1<<3)); } Ну как сказать всё работает, но вот меня очень интересует приём команд на саму ATMEGA16. Он так и работает только с цифрами. Более ничего корректно принять не получается даже используя таблицу ascii. А мне нужно будет принимать команды и посложней чем просто буквенно - цифровые. Потому как возвращаясь к командам самого плеера там в этих командах хранятся различные данные. Вот примерно так это всё выглядит. AT+QM \ r \ n Запрос режима работы [0: Bluetooth], [1: MP3] AT+M1 \ r \ n Номер текущего файла AT+M2 \ r \ n Общее количество звуковых файлов AT+MD \ r \ n Источник музыки USB или SD Card AT+MT \ r \ n Общее время воспроизведения текущего файла AT+MK \ r \ n Время воспроизведения текущего файла AT+MP \ r \ n Текущее состояние плеера [0]Стоп, [1]Воспроизведение, [2]Пауза К примеру при отправке команды AT+M1 \ r \ n в ответ мы получим M1 + 000002 \ r \ n при этом здесь может быть любое число в hex формате. Мне же нужно каким то образом принять эти данные и обработать их соответствующим образом. Но при этом и нужно учитывать так же что плеер может сам отправить эти данные по началу воспроизведения трека. Вот в этом сейчас и стоит основная задача. Чего я и пытаюсь получить в итоге.
    • Ну тогда дорога к сименсу в гости - они вам какой-нибудь Desigo CC или даже Siematic предложат, тыщ за 10 долларов. Ну и ещё тыщ 5 надо будет отдать за контроллеры и их конфигурирование.   А если попроще - то можно к отечественным MasterSCADA обратиться, либо к WiredBoard - у них не совсем SCADA система, но нормальные контроллеры, довольно просто настраиваются и можно графическую оболочку рисовать.
    • тогда вы имеете то, что имеете, и никак от этого не избавиться. Хоть святой водой окропите. "Или трусы или крестик" (с) Нагрузки у вас немаленькие. Вы же с нуля переделываете, снова некуда ? Понятие LowESR очень неконкретное. Сколько вешать в граммах ? пустая трата времени
    • Да все это туфта, выеденного яйца не стоит. В общем чушь собачья. На мониторе тему уже сплавили в мусорку, а здесь треп еще будет на 10 страницах. Все камеры, их у него было три, исправные. Записывают отлично. А дальше вся проблема в этом. Особо интересно - монтажник видео.
    • 1. А это как определяется?  Так пробовали на другом смотреть? 2. Так как всё-таки смотрели - напрямую с камеры или "Копирование файлов на компьютер ничего не меняет по сравнению с просмотром с камеры напрямую"?
×
×
  • Создать...