LIN Master mit LIN Bibliothek aus AppNote 322

Gast #2265399
Lesenswert?

Hallo zusammen,

ich möchte einen AT90CAN128 als LIN Master verwenden. Der Master soll 
dabei - um eine Nachricht übertragen zu können - den Header und das 
Datenfeld senden.
Die verwendete Controller-Hardware ist das DVK90CAN. Als Slaveknoten 
verwende ich einen NI USB-8476, um die gesendeten Botschaften am PC 
anzeigen zu lassen.
Die Software habe ich aus dem zur AppNote 322 gehörenden Source-Code:

http://atmel.com/dyn/general/advanced_search_results.asp?device=1&tools=1&faqs=1&datasheets=1&appNotes=1&userGuides=1&software=1&press=1&articles=1&flyers=1&checkAll=1&checkAllReference=1&target=AVR322

Das AVR-Studio compiliert zwar den Code, aber ich kann keine Botschaften 
versenden.
Ich würde erwarten, dass ich zumindets irgendetwas am Slave-Knoten 
empfange, es tut sich aber nichts! Hier die Main.c.:


#include "config.h"
#include "lib_mcu/lin_uart/master_lin.h"
#include "lib_mcu/lin_uart/lin_lib.h"
//#include "inavr.h"

U8 Buf_SET_SLAVE [4];
U8 Buf_GET_SLAVE [4];


int main (void) {
  t_frame MESS_SET_SLAVE;
  t_frame MESS_GET_SLAVE;
  U8 number_of_frame ;

  //no system clock divider
  CLKPR   = 0x80; CLKPR   = 0x00;

  //SET SLAVE FRAME
  MESS_SET_SLAVE.frame_id    = 0x00 ;
  MESS_SET_SLAVE.frame_size  = 4 ;
  MESS_SET_SLAVE.frame_type  = 0 ;
  MESS_SET_SLAVE.frame_delay  = 500 ;
  MESS_SET_SLAVE.frame_data  = Buf_SET_SLAVE;

  //GET SLAVE 0 FRAME DEFINITION
  MESS_GET_SLAVE.frame_id   = 0x01;
  MESS_GET_SLAVE.frame_size = 4;
  MESS_GET_SLAVE.frame_type = 1;
  MESS_GET_SLAVE.frame_data = Buf_GET_SLAVE;
  MESS_GET_SLAVE.frame_delay  = 500 ;


  number_of_frame = 2;
  my_schedule.frame_message[0] = MESS_SET_SLAVE;
  my_schedule.frame_message[1] = MESS_GET_SLAVE;
  my_schedule.number_of_frame = number_of_frame;

  CONFIG_IO_PORTS();

  // Initialise LIN Controller
  lin_init();// Performs Initialisation of LIN Software Driver

  SREG |= 0x80; /* Interrupts globally enabled */

  while(1) {
    if(_TEST_PUSH1()){
      Buf_SET_SLAVE[0] = 0x01;
    }
    else{
      Buf_SET_SLAVE[0] = 0x00;
    }

    if(Buf_GET_SLAVE[0] == 0x00) RESET_GREEN_LED();
    else SET_GREEN_LED();

  }//while(1)
}//main


Da ich den LIN-Bus nicht zum laufen bringe, wäre es toll, wenn mir 
jemand einen Tipp geben könnte, der Erfahrung mit dem Code hat.

Viele Grüße,

Felix

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren