Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Source relativo ad articolo

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Source relativo ad articolo

Messaggioda Foto UtenteEcoTan » 18 gen 2017, 21:31

Apro questo thread per inserire un source che non saprei come allegare altrimenti.
Se le righe risultassero ancora spezzate, converrebbe ridurre la percentuale di zoom (CTRL-)
Codice: Seleziona tutto
'pin1=-reset                          pin2=PortB3,led infrarosso
'pin3=ADC2 segnale fototransistor     Pin4=Gnd
'pin5=PortB0,Mosi,LedRosso            pin6=PortB1,MISO,ledVerde
'pin7=clock programmatore             pin8=5Volt
$crystal = 16000000           '16mhz Attiny45,Fusebit:Sut_cksel=Pll,Ckdiv8 Off
'Clkpr = &B10000000            'sblocco prescaler clock
'Clkpr = &B00000000            'no prescaler clock
Ddrb = &B00001011             'out B0pin5 rosso,B1pin6 verde,B3pin2 infrarosso
Admux = &B00000010            'Vref=Vdd, ADC2 pin3
Adcsra = &B11101111           'enable start auto interrupt prescale128
Didr0 = &B00111111            'ADC0,1,2,3 AIN0,1 disabled as digital input
On Adc Leggi                  'interrupt ogni 113 microsec

Rosso Alias Portb.0 : Verde Alias Portb.1       'uscite digitali led
Emit Alias Portb.3            'e led infrarosso
Dim Lmis As Word At $60 : Dim Hmis As Byte At $61 Overlay       'byte L,H ADC
Dim Aux As Integer : Dim Sig As Word : Dim Stato As Word
Dim Lp As Integer : Dim Lett As Integer
Enable Interrupts

Inizio:                       'il main program
If Sig < 1 Then               'utilizza i led per segnalare l'entità
Verde = 0 : Rosso = 0         'degli infrarossi riflessi dall'ostacolo
End If
If Sig >= 1 And Sig < 10 Then
Verde = 1 : Rosso = 0
End If
If Sig >= 10 And Sig < 60 Then
Verde = 0 : Rosso = 1
End If
If Sig >= 60 Then
Verde = 1 : Rosso = 1
End If
Goto Inizio
Stop

Leggi:                        'ISR dello ADC ogni 113 microsec
Lmis = Adcl : Hmis = Adch     'byte Low,High da registri conversione
Shift Lmis , Left , 4         'amplifica e consente successivi troncamenti
Lett = Lett + Lmis            'prefiltraggio cioè
Shift Lett , Right , 1        'semplice media con lettura precedente
If Stato = 3 Then             'al quarto interrupt cioè dopo 452 microsec
Emit = 1                      'mette ON il led infrarosso
Aux = Lett - Lp               'segnale analogico attuale meno precedente
Lp = Lett                     'salva segnale attuale per successiva sottrazione
End If
If Stato = 7 Then             'ottavo interrupt cioè dopo altri 452 microsec
Emit = 0                      'mette OFF il led infrarosso
Aux = Lp - Lett               'segnale analogico precedente meno attuale
Lp = Lett                     'salva segnale attuale per successiva sottrazione
End If
Stato = Stato + 1             'conta gli interrupt
If Stato = 8 Then Stato = 0   'ogni 8 ripete il ciclo cioè circa 1100 hertz
If Aux < 0 Then               'se il segnale è strano
Aux = 0                       'lo azzeriamo
Sig = 0                       'e azzeriamo anche il filtro
End If
Sig = Sig * 15                'filtraggio: 15 volte il valore già filtrato
Sig = Sig + Aux               'più il valore attuale da filtrare
Shift Sig , Right , 4         'quindi dividiamo per 16
Return
Avatar utente
Foto UtenteEcoTan
7.720 4 12 13
Expert EY
Expert EY
 
Messaggi: 5420
Iscritto il: 29 gen 2014, 8:54

0
voti

[2] Re: Source relativo ad articolo

Messaggioda Foto Utentealev » 19 gen 2017, 8:07

Per allegare un file sorgente, puoi usare lo strumento "Invia allegato" che funziona non solo per le immagini

In questo modo, la formattazione/indentazione del file dovrebbe rimanare intatta
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[3] Re: Source relativo ad articolo

Messaggioda Foto Utentefranx » 20 gen 2017, 0:47

indentazione...senno' mal di testa :D :D
comunque complimenti per il lavoro.
Avatar utente
Foto Utentefranx
465 3 10
Frequentatore
Frequentatore
 
Messaggi: 199
Iscritto il: 28 feb 2010, 17:43


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti