Pagina 1 di 1

Source relativo ad articolo

MessaggioInviato: 18 gen 2017, 21:31
da EcoTan
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

Re: Source relativo ad articolo

MessaggioInviato: 19 gen 2017, 8:07
da alev
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

Re: Source relativo ad articolo

MessaggioInviato: 20 gen 2017, 0:47
da franx
indentazione...senno' mal di testa :D :D
comunque complimenti per il lavoro.