[OT ITA] Lo spamm bar (Part 1)

Thanks

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 :grin:

astrobeed:

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 :slight_smile:

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!! :grin: :grin:

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 ( :roll_eyes:) mi da una correzione

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);
}

perche' non usi arduino ? :stuck_out_tongue_closed_eyes:

lesto:
il PWM per la stm32f4, però non so se funziona (finito or ora!),

Che vuol dire che non sai se funziona ?
Se c'è il PWM sul pin vuol dire che va altrimenti vuol dire che non va :slight_smile:

Testato:
perche' non usi arduino ? :stuck_out_tongue_closed_eyes:

Perché Lesto si è evoluto, come il bruco che diventa una farfalla anche lui ha finito la sua metamorfosi, dal lento e imbranato Arduino è passato al veloce e aggraziato STM32 :grin:

astrobeed:

lesto:
il PWM per la stm32f4, però non so se funziona (finito or ora!),

Che vuol dire che non sai se funziona ?
Se c'è il PWM sul pin vuol dire che va altrimenti vuol dire che non va :slight_smile:

Vuol dire che era tardi e non ho caricato il codice... Poi senza oscilloscopio devo usare Arduino con uno sketch apposta....

@ testato: al giusto lavoro il giusto chip xD

@entrambi: ma a che orq vi svegliate la mattina?? O.o

Non è l orario di sveglia, quanti figli hai ? :slight_smile:

testato faccio 1/4 di secolo a settembre, mi reputo ancora un figlio. :fearful:)
Se però il termine si può allargare alle macchine che gestico, i miei figliocci, allora circa 8, ma loro non dormono mai :slight_smile:

il codice l'ho postato sul sito STM dove mi hanno tirato fuori un paio di BUG: il clock che ho usato è errato (24MHz invece è 128MHz)

dove ho scritto

//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);

ovviemente era corretto al contrario (sto ancora indagando perchè)

quetsa:

 TIM_CtrlPWMOutputs(TIM3, ENABLE);

non dovrebbe servire, è un'istruzione per un altro micro
così come le istruzioni:

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

sono da sistyemare per il mio micro

(infatti all'inizio si nota il ringraziamento, ho "portato" il codice da una boarda all'altra aggiungendo la gestione di più canali, dell'interrupt (o c'era gia?) e cambiato il modo per calcolare il prescaler in modo che venisse 1us di precisone per il PWM che comanderà gli ESC del quadricoso. ahahhahah

in effetti visto che gestisce gli ESC dovrei alzarne la priorità, no?

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

lesto:
testato faccio 1/4 di secolo a settembre, mi reputo ancora un figlio. :fearful:)

Fattene una ragione, ormai sei vecchio pure tu, almeno dal punto di vista degli adolescenti :grin:

lesto:
@entrambi: ma a che orq vi svegliate la mattina?? O.o

Molto presto, non sono un dormiglione e per mia fortuna mi bastano solo sei ore di sonno :slight_smile:

Per tutti quelli che stanno "giocando" con la STM32F3 Discovery, ma anche con la STM32F4 Discovery ecco una comoda libreria, sotto forma di funzioni scritte in C ANSI, per l'uso di due USART, 1 e 2, con interrupt attivo in ricezione e DMA in trasmissione sulla USART 1.
La libreria, la rilascio sotto licenza LGPL v3, è dotata di documentazione in formato pdf, è compilabile sia da MDK ARM con toolchain RealView oppure tramite toolchain gcc arm eabi sotto Eclipse/Netbeans, è indispensabile includere nel progetto le librerie CMSIS e standard peripheral di ST specifiche per il processore con cui lavorate.
La libreria è un estratto del software che sto realizzando per ottenere una unità IMU/GPS ad alte prestazioni basata sulla STM32F3 Discovery, prossimamente la libreria per il GPS.

thnx dea, io ne uso una ma senza interrupt, ti faccio sapere quando avrò il tempo di metterci su le zampe

Una utilissima GUI per configurare i GPIO e le periferiche degli STM32, una volta terminata la procedura genera automaticamente il relativo codice, fa risparmiare un sacco di tempo ed evita errori banali di inizializzazione.
Il codice generato richiede che nel progetto siano incluse, e correttamente linkate, la CMSIS e le librerie di supporto di ST.

Uso interessante di Arduino! :grin: :grin: :grin:
--> Durex Fundawear -- Touch over the Internet [OFFICIAL] - YouTube

PaoloP:
Uso interessante di Arduino! :grin: :grin: :grin:
--> Durex Fundawear -- Touch over the Internet [OFFICIAL] - YouTube

ahahahhahahah ma cosa inventano :grin:

PaoloP:
Uso interessante di Arduino! :grin: :grin: :grin:

La mia preferita rimane sempre questa :slight_smile:

Michele sta per entrare nel club dei 10'000. :grin: :grin:

Ma hanno cambiato le impostazioni del forum riguardo l'interlinea tra paragrafi... o è il mio PC che fa le bizze.
Vedo i topic pieni di spazi vuoti. :astonished: