#include "wiring_private.h"
// Area modulo cattura
#define NCAMPIONI 128
volatile uint32_t vmicros[NCAMPIONI];
volatile uint8_t imicros,vcamp[NCAMPIONI];
// Area modulo mytimer
// Risoluzione timer di MYTICK microsecondi
#define MYTICK 4
volatile union {
uint32_t cnt32;
struct {
uint8_t cntl;
uint16_t cnt16;
uint8_t cnth;
} s;
} mytick;
//
void setup() {
Serial.begin(300);
// Inizializzazione Area modulo cattura
imicros=0;
sbi(PCMSK2, PCINT18);
sbi(PCICR, PCIE2);
// Inizializzazione per modulo mytimer
mytick.cnt32=0;
OCR0A=0;
sbi(TIMSK0, OCIE0A);
//
Serial.print("Salve, mondo\n");
delay(1000);
Serial.println(F_CPU);
for (uint8_t i=0; i<imicros; i++){
Serial.print(i);
Serial.print("\t");
Serial.print((vcamp[i]>>2)&41);
Serial.print("\t");
Serial.print(i);
Serial.println(vmicros[i]);
}
/* while(digitalRead(2)==1)
while(PIND&0x4);
*/
}
void loop() {
}
ISR(TIMER0_COMPA_vect) {
if(++mytick.s.cnt16 == 0) mytick.s.cnth++;;
}
ISR(PCINT2_vect){
sbi(PORTD,3);
if (imicros<NCAMPIONI) {
mytick.s.cntl = TCNT0;
vcamp[imicros]=PIND;
vmicros[imicros++]= mytick.cnt32;
}
cbi(PORTD,3);
}