[OT ITA] Lo spamm bar (Part 1)

:fearful: :fearful: :fearful:
e io che mi chiedevo cosa cambiasse dagli esempi....

che linguaggio mi consiglaito per svilupare un app per windows ce 5.0?

Madwriter:
che linguaggio mi consiglaito per svilupare un app per windows ce 5.0?

Su quali terminali gira ancora?

Io lo avevo sul mio Compaq Ipaq e poi sul Motorola MPX 200 e 220, i miei primi smartphone (quando ancora era un prodotto di nicchia), in versione WM 2003.
C.E. 5.... credevo fosse defunto. :fearful:

In ambito aziendale si USA ancora. Io jo un palmare cin wm6.1
Il problema è che le app non sono compatibili con wm7

se una il .net suppongo che il C# sia il meglio per prestazioni/facilità, alla fine è una brutta copia del C++

lesto:
se una il .net suppongo che il C# sia il meglio per prestazioni/facilità, alla fine è una brutta copia del C++

ci ho gia programmato in c # facilotto :smiley: grazie, io lo ho su un mini pc che pagai sui 30 euro :slight_smile:

Madwriter:
che linguaggio mi consiglaito per svilupare un app per windows ce 5.0?

Lascia perdere il C#, sopratutto se l'hardware non è recente, usa il il C++ o il Visual Basic.
Per scrivere software per CE è indispensabile avere Visual Studio 2010 e l'SDK della corretta versione di CE, in alternativa è possibile scrivere in Pascal tramite Lazarus (totalmente free e open source).

perfetto il pascal, e li esegue tranquillamente?

Mad per sfizio mi dici marca e modello di questo pc da 30€ ? :slight_smile:
Ha proprio windows ce, non windows mobile ? Che differenza c'è fra winCE e i relativi wm2003/wm6.1 ?

Testato:
Mad per sfizio mi dici marca e modello di questo pc da 30€ ? :slight_smile:
Ha proprio windows ce, non windows mobile ? Che differenza c'è fra winCE e i relativi wm2003/wm6.1 ?

Sono versioni di CE tagliate su misura per PDA e Smartphone, in pratica sono release abbastanza "castrate" dove viene eliminato tutto quello che non serve su questi device e non è possibile aggiungere le parti mancanti.
Tieni presente che una installazione completa di CE richiede circa 80 megabyte sull'HD/Flash e almeno 16 mega di Ram per girare, però è scalabile, più o meno come si fa con Linux, fino a farlo stare in meno di 8 Mega e richiede solo 4 mega di Ram.
L'installazione di CE non avviene tramite un cd/dvd come si fa per altri sistemi operativi, deve essere compilato appositamente per l'hardware su cui deve girare in modo da ottenere una immagine di installazione che è specifica solo per una tipologia di hardware.

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;