Timer/Counter1 16bit ATmega8535

Sezione dedicata ai Microcontrollori e ai Sistemi Embedded

Timer/Counter1 16bit ATmega8535

Postby Alex8010 » 02 Jul 2014, 08:32

Salve a tutti, e complimenti per il forum. Premetto che è il primo progetto che vado a svolgere con un microcontrollore ATmega8535 quindi se le domande risulteranno banali non me ne vogliate. Per l'applicazione che voglio sviluppare ho bisogno di utilizzare il Timer/Counter1 a 16 bit del micro in modalità normal mode con un prescaler di 256, i miei dubbi sono:
1)Quando all'interno del programma parte il conteggio?
2)E' possibile farlo partire quando dico io? O cmq resettarlo azzerandolo o svolgendo qualche altra operazione?

Grazie a tutti quelli che mi daranno risposta
Alex8010
 
Posts: 6
Joined: 02 Jul 2014, 08:17

Re: Timer/Counter1 16bit ATmega8535

Postby deluca » 02 Jul 2014, 09:55

Salve alex8010 e benvenuto al forum.
Ti invito a presentarti nella sezione apposita e se possibile spiegare i motivi della tua richiesta.

In che linguaggio devi sviluppare il fw per il uC AVR?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Timer/Counter1 16bit ATmega8535

Postby Alex8010 » 02 Jul 2014, 10:06

Il motivo è a scopo didattico universitario...il linguaggio è assembly avr
Alex8010
 
Posts: 6
Joined: 02 Jul 2014, 08:17

Re: Timer/Counter1 16bit ATmega8535

Postby deluca » 02 Jul 2014, 11:02

I timer partono quando tu decidi di farli partire, ovviamente puoi anche decidere di fermarli.
li puoi ricaricare o "azzerare" in run-time (durante l'esecuzione del fw)
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Timer/Counter1 16bit ATmega8535

Postby Alex8010 » 02 Jul 2014, 11:23

Quindi, nel mio caso specifico, il timer/counter parte nel momento in cui inizializzo i Control Register e nel caso in cui volessi rifare un nuovo conteggio basta azzerare i registri?
Alex8010
 
Posts: 6
Joined: 02 Jul 2014, 08:17

Re: Timer/Counter1 16bit ATmega8535

Postby Alex8010 » 08 Jul 2014, 16:26

Ho continuato nell'applicazione del Timer/counter ma purtroppo ho un problema che non riesco a risolvere,spero che vivamente possiate darmi una mano, vi descrivo la funzione che devo svolgere. Devo andare a contare il tempo per cui un comparatore passa dallo stato logico alto a basso cioè, quando Vin>Vref. Il valore del conteggio varierà in base a quanto piu' rapida è la tensione Vin ad essere maggiore di Vref. Per poter avviare dei conteggi consecutivi ho inserito un bottone esterno che mi permetti di resettare il conteggio e che per obblighi circuitali azioni un relè attivando un circuito. Quando accendo il circuito il conteggio è esatto, quando vado a fare nuovi conteggi con il bottone, il conteggio risulterà sempre maggiore non riuscendo piu' a diminuire anche nel caso in cui la Vin risulta maggiore di Vref in un tempo brevissimo. Volevo chiedervi se magari c'è qualche errore nel codice che ho scritto, vi elenco la parte riguardante il timer/counter1:

Code: Select all
Initcont:                           
        ldi   temp, 0b00000100
        out    TCCR1A,all0
        out   TCCR1B, temp  ;T/C0 counts at CK/256

ResetCont:
      sbi PortC,3 // attiva relè
                rcall Delay8ms //Operation Time Relè 8ms

       
      ldi PosTime,0
                ldi PosAperture,0
                out TCNT1L,all0
                out TCNT1H,all0
      rjmp Confronto
       
Confronto:
        SBIC    ACSR, ACO   ; Skip next instruction if ACO = 0
        rjmp Confronto
        rjmp LeggiValore


LeggiValore:

;LEGGI VALORE T/C1     
         in cont1,TCNT1L
         in cont2,TCNT1H

;Parte inerente al bottone

NuovaLettura:
                 in R16,PinD
       SBIC PIND,4
       rjmp NuovaLettura
       rjmp ButtonC3
      
ButtonC3:
     cbi PortC,3 //disattiva relè
     rcall Delay5ms//Release Time Relè 5ms
     rjmp Reset
Alex8010
 
Posts: 6
Joined: 02 Jul 2014, 08:17

Re: Timer/Counter1 16bit ATmega8535

Postby einstein » 09 Jul 2014, 07:25

ciao alex8010, io non sono pratico di assembler avr,
scusa la mia ignoranza ma c'è qualcosa che non mi convince, non mi convince proprio l'applicazione !!
ma chi ti ha proposto questa applicazione?
User avatar
einstein
 
Posts: 88
Joined: 01 Mar 2014, 15:10
Location: Siracusa

Re: Timer/Counter1 16bit ATmega8535

Postby Alex8010 » 09 Jul 2014, 08:26

Lo scopo del progetto è realizzare un esposimetro, per rappresentare un numero elevato di luce, l'ADC interno del micro a 10 bit non bastava, abbiamo pensato cosi' di utilizzare questo metodo sfruttando il Timer/Counter a 16 bit per rappresentare piu' valori
Alex8010
 
Posts: 6
Joined: 02 Jul 2014, 08:17

Re: Timer/Counter1 16bit ATmega8535

Postby deluca » 11 Jul 2014, 10:05

@alex
mi sono sforzato, cercando di capire il funzionamento dell'oggetto che hai descritto,
ma con tutta la mia buona volontà, non riesco proprio a interpretare quello che vuoi dire... :)

