Zitat Zitat von PCF8574P
... du kannst mir ja auch noch mal den Dottie-Code senden ... Um zu vergleichen
Hihihihi - vergleichen. Und ich denke immer, ich sei der faule Hund . . . . *ggggg*
Code:
/* >> 
  ### Auszug aus Sicherung 15sep08 1740   ...C1..\m168D_10\m168D_mot_10x80.c
 ===================================================================================
  Target MCU        : M168
  Target Hardware   : m168D
  Target cpu-frequ. : In der Quelle wählbar
 ===================================================================================
        Enthaltene Routinen:        Alle Motorroutinen
  ##### nur Auszug #####
  void TC0PWM_init(void)	//Init Timer/Counter0 für Erzeugung des PWM-Signals

  void setPWMrechts(uint8_t speed)        //Geschwindigkeit rechter Motor
  void setPWMlinks(uint8_t speed)         //Geschwindigkeit linker Motor

  void Mrechtsvor(void)	        //Motor dreht im mathematisch posit. Drehsinn
  void Mrechtszur(void)	        //Motor 1,2 dreht im Uhrzeigersinn
  void Mrechtsstop(void)	//Motor  aus

  void Mlinksvor(void)	        //Motor dreht im mathematisch pos. Drehsinn
  void Mlinkszur(void)	        //Motor 3,4 dreht im Uhrzeigersinn
  void Mlinksstop(void)	        //Motor  aus 

 ===================================================================================
  *** Versionsgeschichte:
 ====================
 x80 15sep08 1740 Version wie x77 - für zusätzliches Modul ~kal~ 
 . . . . . .
 x342 26jun08 08ff Interrupt für Motoren in TC0PWM_init/~mo1~ auf 1200 Hz stellen
 ===================================================================================
  *** Aufgabenstellung : Software für R2_D03
              in einer ersten Ausbaustufe angelehnt an: siehe Original              
  Original: ...C1..\m168D_10\mm168D_mo1_10x342.h   26jun08 08ff
 ================================================================================ */

/* ============================================================================== */
/* ==  PWM-Routinen zur Motoransteuerung  ======================================= */
void TC0PWM_init(void)	//Init Timer/Counter0 für Erzeugung des PWM-Signals
{
   TCCR0A |= (1<<COM0A1)|(1<<COM0B1);   //Clear/set OC0A/OC0B on Compare Match,
                                        //    doc S102 , OC0A/OC0B ist Port PD6/D5
   TCCR0A |= (1<<WGM01)|(1<<WGM00);     // Fast PWM, TOP=0xFF=dez255,     doc S104
                //  das ergibt aus 20 MHz mit Prescaler 1/64  1220 Hz
   TCCR0B |= (1<<CS01)|(1<<CS00);       // Prescaler ist clk/64         doc S106
//
   OCR0A     = 0;                       // PWM auf Null setzen
   OCR0B     = 0;                       // PWM auf Null setzen
}            
/* ============================================================================== */
void setPWMrechts(uint8_t speed)        //Geschwindigkeit rechter Motor
{OCR0A = speed;}                        //  PWM auf PD6
/* ============================================================================== */
void setPWMlinks(uint8_t speed)         //Geschwindigkeit linker Motor
{OCR0B = speed;}                        //  PWM auf PD5
/* ============================================================================== */


/* ============================================================================== */
/* Motoransteuerung mit dem L293D, hier werden die Drehrichtungen gesetzt         */
/* Vorgesehene/belegte Anschlüsse am ATMega168 für R2D03:
                       ==========
   hier, unter anderem, für die Motoransteuerung (Stand 22mai08 11ff) :
  (E7)  _|-- 3,4 Guz, PD4___6   23___PC0, SFH 5110, IN irDME 1-2 } ´168 n
                      VCC   7   22   GND
                      GND   8   21   AREF
               XTAL1  PB6___9   20___VCC
               XTAL2  PB7  10   19   PB5, Startblink (LED0), 3sec v Tmr0, Mehrzweck
  (E6) PWM 1,2 uz+Guz,PD5  11   18   PB4  _|-- 3,4  uz  (E4) (hier oder PB3)
  (E5) PWM 3,4 uz+Guz,PD6___2   17___PB3, Reserve 2
  (E8)   _|-- 1,2  uz,PD7  13   16   PB2, Reserve 1
  (E9)   _|-- 1,2 Guz,PB0  14   15   PB1  SFH 415, OUT (irDME)                    */
//                -----------------------
//  Drehrichtungsbefehle für Motor 1,2 = "rechter" Motor
void Mrechtszur(void)	//Motor 1,2 dreht im Uhrzeigersinn
{PORTB |= (1<<PB4); PORTD &= ~(1<<PD4);}
//                r r r r r r r rechts rechter Motor r r r r r r
void Mrechtsvor(void)	//Motor dreht im mathematisch pos Drehsinn
{PORTB &= ~(1<<PB4); PORTD |= (1<<PD4);}
//                r r r r r r r rechts rechter Motor r r r r r r
void Mrechtsstop(void)	//Motor  aus
{ PORTB &= ~(1<<PB4); PORTD &= ~(1<<PD4);}
//                -----------------------
//  Drehrichtungsbefehle für Motor 3,4 = "linker" Motor
void Mlinkszur(void)	//Motor 3,4 dreht im Uhrzeigersinn
{PORTB |= (1<<PB0); PORTD &= ~(1<<PD7);}
//                l l l l l l l links linker Motor l l l l l l l
void Mlinksvor(void)	//Motor dreht im mathematisch pos Drehsinn
{PORTB &= ~(1<<PB0); PORTD |= (1<<PD7);}
//                l l l l l l l links linker Motor l l l l l l l
void Mlinksstop(void)	//Motor  aus 
{ PORTB &= ~(1<<PB0); PORTD &= ~(1<<PD7);}
/* ============================================================================== */


/* ============================================================================== */
/* =====  ENDE    Subroutinen  ================================================== */
/* ============================================================================== */
Zitat Zitat von PCF8574P
... Ja, Bascom war zu...bäh ...
Dafür ist mein C eher Cäh. Ist nur ein Buchstabe weiter. Der Fortschritt hält sich damit also in Grenzen . . . . . .