Go Down

Topic: [OT ITA] Lo spamm bar (Read 236 times) previous topic - next topic

Testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Madwriter

il mio è identico a questo
http://www.ebay.it/itm/PC-NETBOOK-MINI-COMPUTER-PORTATILE-7-WINDOWS-CE-FUNZIONANTE-/151022950057?pt=Computer_portatili&hash=item2329ab56a9
io l'ho preso da un amico a 30 euro non so dirti lui da dove l'abbia preso, ma credo dalla cina  :smiley-mr-green:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

lesto



non è abbastanza! quello sul sito no ha delle descrizioni dettagliate dei registri e delle periferiche!


Ti sei scordato di scaricare il reference manual degli STM32F303xx, quasi 1000 pagine di approfondimento sulle singole periferiche, hai preso solo il data sheet generico :)

http://www.st.com/web/en/resource/technical/document/reference_manual/DM00043574.pdf




appena arrivato il kindle (ver.4, se non erro), ho caricato subito il PDF e sfogliato qualche pagina sia all'inizio che alla fine, tabelle, immagini e testo sono fedeli al 100% con quelle del PC.
Ottimo, stanotte ho un bel mattone da leggere!!  :smiley-mr-green: :smiley-mr-green:
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

puff, finalmente ho messo in piedi qualcosa...
il PWM per la stm32f4, però non so se funziona (finito or ora!), posto il codice così magari qualcuno a caso ( :smiley-roll-blue:) mi da una correzione

Code: [Select]
volatile uint16_t position[] = { 1000, 1000, 1000, 1000 }; //from 1000 to 2000

void TIM3_IRQHandler(void)
{
  if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
  {
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

    TIM3->CCR1 = position[0]; //PB0
    TIM3->CCR2 = position[1]; //PB1
    TIM3->CCR3 = position[2]; //PB4
    TIM3->CCR4 = position[3]; //PB5
  }
}

void startPWM(){

/*
* BASED ON https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32VLDiscovery/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/STM32VLDiscovery/Servo%20control%20using%20STM32VLDiscovery&FolderCTID=0x01200200770978C69A1141439FE559EB459D758000491D59B8574F8049B5DFA3E8B21CBA51&TopicsView=https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32VLDiscovery/AllItems.aspx&currentviews=397
* THANKS to Clive1
* */

// clock for GPIO and AFIO (Remap) - WHY THIS?
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
// clock for TIM3 - HERE DO WE ENABLE TIM3 HW?
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

// PIN SETUP
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_StructInit(&GPIO_InitStructure); //Reset init structure
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

//THIS?
GPIO_PinRemapConfig( GPIO_FullRemap_TIM3, ENABLE );        // Map TIM3_CH3 to GPIOB.Pin0, GPIOB.Pin1, GPIOB.Pin4, GPIOB.Pin5

//OR THIS?
//GPIO_PinAFConfig(GPIOB, GPIO_PinSource0, GPIO_AF_TIM3);
//GPIO_PinAFConfig(GPIOB, GPIO_PinSource1, GPIO_AF_TIM3);
//GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_TIM3);
//GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_TIM3);


//TIMER INTERRUPT SETUP
NVIC_InitTypeDef NVIC_InitStructure;

// Configure the NVIC Preemption Priority Bits
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

// Enable the TIM3 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


//TIMER SETUP
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructInit( &TIM_TimeBaseStructure ); // Reset init structure

// Simplify the math here so TIM_Pulse has 1 us units
// PWMFreq = SystemCoreClock / ((TIM_Prescaler + 1) * (TIM_Period + 1));

// NOT VERY SURE THE TIM3 RUN AT 24MHz....

TIM_TimeBaseStructure.TIM_Prescaler = 24 - 1;  // 24 MHz / 24 = 1 MHz
TIM_TimeBaseStructure.TIM_Period = 20000 - 1; // 1 MHz / 20000 = 50 Hz (20 ms)
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCStructInit( &TIM_OCInitStructure );

// PWM1: Channel1, PB0
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_Pulse = position[0];
TIM_OC1Init(TIM3, &TIM_OCInitStructure);

// PWM1: Channel2, PB1
TIM_OCInitStructure.TIM_Pulse = position[1];
TIM_OC2Init(TIM3, &TIM_OCInitStructure);

// PWM1: Channel3, PB4
TIM_OCInitStructure.TIM_Pulse = position[2];
TIM_OC3Init(TIM3, &TIM_OCInitStructure);

// PWM1: Channel4, PB5
TIM_OCInitStructure.TIM_Pulse = position[3];
TIM_OC4Init(TIM3, &TIM_OCInitStructure);


// ENABLE TIMER
TIM_Cmd( TIM3, ENABLE );

    TIM_CtrlPWMOutputs(TIM3, ENABLE);

    // TIM IT enable
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
}
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Testato

perche' non usi arduino ?  :smiley-yell:
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up