- LiFePO4 Speicher Test         
Ergebnis 1 bis 6 von 6

Thema: CAN mit AT90CAN128 und SN65HVD232D

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.03.2006
    Ort
    nahe Tulln (Niederösterreich)
    Alter
    34
    Beiträge
    460
    Hallo,

    sorry dass ich mich so lange nicht gemeldet habe, ich war lange auf Urlaub.

    Ich habe jetzt bei den Projekt weitergemacht, und mal mit dem Oszi gemessen.

    Das Programm am Controller sendet alle 500ms eine Message mit 4 Byte Länge bei 125kBaud.
    Die Lib die ich verwende ist von Kreatives Chaos: http://www.kreatives-chaos.com/artik...can-bibliothek

    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h> 
    #include <util/delay.h>
    
    #include "can.h"
    
    #define    SUPPORT_EXTENDED_CANID    1 
    
    /* Select if you want to use timestamps.
     * Timestamps are sourced from a register internal to the AT90CAN.
     * Selecting them on any other controller will have no effect, they will
     * be 0 all the time.
     */
    #define    SUPPORT_TIMESTAMPS        0
    
    
    int main(void)
    { 
        DDRA&=~(1<<5);    
    
        can_init(BITRATE_125_KBPS);
    
        sei();
       
        // erzeuge eine Testnachricht
        can_t msg;
       
        msg.id = 0x123456;
        msg.flags.rtr = 0;
        msg.flags.extended = 1;
       
        msg.length = 4;
        msg.data[0] = 0xaa;
        msg.data[1] = 0xbb;
        msg.data[0] = 0xcc;
        msg.data[1] = 0xdd;
       
        
        while(1)
        {     
            // Nachricht verschicken
            can_send_message(&msg);
            _delay_ms(500);  
        }
     
        return 0;
    }
    Wenn ich mit dem Oszi direkt am AT90CAN128 zwischen CANRX und GND bzw. zwischen CANTX und GND messe habe ich ein Rechtecksignal mit 3,3V Pegel. Das sollte passen.

    Danach habe ich noch zwei Messungen zwischen den Ausgängen CANH und CANL des SN65HVD232D gemacht:

    1. SN65HVD232D mit dem CANUSB verbunden, aber CANUSB nicht aktiviert.
    Das Oszibild sieht so aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Foto 2.jpg
Hits:	6
Größe:	74,8 KB
ID:	23073
    Bei einer 0 sind CANH und CANL beide auf 2,5V. Bei einer 1 ist CANH auf 3V und CANL auf 1V.
    Also 2V Differenz. Das sollte alles passen.

    2. SN65HVD232D mit dem CANUSB verbunden, und CANUSB aktiviert.
    Sobald man den CANUSB aktiviert leuchtet die Rote Error LED am CANUSB. Den Fehlercode kann man über ein Terminal auslesen, der ist 0x80, das bedeutet laut Datenblatt: "Bus Error (BEI), see SJA1000 datasheet". Im Datenblatt des SJA1000 hab ich aber nichts dazu gefunden.
    So sieht jedenfalls das Oszibild aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Foto 1.jpg
Hits:	5
Größe:	77,8 KB
ID:	23074
    Hier sieht man, dass CANH bei einer 1 kurzzeitig auf 3,5V gezogen wird, anstatt wie vorher auf 3V.
    CANL ist auch nicht mehr so glatt wie vorher, aber noch immer bei 1V.
    Das hat wahrscheinlich damit zu tun, dass der SN65HVD232D mit 3,3V läuft, und der CANUSB mit 5V. Aber kann darin der Fehler liegen?


    Was mir noch aufgefallen ist: Ich sende ja nur alle 500ms. Der Bus ist aber dauernd belegt. Das Rechtecksignal, das auf den Oszibildern zu sehen ist, läuft kontinuierlich weiter - es gibt keine Sendepausen.

    Ich habe das Kabel jetzt auf 20cm verkürzt, und die CANH und CANL Adern verdrillt. Das hat leider nichts gebracht. Langsam gehen mir die Ideen aus...
    Habt ihr vielleicht noch welche?

    lg
    Christoph


    EDIT:
    Ich habe hier einen Forenthread gefunden, da hat der Ersteller das gleiche Problem wie ich: http://www.mikrocontroller.net/topic/166158
    Bei ihm arbeiten aber Sender und Empfänger mit 5V.
    Er hat das Problem dadurch gelöst, dass er die Spannung auf 5,3V erhöht hat, dann hat auf einmal alles funktioniert.
    Ich habe aber genau 3,3V, und der Transceiver funktioniert bis 3V laut Datenblatt...

    EDIT 2: Ich habe die Spannung bei meiner Schaltung auf 3,5V erhöht - das hat aber nichts gebracht. Weiter kann ich sie nicht mehr erhöhen, manche Bauteile halten nur 3,6V aus.
    Geändert von Christoph2 (20.08.2012 um 15:48 Uhr)

Ähnliche Themen

  1. CAN mit AT90CAN128
    Von Christoph2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 18.07.2012, 05:24
  2. ZIF für AT90CAN128
    Von loukumas im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 30.01.2008, 12:32
  3. at90can128 übertragungsgeschwindlichkeit
    Von rathma im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 08.11.2007, 19:22
  4. SPI und ISP mit AT90CAN128
    Von AR@HTL im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 09.11.2006, 12:30
  5. AT90CAN128
    Von Florian1 im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 30.01.2005, 18:09

Berechtigungen

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

12V Akku bauen