Page 1 of 1

Segnale onda quadra 670KHz

PostPosted: 27 Mar 2013, 15:10
by tnnbascom
Salve,

Con un Atmega8 con quarzo 4Mhz, posso avere un pwm, o un segnale a onda quadra con frequenza di 670KHz?

Grazie

Re: Segnale onda quadra 670KHz

PostPosted: 27 Mar 2013, 15:47
by ulisse21
ciao
di che precisione ti accontenti???????
cioè, vuoi ottenere una freq "precisa" con che errore max??????

un consiglio :), almeno 2 parole x la presentazione, poi decidi tu.
ciao

Re: Segnale onda quadra 670KHz

PostPosted: 27 Mar 2013, 16:11
by tnnbascom
Mi scuso,

ma sono troppo preso da risolvere questo problema...

comunque complimenti per il forum, utilizzo da tempo quello in inglese, ma questo in lingua italiana è il top!

Per il discorso della frequenza +-3% di tolleranza... grazie

Re: Segnale onda quadra 670KHz

PostPosted: 27 Mar 2013, 22:12
by deluca
@tnnbascom,
benvenuto ... e grazie per i complimenti, magari vediamo prima se riusciamo a risolvere .....
infatti, come ben sai, utilizzando il quarzo da 4mhz e configurando in modo appropriato i timer non potrai generare un pwm con freq di 670khz esatti.


670_KHz.jpg
670_KHz.jpg (49.02 KiB) Viewed 6257 times


questi sono i valori calcolati da assegnare al timer1 (come timer)

Tuttavia, nel caso in cui lo vuoi configurare come PWM devi considerare altri fattori,
poichè per raggiungere la freq da te indicata devi lavorare direttamente sui registri del timer1.
Il semplice "Config Timer" non ti permette di configurare il FastPwm mode.

- AVR microcontroller model
- Waveform generation mode select
- Clock select bit select

Re: Segnale onda quadra 670KHz

PostPosted: 28 Mar 2013, 16:21
by tnnbascom
Va bene con Timer1, basta che su un pin qualsiasi ho un onda quadra con freq. 670KHz circa...

Potresti gentilmente farmi un esempio del codice da usare... grazie.

Re: Segnale onda quadra 670KHz

PostPosted: 28 Mar 2013, 22:16
by deluca
http://www.atmel.com/Images/Atmel-2486- ... asheet.pdf

da pag.96 a pag.101 del PDF c'è tutto quello che ti serve per settare i registri del Timer1 nella modalità Fast-pwm.

purtroppo non puoi configurare il Fast-pwm usando gli statament e i config di Bascom, come ti dicevo prima, devi configurare manualmente i registri del Timer1 per ottenere la freq da te richiesta.
inizia a scrivere uno stralcio di "source"......, appena un pò disimpegnato mettiamo le mani sul codice.

ciao

Re: Segnale onda quadra 670KHz

PostPosted: 04 Jun 2013, 08:16
by tnnbascom
Mi scuso per il ritardo, ho risolto in questo modo... (667Khz circa)... grazie a tutti.

Code: Select all
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb.1 = Output                                     'PWM_PIN
Const Cpwmfreq = 5

   Tccr1a = &B10000010
                     'Bit 7:6 – COM1A1:0: Compare Output Mode for channel A set to 10
                     '        = Clear OC1A on Compare Match, set OC1A at TOP
                     'Bit 5:4 – COM1B1:0: Compare Output Mode for channel B set to 00
                     '        = Normal port operation, OC1B disconnected.
                     'Bit 3 – FOC1A: Force Output Compare for channel A set to 0 - not used in PWM
                     'Bit 2 – FOC1B: Force Output Compare for channel B set to 0 - not used in PWM
                     'Bit 1:0 – WGM11:0: Waveform Generation Mode set to ..10
                     '        = lower bits of Mode 14: fast PWM; TOP = ICR1

Tccr1b = &B00011001
                     'Bit 7 – ICNC1: Input Capture Noise Canceler set to 0 - not used in PWM
                     'Bit 6 – ICES1: Input Capture Edge Select set to 0 - not used in PWM
                     'Bit 5 – Reserved Bit set to 0
                     'Bit 4:3 – WGM13:2: Waveform Generation Mode set to 11..
                     '        = higher bits of Mode 14: fast PWM; TOP = ICR1
                     'Bit 2:0 – CS12:0: Clock Select set to
                     '        = higher bits of Mode 14: fast PWM; TOP = ICR1
                     'Bit 2:0 – CS12:0: Clock Select set to 010 = clkI/O / 8 (From prescaler)

Icr1 = Cpwmfreq

I = Cpwmfreq / 2                                            '50%

Pwm1a = I
....