diff -irb usb4all_cdc_9/autofiles/usbcfg.h usb4all_webcam_cdc_9/autofiles/usbcfg.h 52,53c52,53 < // #define USE_SELF_POWER_SENSE_IO < // #define USE_USB_BUS_SENSE_IO --- > #define USE_SELF_POWER_SENSE_IO /*das hatte ich an*/ > //#define USE_USB_BUS_SENSE_IO diff -irb usb4all_cdc_9/io_cfg.h usb4all_webcam_cdc_9/io_cfg.h 54c54 < #define usb_bus_sense PORTAbits.RA1 --- > #define usb_bus_sense PORTCbits.RC6 59c59 < #define tris_self_power TRISAbits.TRISA2 // Input --- > #define tris_self_power TRISCbits.TRISC6 // Input 62c62 < #define self_power PORTAbits.RA2 --- > #define self_power PORTCbits.RC6 diff -irb usb4all_cdc_9/user/user.c usb4all_webcam_cdc_9/user/user.c 0a1,2 > //SERVO ist komplett deaktiviert, dient zur ateuerug des watchdog reset timers; dieser wird in der Hasuptroutine aufgerufen (ProcessIO) > 42c44 < #include "delays.h" --- > #include "system\delays.h" 45,49c47,51 < #include "timers.h" < #include "i2c.h" < #include "pwm.h" < #include "mwire.h" < #include "spi.h" --- > #include "system\timers.h" > #include "system\i2c.h" > #include "system\pwm.h" > #include "system\mwire.h" > #include "system\spi.h" 69a72,75 > //Wathdog Timer über Portb7 > unsigned long WatchdogZaehler = 0; > unsigned char Zaehl = 0; > 78c84 < byte MaskeB = 0xFF; --- > byte MaskeB = 0xFF; // RB7 darf nicht verändert werden, ist der watchdog reset Pin 130c136 < MaskeB = 0xFF; --- > MaskeB = 0xFF; //portb7 ist watchdog reset pin 133c139,140 < TRISB = 0xFF; --- > TRISB = 0x7F; //portb7 ist output > LATBbits.LATB7 = 0; // und low 179a187,191 > > > WatchdogTimer(); //Ruft die WatchdogTimer Funktion auf > > 467,468c479,480 < case SYS_ServoB: < UP_ServoB(); --- > case SYS_WDT: > UP_WDT(); 546c558 < if (ServoB_running == 1) ServoB_run(); --- > //if (ServoB_running == 1) ServoB_run(); 2511c2523 < /** S E R V O S *********************************************************************************/ --- > /** W A T C H D O G *********************************************************************************/ 2513,2518c2525,2530 < // SERVOs < // 0 - aus < // 1 - initialisieren (2: Maske, 1=on, 0=off) < // 2 - DC einstellen (2..9: DC=0..99) < // 3 - Nullpunkt verändern < // 1000 ... 2000 us Pulse an RB0..RB7 --- > // Watchdog reset > // 0 - reset des Watchdogzaehlers, damit kein reset ausgelöst wird > // 1 - Reset per "Hand" auslösen > // 2 - NN > // 3 - NN > // 2520c2532 < void UP_ServoB(void) --- > void UP_WDT(void) 2524,2534c2536,2537 < case 0: //off < ServoBMaske._byte = 0; < ServoB_running = 0; < ServoBPuls[0] = 50; < ServoBPuls[1] = 50; < ServoBPuls[2] = 50; < ServoBPuls[3] = 50; < ServoBPuls[4] = 50; < ServoBPuls[5] = 50; < ServoBPuls[6] = 50; < ServoBPuls[7] = 50; --- > case 0: //Watchdogzaehler reser; zeigt an, dass der Steuerrechner noch lebt > WatchdogZaehler = 0; 2536,2538c2539,2540 < case 1: //init < ServoBMaske._byte = dataPacket._byte[2]; < ServoB_running = (ServoBMaske._byte != 0); --- > case 1: //Steuerrechner löst per "Hand" einen reset aus > Zaehl = 255; // in der WatchdogTimer Funktion wird geschaut, ob Zaehl 255 ist, wenn ja wird ein Reset ausgelöst 2540,2548c2542 < case 2: //DC < ServoBPuls[0] = dataPacket._byte[2]; < ServoBPuls[1] = dataPacket._byte[3]; < ServoBPuls[2] = dataPacket._byte[4]; < ServoBPuls[3] = dataPacket._byte[5]; < ServoBPuls[4] = dataPacket._byte[6]; < ServoBPuls[5] = dataPacket._byte[7]; < ServoBPuls[6] = dataPacket._byte[8]; < ServoBPuls[7] = dataPacket._byte[9]; --- > case 2: //NN 2550,2551c2544 < case 3: //nullpunkt < ServoNull = (word)dataPacket._byte[2]*5; --- > case 3: //NN 2557a2551 > /** S E R V O S *********************************************************************************/ 2599c2593 < void ServoB_run (void) --- > /*void ServoB_run (void) 2611c2605 < } //ServoB_run --- > } //ServoB_run*/ 2890a2885,2924 > /*******Watchdog Timer*************/ > //Ein Programmzyklus incl. USB dauert 17µS > //Der WDT soll alle 10 Minuten zuschlagen > //17µS * 35 294 117 = 600 Sekunden; passt > > void WatchdogTimer(void) > { > if (Zaehl == 255) //mal schauen ob der Steuerrechner einen reset auslösen möchte > { > TRISB = TRISB & 0x7F; //PortB7 wird auf output geschaltet, die anderen bleiben unverändert > LATBbits.LATB7 = 1; //PortB7 wird auf high geschaltet > { > for (Zaehl=0; Zaehl<20; Zaehl++) //wir warten ca.5 Sekunden > SleepMs(250); > } > LATBbits.LATB7 = 0; //und schalten den port wieder aus > WatchdogZaehler = 0; //neu initialisieren vom Zaehler für die 10 Minuten > } > else > Zaehl = 0; > > > if (WatchdogZaehler >= 35294118) > { > TRISB = TRISB & 0x7F; //PortB7 wird auf output geschaltet, die anderen bleiben unverändert > LATBbits.LATB7 = 1; //PortB7 wird auf high geschaltet > { > for (Zaehl=0; Zaehl<20; Zaehl++) //wir warten ca.5 Sekunden > SleepMs(250); > } > LATBbits.LATB7 = 0; //und schalten den port wieder aus > WatchdogZaehler = 0; //neu initialisieren vom Zaehler für die 10 Minuten > } > else > WatchdogZaehler++; > > }//end WatchdogTimer > > > diff -irb usb4all_cdc_9/user/user.h usb4all_webcam_cdc_9/user/user.h 108c108 < SYS_ServoB = 0x64, --- > SYS_WDT = 0x64, 166a167,168 > void WatchdogTimer(void); > 200,201c202,203 < void UP_ServoB(void); < void ServoB_run(void); --- > void UP_WDT(void); >