Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

ARM - From PIC

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[181] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 0:43

Non lo so nemmeno io davvero!
È molto strano che a te funzioni e a me no!
Non ho tutti i torti, è Keil che mi tira scemo :D

Comunque, ho provato a riprendere il programma che mi avevi mandato tu, e strano ma vero questo funziona !
Anche se come hai potuto notare tu stesso, non faccio nulla di particolare.
Ma bando alle ciance: questo funzione, QUINDI, utilizzo questo come base!

Ho provato a scrivere questo programmino IO e..... FUNZIONA ! anche se per ora accendo e spengo alternativamente solo due led.

Ti allego il main,nel caso volessi dargli un'occhiata :

Codice: Seleziona tutto
#include "stm32f10x_lib.h"


GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

//-----------------------------------------------------------------------------
void USART1PrintChar(char ch)
{
  // Aspetta che il registro di trasmissione sia libero
  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
  USART_SendData(USART1,ch);
}

//------------------------------------------------------------------------------
void Delay(long nCount)
{
  for(; nCount != 0; nCount--);
}

//-----------------------------------------------------------------------------
void initSystem(void)
{
   //Fornisco il clock a GPIOC
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
   //Configuro il pin 9 (LED3)
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOC, &GPIO_InitStructure);

  // Fornisce il clock all' USART1 per metterla in funzione
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

  // Configura il piedino di RX come input floating
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* Configura il pin TX come funzione alternativa push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  // Configura l' USART 1200 baid, 8 bit, 1 stop, no parità nessun controllo hardware
  USART_InitStructure.USART_BaudRate = 1200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  // Configura l' USART1
  USART_Init(USART1, &USART_InitStructure);

  // Abilita l' USART1
  USART_Cmd(USART1, ENABLE);
}

//-----------------------------------------------------------------------------
int main(void)
{
  initSystem();
  while(1)
  {
         GPIOC->BSRR = GPIO_Pin_9;
       Delay(0xAFFFF);
       GPIOC->BRR = GPIO_Pin_9;
       Delay(0xAFFFF);
  }
}
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[182] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 23 mar 2012, 0:51

Alleluja! :ola:

Ok, buono. Ferma i buoi! Tieni tutto così com'è. :ok:

:mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[183] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 1:00

E ci mancherebbe altro che tocco qualcosa ! :ok: :mrgreen:
Che faticaccia! :evil:
Ma ora mi son salvato tutto per bene e non si tocca più niente! [-X

Ora...veniamo finalmente all'UART !!! :mrgreen:

In teoria, se le inizializzazione sono corrette e tutto, il codice seguente dovrebbe essere corretto :

Codice: Seleziona tutto
#include "stm32f10x_lib.h"


GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

//-----------------------------------------------------------------------------
void USART1PrintChar(char ch)
{
  // Aspetta che il registro di trasmissione sia libero
  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
  USART_SendData(USART1,ch);
}

//------------------------------------------------------------------------------
void Delay(long nCount)
{
  for(; nCount != 0; nCount--);
}

//-----------------------------------------------------------------------------
void initSystem(void)
{
   //Fornisco il clock a GPIOC
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
   //Configuro il pin 9 (LED3)
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOC, &GPIO_InitStructure);

  // Fornisce il clock all' USART1 per metterla in funzione
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

  // Configura il piedino di RX come input floating
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* Configura il pin TX come funzione alternativa push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  // Configura l' USART 1200 baid, 8 bit, 1 stop, no parità nessun controllo hardware
  USART_InitStructure.USART_BaudRate = 1200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  // Configura l' USART1
  USART_Init(USART1, &USART_InitStructure);

  // Abilita l' USART1
  USART_Cmd(USART1, ENABLE);
}

//-----------------------------------------------------------------------------
int main(void)
{
  initSystem();
  while(1)
  {
         USART1PrintChar('A');
  }
}


In pratica è lo stesso identico codice di prima, ho solo sostituito il main con questo :

Codice: Seleziona tutto
int main(void)
{
  initSystem();
  while(1)
  {
         USART1PrintChar('A');
  }
}


Quindi mi aspetto di vedere sull 'oscilloscopio una sequenza di byte che indentificano il carattere 'A'.
In uscita dall'oscilloscopio ho però la stessa cosa di cui ti parlavo prima.

Ti faccio un video, per maggiore chiarezza
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[184] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 1:20

Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[185] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 23 mar 2012, 9:16

Non vedo tutta la parte di inizializzazione del sistema (PLL, latency e compagnia bella). :-M
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[186] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 14:32

Non hai tutti i torti :ok:
Me ne ero dimenticato.

Intendi questa parte qui da inserire nell'inizializzazione no ?

Codice: Seleziona tutto
//  Inizializzazione dell' accesso alla FLASH interna

  // Abilita il Prefetch Buffer
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  // Imposta la latency per la flash a 0 wait state
  // Con clock <= 24 MH latency 0
  // Con clock 24 - 48 MHz latency 1
  // con clock > 48MHz latency 2
  FLASH_SetLatency(FLASH_Latency_0);


  //  Inizializzazione del clock di sistema a 24MHz

  // Predispone il PLL per utilizzare il clock interno
  RCC_PLLConfig( RCC_PLLSource_HSI_Div2, RCC_PLLMul_6 );
  // Abilita il PLL
  RCC_PLLCmd( ENABLE );
  // Aspetta che il PLL sia pronto
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  // Seleziona come clock di sistema il PLL
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  // Aspetta che il PLL sia accettato come clock di sistema
  while(RCC_GetSYSCLKSource() != 0x08);


La inserisco.. e riprovo!
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[187] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 15:02

Il risultato che mi dà l'oscilloscopio è sempre lo stesso, non cambia nulla.
Tu riesci a testare se a te va ?
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[188] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 23 mar 2012, 15:27

Nei prossimi giorni devo implementare la seriale su un progetto quindi la proverò per forza.
Ora sono incasinato, sto ordinando materiali.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[189] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 23 mar 2012, 15:42

si si ovviamente, quando hai tempo !

Io più di questo , non riesco...più che altro è per avere un riscontro utilizzando lo stesso programma!
Magari è l'oscilloscopio che non tanto funziona e non mi permette di vedere il byte.

Comunque, visto che tu lavori con la seriale e so che hai il mac... cosa utilizzi per inviare e ricevere dati? che programma ?
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[190] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 23 mar 2012, 16:05

Avevo un Mac-mini ma non lo uso più. Uso windows con hyper terminal
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti