PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GRBL cpu_map.h PWM Pin tauschen



xRay06
02.12.2019, 18:09
Hallo zusammen,

vielleicht kann mir jemand helfen!?:confused:

ich würde gerne in der cpu_map.h den Ausgangspin für den PWM von MEGA2560 Pin 7 auf Pin 9 wechsel.
Aber irgendwie will das PWM Signal nicht ankommen.

bzw. es liegen beim einschalten immer gleich 5V an.

Den Code hab ich so weit geändert.

// Advanced Configuration Below You should not need to touch these variables
// Set Timer up to use TIMER4B which is attached to Digital Pin 7
#define SPINDLE_PWM_MAX_VALUE 1024.0 // Translates to about 1.9 kHz PWM frequency at 1/8 prescaler
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 1 // Must be greater than zero.
#endif
#define SPINDLE_PWM_OFF_VALUE 0
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_OCR_REGISTER OCR2B
#define SPINDLE_COMB_BIT COM2B1

// 1/8 Prescaler, 16-bit Fast PWM mode
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM40) | (1<<WGM41))
#define SPINDLE_TCCRB_INIT_MASK ((1<<WGM42) | (1<<WGM43) | (1<<CS41))
#define SPINDLE_OCRA_REGISTER OCR2A // 16-bit Fast PWM mode requires top reset value stored here.
#define SPINDLE_OCRA_TOP_VALUE 0x0400 // PWM counter reset value. Should be the same as PWM_MAX_VALUE in hex.


// Define spindle output pins.
#define SPINDLE_PWM_DDR DDRH
#define SPINDLE_PWM_PORT PORTH
#define SPINDLE_PWM_BIT 6 // MEGA2560 Digital Pin 9


was stimmt da nicht.

MfG
Stefan

Moppi
02.12.2019, 19:28
Hallo,

ich mach mal einen Anfang.

3,5,6,9,10,11 sind offenbar die Digital-Pins, die für PWM genutzt werden können.
Wieso Pin 7 ?

für Pin 9:

pinMode(9,OUTPUT); //Pin 9 als Ausgang
analogWrite(9,value); //PWM Signal auf Pin 9




MfG
:Weihnacht

021aet04
03.12.2019, 07:44
Pin 9 ist mit dem Atmega Pin 18 verbunden, das ist OC2B. OC2B gehört zum Timer 2. Mir fallen einige Dinge auf.

1) Timer 4 hat 16bit und Timer 2 nur 8bit. Beim 1ten Define steht "1024.0" könnte es sein das diese Zahl geändert werden muss? Eventuell auf "256.0"
2) nach den ersten Defines stehen defines mit den Zahlen im 40er Bereich (WGM40, WGM41,....). Beim Timer 2 sind diese Zahlen im 20er Bereich (die erste Ziffer gibt den Timer an).
3) Zusätzlich solltest du das Datenblatt des Atmegas genau lesen (z.B. gibt es bei Timer 4 4 "WGM" Bits, bei Timer 2 sind es nur 3 (WGM20 - WGM22).

MfG Hannes