Tere,
lühike sissejuhatus: ehitasin väikese ja lihtsa seadme, mille ülesandeks on sisendimpulsi saamisel väljundi tõstmine HIGH olekusse ja seda umbes 3 sekundit hoida. PICiks on 16F84A. Hetkel on väljundis led takistiga tegevuse kontrollimiseks, hiljem asendan releega. Sisendiks peaks olema lüliti positiivse pingega 4,5V läbi 100 oomise takisti.
Probleem: Kui ühendada kogu süsteem omavahel ära tundub PICile, et sisend on olekus HIGH ja alustab oma tegevust kohe toitepinge saamisel. Kui jätta sisendi jalg ühendamata ja seda lihtsalt puudutades lüliti jalaga toimib kõik nagu peaks, ehk alles siis alustab tööd. Kahjuks ei saa hetkel skeemi kaasa panna, aga ega seal rohkem midagi polegi. Ossiks on kellakvarts ja sisendis kasutan häirekindluse tõstmiseks 100nF kondensaatorit.
Proovisin internetist soovitatud erinevaid lahendusi, kuid kõik tulutult. Näiteks kõik teised sisendid/väljundid läbi takisti maaga ühendada, suurendada sisendi kondensaatorit, kasutada erinevaid porte jne.
PICi läinud koodi jupp C's:
void main() {
Ehk oskab keegi targem midagi kosta?
Priit
lühike sissejuhatus: ehitasin väikese ja lihtsa seadme, mille ülesandeks on sisendimpulsi saamisel väljundi tõstmine HIGH olekusse ja seda umbes 3 sekundit hoida. PICiks on 16F84A. Hetkel on väljundis led takistiga tegevuse kontrollimiseks, hiljem asendan releega. Sisendiks peaks olema lüliti positiivse pingega 4,5V läbi 100 oomise takisti.
Probleem: Kui ühendada kogu süsteem omavahel ära tundub PICile, et sisend on olekus HIGH ja alustab oma tegevust kohe toitepinge saamisel. Kui jätta sisendi jalg ühendamata ja seda lihtsalt puudutades lüliti jalaga toimib kõik nagu peaks, ehk alles siis alustab tööd. Kahjuks ei saa hetkel skeemi kaasa panna, aga ega seal rohkem midagi polegi. Ossiks on kellakvarts ja sisendis kasutan häirekindluse tõstmiseks 100nF kondensaatorit.
Proovisin internetist soovitatud erinevaid lahendusi, kuid kõik tulutult. Näiteks kõik teised sisendid/väljundid läbi takisti maaga ühendada, suurendada sisendi kondensaatorit, kasutada erinevaid porte jne.
PICi läinud koodi jupp C's:
void main() {
int cntr = 0;
TRISA = 0x00;
TRISB = 0xFF;
PORTB = 0x00;
PORTA = 0x00;
while(1)
{
TRISB = 0xFF;
PORTB = 0x00;
PORTA = 0x00;
while(1)
{
if(PORTB == 0x02 && cntr == 0)
{
{
PORTA = 0x02;
Delay_ms(3500);
PORTA = 0x00;
Delay_ms(90000);
cntr = 1;
Delay_ms(3500);
PORTA = 0x00;
Delay_ms(90000);
cntr = 1;
}
else if(PORTB == 0x00 && cntr == 1)
{
{
cntr = 0;
}
}
}Ehk oskab keegi targem midagi kosta?
Priit
Comment