Forum: Mikrocontroller und Digitale Elektronik LIN Master mit LIN Bibliothek aus AppNote 322


von Felix (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.