/*-------------------------------------------------------------------------------------------------- Abfrage und Setting: Setting PulseProUmdrehung (Anzahl der Zahnradzähne): > CAN-ID = 630; message = FF 10 (Datenbyte 0 muss FF sein, Datenbyte 1 enthält die Pulsanzahl) Abfrage des Settings PulseProUmdrehung: > CAN-ID = 630; message = FF 00 Sende-IDs: > 0x631 = rpm > 0x632 = Wert PulseProUmdrehung (Anzahl der Zahnradzähne) Setting ---------------------------------------------------------------------------------------------------*/ #include #include #include #include #include #include volatile uint8_t pulse; //gezählte Pulse volatile uint16_t Capt1, Capt2,// timeStamp1, timeStamp2, //VARIABLES TO HOLD TIMESTAMPS rpm, //Wert Drehzahl in rpm ID = 631, // CAN ID zeit_low, // Timer1-Anteil zeit_high, // T1 Ueberlauf-Anteil ueberlauf=0, // Zähler Überlauf ueberlauf_count=0; // Anzahl Überläufe bei einer Umdrehung //mess_dauer, // minimale Wartezeit volatile uint32_t zeit_diff, timeStamp1, timeStamp2; int PulseProUmdrehung;// = 24; #define ledPin 3 //PD3 steuert LED an #define icpPin 8 // PB0 ICP D8 Interrupt input /*-------------------------------------------------------------------------------------------------- INIT FUNCTION ---------------------------------------------------------------------------------------------------*/ void Init (void) { pinMode(ledPin, OUTPUT); pinMode(icpPin,INPUT); digitalWrite(icpPin,HIGH); //pull up Serial.begin(115200); Serial.println("Bereit"); PulseProUmdrehung = EEPROM.read(0); Serial.print("PulseProUmdrehung "); Serial.println(PulseProUmdrehung); } void CAN_500 (void) { PulseProUmdrehung = EEPROM.read(0); if(Canbus.init(CANSPEED_500)) //Initialise MCP2515 CAN controller at the specified speed { Serial.println("CAN Init ok 500 kBit/s"); } else { Serial.println("Can't init CAN"); }} void CAN_250 (void) { if(Canbus.init(CANSPEED_250)) //Initialise MCP2515 CAN controller at the specified speed { Serial.println("CAN Init ok 250 kBit/s"); } else { Serial.println("Can't init CAN"); }} /*-------------------------------------------------------------------------------------------------- INTIALIZING TIMER ---------------------------------------------------------------------------------------------------*/ void InitTimer1(void) { TCNT1=0; //SETTING INTIAL TIMER VALUE TCCR1B|=(1<>8); mcp2515_bit_modify(CANCTRL, (1<