dutu590 Postat August 19, 2019 Partajează Postat August 19, 2019 am nevoie, contracost, de un temporizator cu PIC 16F84, sau 12F683, care sa faca temporizarile dupa secventa anexata......doar fisierul hexa ! https://imgur.com/a/cJ4CKyH Link spre comentariu
digix Postat August 19, 2019 Partajează Postat August 19, 2019 Cu atmega nu vrei ? Link spre comentariu
dutu590 Postat August 19, 2019 Autor Partajează Postat August 19, 2019 attiny13a....e ok ? Link spre comentariu
digix Postat August 19, 2019 Partajează Postat August 19, 2019 attiny85 am la indemana, e ok cu asta ? Link spre comentariu
dutu590 Postat August 19, 2019 Autor Partajează Postat August 19, 2019 nu am eu asta....doar daca il trimiti gata programat ! Link spre comentariu
digix Postat August 19, 2019 Partajează Postat August 19, 2019 Programat il pot trimite, daca esti interesat continuam in privat. Link spre comentariu
dutu590 Postat August 19, 2019 Autor Partajează Postat August 19, 2019 ok, trimite mesaj cu pretul Link spre comentariu
dutu590 Postat August 19, 2019 Autor Partajează Postat August 19, 2019 anunt valabil ! Link spre comentariu
informer Postat August 19, 2019 Partajează Postat August 19, 2019 100RON... Mai mult pt. ca tre` sa-ti fac filmuletul demonstrativ decat pt. programul propriu zis.... Alternativ te pot/te putem ajuta sa-l faci singur, moka .... Link spre comentariu
mars01 Postat August 19, 2019 Partajează Postat August 19, 2019 @dutu590, Din diagrama nu este clar ce anume se repeta, dar uite cam cum arata o chestie simpla care se poate completa usor pentru a contine si bucla repetabila. /* uC: 12F683 Datasheet: https://ww1.microchip.com/downloads/en/devicedoc/41211d_.pdf Freq: INTOSC: 8MHZ Compiler: mikroC for PIC */ #include <stdint.h> #define True 1 #define False 0 #define ON 1 #define OFF 0 #define Q1 GP4_bit #define Q2 GP5_bit // values in seconds #define PERIOD 5 #define DOUBLE_PERIOD 10 #define WAIT_TIME 1800 // timer variable volatile uint32_t time = 0; void wdt_reset() { asm CLRWDT; } void wdt_control(uint8_t val) { if (val == 0) { SWDTEN_bit = 0; } else { SWDTEN_bit = 1; } } void hw_init(){ // init INTOSC at 8MHZ IRCF2_bit = 1; IRCF1_bit = 1; IRCF0_bit = 1; SCS_bit = 1; // prescaler attached to TIMER0 PSA_bit = 0; // configure watchdog // WDT postscaler at 1: 65526 => ~2sec timeout WDTPS3_bit = 1; WDTPS2_bit = 0; WDTPS1_bit = 1; WDTPS0_bit = 1; // comparators OFF CM2_bit = 1; CM1_bit = 1; CM0_bit = 1; // ADC OFF ADON_bit = 0; // init GPIO // all pins are digital ANSEL = 0x00; // all pins are outputs TRISIO = 0x00; // all pins are LOW GPIO = 0x00; // Timer1 Interrupt Time : 100 ms T1CON = 0x21; TMR1IF_bit = 0; TMR1H = 0x3C; TMR1L = 0xB0; TMR1IE_bit = 1; INTCON = 0xC0; } uint32_t sec_time() { uint32_t temp_time = 0; GIE_bit = 0; temp_time = time; GIE_bit = 1; return temp_time; } void Interrupt() { static uint8_t counter = 0; if (TMR1IF_bit){ TMR1IF_bit = 0; TMR1H = 0x3C; TMR1L = 0xB0; // increase time each 1 sec if (counter >= 10) { counter = 0; time++; } else counter++; } } void main() { uint32_t now = 0; // init hardware hw_init(); // start watchdog wdt_control(1); /******************************************/ /********** STARTUP SEQUENCE **************/ /******************************************/ // delay 5sec and then turn ON Q1 now = sec_time(); while(sec_time() < (now + PERIOD)){ wdt_reset(); } // turn Q1 ON Q1 = ON; // delay 5sec and then turn ON Q2 time = 0; now = sec_time(); while(sec_time() < (now + PERIOD)){ wdt_reset(); } // turn Q2 ON Q2 = ON; // delay 30 minutes time = 0; now = sec_time(); while(sec_time() < (now + WAIT_TIME)){ wdt_reset(); } /******************************************/ /********** END STARTUP SEQUENCE **********/ /******************************************/ // infinite loop while(True) { } } Link spre comentariu
dutu590 Postat August 20, 2019 Autor Partajează Postat August 20, 2019 ms mult.....poti trimite gata compilat, fisierul hexa, il scriu eu in PIC ! se repeta secventa de 30 minute, prima parte a temporizarii se refera strict la temporizari la alimentarea montajului ( PIC-ului ) ! nu stiu nimic programare !!! Link spre comentariu
informer Postat August 20, 2019 Partajează Postat August 20, 2019 (editat) @mars01, parerea mea este ca avand in vedere ca nu se face decat o setare de pini la niste intervale, folosirea watchdog-ului si intreruperilor ii un pic de over-engineering... :). Io inteleg ca acolo sunt de fapt cinci momente la care se comuta starea iesirilor (5s, 10s, 1810s, 1815s si 1820s) dupa care se repeta. Incrementand un contor de la 0 in fiecare secunda si facand un switch(contor) pe valorile alea intr-un while infinit, totul se rezuma la un sfert de pagina... poate nu-i asa elegant dar sigur e suficient. Editat August 20, 2019 de informer Link spre comentariu
dutu590 Postat August 20, 2019 Autor Partajează Postat August 20, 2019 va multumesc la toti, am rezolvat ! Link spre comentariu
mars01 Postat August 20, 2019 Partajează Postat August 20, 2019 @informer intotdeauna folosesc watchdog-ul. Din experienta, aceasta reduce mult din eventualele probleme si situatii inexplicabile. Link spre comentariu
Postări Recomandate