-         

Ergebnis 1 bis 10 von 10

Thema: AT90CAN sendet dauernd Nachrichten über CAN

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2007
    Beiträge
    24

    AT90CAN sendet dauernd Nachrichten über CAN

    Anzeige

    Hallo Leute,

    ich habe eine Schaltung mit dem AT90CAN128 und habe eine CAN-Schnittstelle zusammengestellt. Ich hab den Code bzw. die lib. von www.kreatives-chaos.de genutzt. Klappt eigentlich auch ganz gut. Ich habe aber das Problem, dass mein Controller dauernd Nachrichten rausschickt, obwohl er die Nachricht eigentlich nur einmal senden sollte. Anbei mein Code. Er soll eine Nachricht schicken, dann soll die LED dauerhaft blinken. Das tut sie auch, aber wenn man am Scope den Ausgang misst, stellt man fest dass er immer weiter CAN-Nachrichten raushaut.
    Hat jemand ne Idee wie es funktioniert, dass man nur eine Nachricht rausschickt????????

    CODE:
    Code:
    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <stdio.h>
    #include <util/delay.h>
    #include "can.h"
    
    int main(void)
    {
      DDRA |= (1<<PA1);
      static tCAN msg;
      msg.id = 0x0DC;
      msg.flags.rtr = 0;
      msg.flags.extended = 0;
      msg.length = 4;
      msg.data[0] = 0x0;
      msg.data[1] = 0xfe;
      msg.data[2] = 0xcb;
      msg.data[3] = 0xa5; 
      can_set_mode(Normal_MODE);
      can_init(BITRATE_100_KBPS);
      if(can_check_free_buffer())
        can_send_message(&msg);
      while (1) 
      {
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        PORTA = 0x02;
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        _delay_ms(35);
        PORTA = 0x00;
        //while (1) {
      }
    }
    Wäre super, wenn jemand ne Idee hätte.

    Servus Uli

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    hast du am Bus einen weiteren Teilnehmer? Wenn der At90Can kein ACK bekommt, wird er unzufrieden.

    Gruß

    Jens

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2007
    Beiträge
    24
    Hy Jens,

    ja ich hab viele Teilnehmer .........
    Und diese Teilnehmer können dann nicht mehr senden, weil der Bus quasi "blockiert" wird durch meine Nachricht.....

    Gruß Uli

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hallo,
    ich denke auch,daß das mit dem fehlenden ACK zu tun hat. Deine anderen Teilnehmer verstehen Deinen AT90 nicht und senden darum kein ACK. Darum sendet der AT90 immer weiter. Die anderen Teilnehmer gehen dann in BUSOFF.
    Überprüf doch mal Deine Fuses. Wahrscheinlich läuft das Ding mit einer falschen Frequenz, dann hast Du auch keine 100kBaud.
    Du könntest auch die richtigen Botschaften der anderen Teilnehmer mit dem Oszi anschauen und mit denen vom AT90 vergleichen. Pass aber auf, CAN-Msg sind je nach dlc unterschiedlich lang.
    Drew


  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hallo,
    ich denke auch,daß das mit dem fehlenden ACK zu tun hat. Deine anderen Teilnehmer verstehen Deinen AT90 nicht und senden darum kein ACK. Darum sendet der AT90 immer weiter. Die anderen Teilnehmer gehen dann in BUSOFF.
    Überprüf doch mal Deine Fuses. Wahrscheinlich läuft das Ding mit einer falschen Frequenz, dann hast Du auch keine 100kBaud.
    Du könntest auch die richtigen Botschaften der anderen Teilnehmer mit dem Oszi anschauen und mit denen vom AT90 vergleichen. Pass aber auf, CAN-Msg sind je nach dlc unterschiedlich lang.
    Drew


  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2007
    Beiträge
    24
    Hallo Drew,

    dass mit dem ACK kann ich nicht beurteilen.

    Überprüf doch mal Deine Fuses. Wahrscheinlich läuft das Ding mit einer falschen Frequenz, dann hast Du auch keine 100kBaud.
    Hmmm, da bin ich mir eigentlich fast sicher dass es 100k sind. war ganz schön am Oszi einsehbar. Ich hatte davor ne falsche Baudrate und dann hat er Errorframes auf den Bus geschickt. Die jetzige Baudrate müßte also passen, da ich ja die Nachricht übertragen bekomme.

    Gruß Uli

    PS: Danke an euch für die Unterstützung

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Hallo,

    ich habe auch ein Problem mit der Bibliothek. Ich finde sie sehr gut, aber ich komme schon am Anfang damit nicht klar.

    1. wie muss ich die Dateien libcan.a erstellen? Mir ist unklar wo und wie ich make lib eigeben soll unter Win XP. Wohl kaum in der cmd???
    2. welche Dateien muss ich in mein Projekt kopieren? fehlt da nicht noch bool.h und config.h (laut tut muss man ja nur can.h und libcan.a kopieren)

    vielen Dank schonmal!
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Zitat Zitat von T.J.
    ich habe auch ein Problem mit der Bibliothek.
    Warum fragst du dann nicht bei den Leute nach die die Bibliothek geschrieben haben?

    Zitat Zitat von T.J.
    1. wie muss ich die Dateien libcan.a erstellen? Mir ist unklar wo und wie ich make lib eigeben soll unter Win XP. Wohl kaum in der cmd???
    Doch genau da. Alternativ kannst du auch ein "make all" ausführen, das sollte dein Programmers Notepad schon als "Tool" installiert haben. Einfach eine Datei aus dem src/-Ordner öffnen und Make All anklicken.

    Ich hab die Beschreibung mal ergänzt.

    Zitat Zitat von T.J.
    2. welche Dateien muss ich in mein Projekt kopieren? fehlt da nicht noch bool.h und config.h (laut tut muss man ja nur can.h und libcan.a kopieren)
    Das stimmt, das ist ein Fehler auf der Seite, ist korrigiert.

    MfG Kjion

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    vielen Dank, sorry ich hätte dir auch ne Mail schreiben können, stimmt. Ging halt hier grad darum

    ich hatte allerdings das notepad nicht mit installiert, da ich AVR Studio 4 nutze und in der Windows cmd make eingegeben. Da kennt der den Befehlt nicht. Daher mein Problem, auch wenn es recht gut beschrieben ist!
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Hi,

    Zitat Zitat von T.J.
    ich hatte allerdings das notepad nicht mit installiert, da ich AVR Studio 4 nutze und in der Windows cmd make eingegeben. Da kennt der den Befehlt nicht. Daher mein Problem, auch wenn es recht gut beschrieben ist!
    wenn du WinAVR installiert hast sollte er das Kommando aber eigentlich kennen. Eventuell musst du PATH anpassen so dass er auf WINAVRDIR/bin zeigt.

    MfG Kjion

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •