Spagnolo Inglese
11127 Users    

Sei mai stato catturato dall' Autobaud?

Autobaud

Avere del codice sorgente preimpostato è un dono del Cielo, specialmente quando si utilizza un nuovo micro. Ma a volte..
Qualche mese fa avevo iniziato a giochicchiare con il dsPIC401, utilizzando MPLAB e C30. Sono rimasto soddisfatto perché sono stato in grado di far funzionare una applicazione “hello world” in poco tempo. Non solo l’installazione di MPLAB e C30 ha funzionato senza intoppi ma semplicemente copiando ed incollando il codice disponibile nella library C30 delle periferiche , è stato molto facile programmare la uart1 e timer1 !

Qualche mese fa avevo iniziato a giochicchiare con il dsPIC401, utilizzando MPLAB e C30. Sono rimasto soddisfatto perché sono stato in grado di far funzionare una applicazione “hello world” in poco tempo. Non solo l’installazione di MPLAB e C30 ha funzionato senza intoppi ma semplicemente copiando ed incollando il codice disponibile nella library C30 delle periferiche , è stato molto facile programmare la uart1 e timer1 ! Il codice seguente, utilizzato per programmare il uart1 e’ disponibile sulla documentazione microchip :

/* Configure UART1 module to transmit 8 bit data with one stopbit. Also Enable loopback mode */

baudvalue = 5;

U1MODEvalue = UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK &

UART_EN_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT;

U1STAvalue = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL &

UART_TX_ENABLE & UART_INT_RX_3_4_FUL & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;

OpenUART1(U1MODEvalue, U1STAvalue, baudvalue);

Qualche settimana fa, ho iniziato un nuovo progetto con un 4011, utilizzando un maggior numero periferiche. Siccome credo fortemente nel codice riutilizzabile ho importato il codice “hello world”, ho ricompilato solo per essere sicuro che le cose siano state impostate correttamente e poi ho iniziato il vero progetto.

Prima di tutto ho scritto codice di test per configurare ed utilizzare input capture2, ha funzionato bene, poi ho scritto il codice per 2 uscite PWM , e fin qua tutto a posto. Avevo bisogno anche di usare la uart2, quindi ho semplicemente copiato il codice della uart1 per inizializzarla (cambiando dove necessario 1 con 2) e ha funzionato. Adesso avevo a disposizione tutti i pezzi per sviluppare l'intera l’applicazione. L’ho fatto e…. l' input capture2 ha rifiutato di funzionare! PERCHÉ! Confesso che ho perso qualche ora per collegare il problema ad un specifico blocco di codice!

Per farla breve, non mi sono reso conto che il codice di Microchip abilita l’autobaud rate quando apre la uart1 (UART_EN_ABAUD). Questa impedisce il funzionamento dell'input capture1. Indovinate cosa succede quando l'autobaud è abilitato sulla uart2? Si anche l’input capture2 è disabilitato.

Sinceramente è passato un po’ di tempo prima di scoprire questo errore anche perché l’autobaud non è nemmeno menzionato nella sezione dell'input capture nel manuale del 4011. E come al solito Mr Murphy ha fatto in modo che io non usassi l'input capture1 (quando l'uart1 era già stata utilizzata). Ho risolto il problema sostituendo UART_EN_ABAUD con UART_DIS_ABAUD
.

Quindi, per evitare di fare una brutta figura utilizzate il codice preimpostato, ma siate sicuri di sapere esattamente cosa fa…

Repost del 20 febbraio 2008

Commenta!Feed Rss

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

Articoli di elettronica correlati

  • Sviluppare un controllo digitale con un solo click con un strumento di generare automatico di codice per Flex! Usando Scilab / Scicos FLEX Toolbox è possibile di generare automaticamente il codice da Scicos control diagrams a fast prototype control algorithms e sistemi di controllo digitale per microcontrollori e applicazioni embedded DSP. L'idea principale: sviluppare un controllo digitale con un solo click con un strumento di generare automatico di codice per Flex!

  • Questo articolo mostra un metodo per l'acquisizione dell'immagine da una fotocamera CMOS dotata di interfaccia seriale utilizzando FLEX.
    FLEX è una scheda per sistemi modulari embedded che utilizza le potenzialità dei microcontrollori dsPIC (R) DSC prodotti da Microchip. E' una scheda ideale per sviluppare applicazioni real-time perché il microcontrollore dsPIC33FJ256MC710 supporta kernel real-time come Erika Enterprise prodotto da Evidence Srl.

  • Guida completa al C. Impariamo a programmare con il linguaggio più famoso al mondo! Il più semplice programma in C: spiegazioni passo passo.

  • L'applicazione è un disk loader come parte di un optical disk driver. Questo modulo software controlla il funzionamento del motore secondo l'interrupt esterno da un sensore di posizione.

  • Le schede di sviluppo PIC32 micro sono progettate per imparare a programmare le applicazioni dei PICmicro e per lo sviluppo di progetti basati sui PIC32 micro. I kit di sviluppo pronti all'uso, con il debugger totalmente incorporato, sono di grande aiuto a chi sta iniziando a programmare (come me!), con il linguaggio C, i dsPIC.

Commenti recenti

Nuovi utenti

  • ferro.fiore
  • runners
  • tramiud
  • alin1970
  • claydo
  • niloblu
  • cupra
  • pieroalampi

Chi è online

Ci sono attualmente 3 utenti e 35 visitatori collegati.

Utenti online

  • dgi79
  • blind
  • carlo.elettronica