Например TDA7294

Форум РадиоКот • Просмотр темы - PIC18f25k80 отправка сообщения в Can
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср май 14, 2025 03:41:11

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC18f25k80 отправка сообщения в Can
СообщениеДобавлено: Вс мар 30, 2025 09:27:25 
Родился

Зарегистрирован: Вс мар 30, 2025 08:45:52
Сообщений: 1
Рейтинг сообщения: 0
Здравствуйте! Имеется ELM 327 одноплатный адаптер на pic18f25k80. Моя задача отправить 1 пакет данных раз в 50мс.
Код работает, но отправляет не корректный id. Проверяю пакеты через Canhacker(arduino). canhacker видит: 00,000 019E1CEF 8 00 00 FF BF 00 44 00 FF а должен видеть 00,000 0CEE1CEF 8 00 00 FF BF 00 44 00 FF. Может можете помочь с корректировкой отправки id?

Код:
  #"includemcc_generated_files/mcc.h"

// Opredelyaem pins dlya svyetodiodov
#define LED1 LATBbits.LATB4 // Svyetodiod, kotoryy dolzhen postoyanno migat'
#define LED2 LATBbits.LATB6 // Svyetodiod, kotoryy dolzhen migat' pri uspeshnoy otpravke

// Prototipy funktsiy
void initLEDs(void);
void blinkLED1(void);
void sendCANMessage(void);
void initCANMessage(uint8_t *data);

void initLEDs(void) {
    TRISBbits.TRISB4 = 0; // Nastroivaem RB4 kak vyhod
    TRISBbits.TRISB6 = 0; // Nastroivaem RB6 kak vyhod
    LED1 = 0; // Vyklyuchayem svyetodiody
    LED2 = 0; // Vyklyuchayem svyetodiody
}

void blinkLED1(void) {
    LED1 = 1; // Vkluchayem svyetodiod 1
    __delay_ms(16); // Zaderzhka
    LED1 = 0; // Vyklyuchayem svyetodiod 1
    __delay_ms(16); // Zaderzhka
}

void sendCANMessage(void) {
    // Проверяем, доступен ли буфер для отправки
    if (!(TXB0CON & 0x08)) { // Проверяем, свободен ли буфер TXB0
        uint8_t data[8] = {0x00, 0x00, 0xFF, 0xBF, 0x00, 0x44, 0x00, 0xFF}; // Данные

        // Заполняем идентификатор и данные
        TXB0SIDH = 0x0C; // Старшие 8 бит
        TXB0SIDL = 0xEE | 0x08; // Следующие 8 бит + EXIDE
        TXB0EIDH = 0x1C; // Старшие 8 бит расширенного идентификатора
        TXB0EIDL = 0xEF; // Младшие 8 бит расширенного идентификатора

        // Заполняем данные
        TXB0D0 = data[0];
        TXB0D1 = data[1];
        TXB0D2 = data[2];
        TXB0D3 = data[3];
        TXB0D4 = data[4];
        TXB0D5 = data[5];
        TXB0D6 = data[6];
        TXB0D7 = data[7];

        // Устанавливаем длину сообщения
        TXB0DLC = 0x08; // Длина сообщения 8 байт

        // Отправляем сообщение
        TXB0CONbits.TXREQ = 1; // Запрос на отправку

        // Ждем, пока сообщение не будет отправлено
        while (TXB0CONbits.TXREQ); // Ждем, пока TXREQ не станет 0

        // Проверяем статус отправки
        if (!TXB0CONbits.TXREQ) {
            LED2 = 1; // Включаем светодиод 2 (RB6)
            __delay_ms(5); // Задержка для видимости
            LED2 = 0; // Выключаем светодиод 2
        }
    }
}
void main(void) {
    SYSTEM_Initialize(); // Inicializatsiya sistemy (vklyuchayet inicializatsiyu CAN)
    initLEDs(); // Inicializatsiya svyetodiodov

    while (1) {
        blinkLED1(); // Postoyannoye miganiye svyetodioda 1
        sendCANMessage(); // Otpravka CAN-soobsheniya
        __delay_ms(13); // Zaderzhka
    }


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y