E' la prima volta che non trovo questo tipo di progetto online. BPM counter

Ciao!

ero alla ricerca di un circuitino che mi consentisse di visualizzare su più display 7-segmenti il "tempo" di una musica... in BPM ovviamente.

ho googlato per ore... senza risultati.

possibile che una cosa così utile (e quasi comune/essenziale tra DJ) sia implementata solo a livello professionale nei mixer da parecchi euro e nessuno sappia come funziona?

di certo i contatori professionali saranno immediati e precisi, non è quello che mi aspetto da un circuito fatto in casa... ma almeno un'approssimazione vorrei averla.

Avete idee.. o link a progetti ecc? non so. magari sono io che non so più googlare... :_- ((((

Grazie!

Ciao!

Reply to
ASAS
Loading thread data ...

i=F9

a

uello

ne

Tempo addietro ne realizzai uno che utilizzava un micro ST62T10. La parte contatore andava benone, aveva un ingresso e tutto il resto lo faceva da s=E8. Usciva su 3 + 1/2 digit a led in autoscansione, alimentazione 5 Vcc. La parte peccaminosa era il filtro di ingresso poco selettivo.

Posso vedere di recuperare qualcosa se sei in grado di mettere mano agli ST6... Vedo per il sorgente, il pi=F9 =E8 stanarlo.

Piccio.

Reply to
Piccio

Tempo addietro ne realizzai uno che utilizzava un micro ST62T10. La parte contatore andava benone, aveva un ingresso e tutto il resto lo faceva da sè. Usciva su 3 + 1/2 digit a led in autoscansione, alimentazione 5 Vcc. La parte peccaminosa era il filtro di ingresso poco selettivo.

Posso vedere di recuperare qualcosa se sei in grado di mettere mano agli ST6... Vedo per il sorgente, il più è stanarlo.

Piccio. ________________________________

Grazie dell'aiuto Piccio!

ti sarei davvero grato se riuscissi a passarmi il materiale. gli ST6 non li conosco ancora troppo bene... conosco meglio i PIC... ma prima o poi dovrò mettermici comunque quindi meglio iniziare da qualcosa di utile.

Ti mando una mail sul tuo indirizzo così conosci il mio e se trovi il progetto puoi inviarmelo.

Grazie ancora!

Ciao!

Reply to
ASAS

snipped-for-privacy@f63g2000hsf.googlegroups.com...

li

=F2

Dai un'occhiata al sorgente intanto. Cerco di scovare la scheda...

Ciao. Piccio.

;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| Assembly directives | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= |

.title "Periodimetro al minuto by Picciati Andrea - 19/09/1996"

.vers "st6210" .romsize 2 .w_on

.pp_on

;**************************************************************************=

*** ;* data space * ;**************************************************************************= ***

;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| data registers | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= |

.input "6215_reg.asm"

;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| data ram | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= |

Led0 .def 84h ;digit #0 Led1 .def 85h ;digit #1 Led2 .def 86h ;digit #2 Point .def 87h ;stato del punto indicatore di bpm

Stat .def 88h ;byte di bit status vari punto .equ 3 ;bit di accensione punto (0 =3D on) sync .equ 4 ;bit di sincronismo con nmi sync_2 .equ 5 ;bit di sincronismo 2 con nmi Tim_stat .def 89h ;copia temporanea su it_timer di Stat

A_int .def 8ah ;area di salvataggio reg. su int X_int .def 8bh

Bb0 .def 8ch ;4 byte Bb1 .def 90h ;2 byte Bb2 .def 92h ;3 byte Digit .def 95h ;3 digit

Tmr_lsb .def 98h ;contaimpulsi lsb Tmr_msb .def 99h ;contaimpulsi msb Cap_lsb .def 9ah ;capture Tmr_lsb Cap_msb .def 9bh ;capture Tmr_msb

Nmi_stat .def 9ch ;byte di stato riservato a nmi nmi_bit .equ 7 ;settato su nmi

Ref_disp .def 9dh ;contatore it_tim per display Cnt_int .def 9eh Cnt_sec .def 9fh ;contatore a decremento come Point

;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| constants definition | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | count .equ 41 ;timer a 1016 Hz watchtim .equ 0feh ;valore di ricarica watchdog delay .equ 166 ;ritardo di 1 secondo tmz .equ 7 ;bit timer 0=3Davvia conteggio prsc_disp .equ 6 ;prescaler per refresh display bip .equ 15 ;durata flash punto in ms/6 t_max .equ 12 ;12 x 256 =3D 3072 cont =3D 3 sec (20 bpm) t_min .equ 243 ;243 cont =3D 0.24 sec (250 bpm) ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| data rom | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= |

.section 1

.org 80h

; 7 6 5 4 3 2 1 0 ; - G F E D C B A

bitmap .byte 03Fh,06h,05Bh,04Fh ; 0 1 2 3 .byte 066h,06Dh,07Dh,027h ; 4 5 6 7 .byte 07Fh,06Fh,077h,07Ch ; 8 9 A b .byte 039h,05Eh,079h,071h ; C d E E .byte 03Dh,076h,038h,037h ; G H L M .byte 073h,03Eh,058h,074h ; P U c h .byte 04h,018h,054h,05Ch ; i l n o .byte 067h,050h,078h,01Ch ; q r t u .byte 040h,08h,0Fh,00h ; - _ ] .byte 01Eh ; J

ooo_txt .byte 07Fh,07Fh,07Fh ;"888" mmm_txt .byte 040h,040h,040h ;"---" nul_txt .byte 000h,000h,000h ;" "

Lo_txt .byte 000h,038h,05Ch ;" Lo" Hi_txt .byte 000h,076h,004h ;" Hi"

.ascii "PCCNDR66P05H223B SETTEMBRE 1996"

;**************************************************************************=

*** ;* PROGRAM SPACE * ;**************************************************************************= ***

;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= | ;| main program | ;| =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= |

reset ldi wdr,watchtim ;Load the watchdog.

ldi ddra,00001111b ;pa0=3Dpa1=3Dpa2=3Dpa3=3Dopen drain 20mA sink ldi ora,00000000b ldi dra,00001111b

ldi ddrb,01111111b ;pb 0,1,2,3,4,5,6 =3D push-pull (display) ldi orb,01111111b ;pb 7 =3D pull-up input ldi drb,00000000b

ldi ior,00010000b ;Enables all interrupts ldi drwr,bitmap.w ;inizializ. posiz. data rom

ldi tcr,count ;12 x 8 x (count) x 1/4 Mhz =3D 984 uS ldi tscr,01101011b ;Start the timer. (50 Hz) ;--------------------------- ldi x,84h ;azzera tutta la RAM utente ldi v,60 clr a cancel ld (x),a inc x dec v jrnz cancel ;--------------------------- ldi Ref_disp,prsc_disp ;carica prescaler refresh display ldi Point,bip ldi Cnt_sec,delay ;tempo per 1 secondo ;--------------------------- reti ;abilita anche nmi

; test segmenti

ldi v,3 ; tseg_2 ldi a,ooo_txt.d call printa ; ldi Cnt_sec,delay/4 tseg_0 ld a,Cnt_sec cpi a,1 jrnz tseg_0 ; ldi a,nul_txt.d call printa ; ldi Cnt_sec,delay/4 tseg_1 ld a,Cnt_sec cpi a,1 jrnz tseg_1 ; dec v jrz tseg_3 jp tseg_2

tseg_3 ldi a,mmm_txt.d call printa set sync,Stat ;sincronizzati

;--------------------------- loop ld a,Cnt_sec cpi a,1 jrnz loop loop_2 jrs sync,Stat,loop_2 ;attendi sync ;--------------------------- res 6,tscr ;di ; ld a,Cap_lsb ;divisore =3D conteggio captured ld Bb1+0,a ld a,Cap_msb ld Bb1+1,a ; set 6,tscr ;ei ;--------------------------- loop_max ld a,Bb1+1 ;check min-max cpi a,t_max jrc loop_min ldi a,Lo_txt.d call printa set sync,Stat ;sincronizzati jp loop_1

loop_min ld a,Bb1+1 jrnz loop_0 ld a,Bb1+0 cpi a,t_min jrnc loop_0 ldi a,Hi_txt.d call printa set sync,Stat ;sincronizzati jp loop_1 ;--------------------------- loop_0 ldi Bb0+0,48 ;dividendo =3D 60 / 984E-6 =3D

60976 ldi Bb0+1,238

call dividi call prnt_dec

loop_1 ldi Cnt_sec,delay ;attendi 1 secondo jp loop

;|-------------------------------------------------------------------------=

--
;               visualizza scritta punt. da x su Lcd(0-2)
;|-------------------------------------------------------------------------=
Reply to
Piccio

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.