
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 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 . . . . . .
Lesezeichen