Hallo zusammen!
Im Netz habe ich eine interessante Schaltung eines Kapazitiven Sensors gefunden (
http://www.elektronik-labor.de/AVR/Touch.html) und (
www.zabex.de/site/schaltungstechnik.html#kanmi2).
Diese möchte ich mit einem PIC12F675 nachbauen.
Ursprünglich ist das Projekt für ATtiny13 bzw. Atmel-Prozesoren gedacht.
Hier mein Versuch, das Ganze auf einem PIC 16F877 nachzubauen:
Zwischen PB0 und PB1 befindet sich ein 22nF Keramik-Kondensator, an PB1 hängt noch ein Metallstück als Sensor dran.
int n;
void main()
{setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
Printf ("\nTest o.K.");
delay_ms(500);
set_tris_B(0x00); //alle Ausgang
output_B (0x00);
delay_us(250);
while(1)
{
set_tris_B (0x02); //Pin_B1 Eingang
output_B (0x00); // PORT B low
n=0;
While(1)
{
set_tris_B (0x02); //Pin_B0 Ausgang, B1 Eingang
output_B (0x01); //Pin_B0 high (+)
delay_us(10);
n++;
set_tris_B (0x03); //Pin_B0, B1 Eingang
delay_us(10);
set_tris_B (0x01); //Pin_B0 Eingang, B1 Ausgang
output_B (0x01); //Pin_B0 high, B1 low
delay_ms(250);
if (input(PIN_B0)==1) break;
set_tris_B (0x03); //Pin B0, B1 Eingang
}
set_tris_B (0x00); //PIN_B0,1,2,3,4 Ausgang
output_B (0x00); //PORTB = low
Printf ("\nLadezyklen =%i",n);
}
}
Leider funktioniert es noch nicht. Als Ladezyklus wird immer 1 ausgegeben.
Meine Frage:
Hab ich das BASCOM-Programm aus dem 1. Link korrekt umgesetzt? Oder gibt es einen essentiellen Unterschied zwischen Atmel und PIC, den ich übersehen habe?
Über Anregungen würde ich mich sehr freuen!
Danke schonmal..
Matthias