"rappresentare un numero elevato di luce, l'ADC interno del micro a 10 bit non bastava, abbiamo pensato cosi' di utilizzare questo metodo sfruttando il Timer/Counter a 16 bit per rappresentare piu' valori"


Se sei ancora interessato prova a disegnare e postare un semplice flow-chart per descriverne il funzionamento,
forse ci capiamo meglio....
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Timer/Counter1 16bit ATmega8535

Postby js-bascom » 11 Jul 2014, 23:33

Forse Alex vorrebe usare un "bit banged" ADC a 16 bits?
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: Timer/Counter1 16bit ATmega8535

Postby einstein » 12 Jul 2014, 11:00

js-bascom wrote:Forse Alex vorrebe usare un "bit banged" ADC a 16 bits?


@js
scusate la mia ignoranza,
possibile realizzare adc 16bit con timer?
User avatar
einstein
 
Posts: 88
Joined: 01 Mar 2014, 15:10
Location: Siracusa

Re: Timer/Counter1 16bit ATmega8535

Postby js-bascom » 12 Jul 2014, 11:30

Beh con un timer e un comparator, ;) vedi
;**** A P P L I C A T I O N N O T E A V R 4 0 0 ************************
;*
;* Title: Low Cost A/D Converter
;* Version: 1.0
;* Last updated: 97.07.18
;* Target: AT90Sxxxx (All AVR Devices)
;*
;* Support E-mail: avr@atmel.com
;*
;* Code Size :37 words
;* Low Register Usage :0
;* High Register Usage :2
;* Status Flag Usage :1 (t flag)
;* Interrupt usage :Timer/Counter0 overflow interrupt,
;* Analog comparator interrupt
;*
Forse c'e qualche metodo per aver 16 bits con questo approccio, io non l'ho usato mai. Pero' i vecchi AVR (e PICs) che non avevano ADC usavano questo metodo.

Potrei allegare l'application note (PDF e ASM) se intersessa a qualcuno. Non so se e' ancora reperibile dal' Atmel/
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: Timer/Counter1 16bit ATmega8535

Postby deluca » 12 Jul 2014, 12:12

ciao js-bascom tutto bene?

ai tempi degli At90s8515 avevo visto l' an# di Atmel, ma mai attenzionata.
Il fatto è che la risoluzione è troppo bassa (uso del timer0), forse la #401 potrebbe essere un tantino + educational?

che ne dici......
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Timer/Counter1 16bit ATmega8535

Postby js-bascom » 12 Jul 2014, 23:16

Si, la #401 ha infatti 8 bits di resolution mentre la #400 ne ha solo 6 bits.
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)


Return to Microcontrollori e microprocessori

Who is online

Users browsing this forum: No registered users and 1 guest

cron