Σελίδα 11 από 13 ΠρώτηΠρώτη ... 9 10 11 12 13 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 101 έως 110 από 123

Θέμα: Παραδείγματα σε CCS

  1. #101
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή

    Ωραια δουλευει ευχαριστω.

    Κατι αλλο τωρα την τιμη αυτη θελω να αποθηκευεται και να μην χανεται μετα την απενεργοποιηση του μικροελεγχτη. Πρεπει να την αποθηκευω στην eeprom?

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη ventouza1987 : 17-04-14 στις 12:00

  2. #102
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από ventouza1987 Εμφάνιση μηνυμάτων
    Ωραια δουλευει ευχαριστω.

    Κατι αλλο τωρα την τιμη αυτη θελω να αποθηκευεται και να μην χανεται μετα την απενεργοποιηση του μικροελεγχτη. Πρεπει να την αποθηκευω στην eeprom?
    Ειναι απλο δυο εντολες ειναι τελικα
    value=read_eeprom(adress)
    write_eeprom(adress,value)

    0 Not allowed! Not allowed!

  3. #103
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή Frequency { Timer1 as counter & Timer0 as timer}

    H εργασια που κανει το παρακατω προγραμμα ειναι η εξης:
    Ο timer0 εχει προγραματιστει να εργαζεται ως timer. Και o timer1 ως μετρητης, συλλεγει παλμους απο την επαφη T1CKI απο 0 σε 5volt. Υστερα απο 3921 overflows του timer0 δλδ κοντα ενα δευτερολεπτο καθυστερηση εχει συλλεξει χ παλμους.

    Στην συνεχεια εχω προσ8εση μια απλη προηποθεση
    if (frequency>=1)
    {
    output_high(pin_c7);
    }
    για να δω αν οντως συλλεγει τους παλμους δλδ ενα παλμο ανα δευτερολεπτο κ δεν γινεται τιποτα.

    Επισης αν απο το προγραμμα αφεραισουμε τα εξης

    setup_TIMER_1(T1_EXTERNAL | T1_DIV_BY_1);
    set_TIMER1(0);
    frequency=get_timer1();
    set_TIMER1(0);

    το προγραμμα δουλευει 100% ως μια καθυστερηση ενος δευτερολεπτου αναβοσβηνοντας ενα απλο led.
    output_toggle(pin_c7);
    delay_ms(100);
    Με αποτελεσμα να αντιλαμβανομαι οτι κατι γινετε λαθος στο σεταρισμα του timer1 παρολα αυτα δεν βλεπω κατι μεμπτο εσεις?

    Κώδικας:
    #include <16F877A.h>    // Specifies the uP to be used
    
    #FUSES NOWDT            // Disable WatchDog Timer
    #FUSES XT               // Use Crystal Oscillator
    #FUSES PUT              // Enable Power On Timer
    #FUSES NOPROTECT        // EPROM Not Protected
    #FUSES NOLVP            // Disable Low Voltage programming
    #FUSES NOCPD            // No Code Protection
       
    #use delay(clock=4000000)   // Set Crystal Frequency
    
    int16 counts=0;   // Variable to count the number of TIMER0 Interruptions, initially set to zero
    //unsigned int16 
    int8 frequency=0;   // variable to hold the value from Timer1 set to zero
    
    
    #int_TIMER0   // Timer0 Interruption
    void isr_timer0()   // Interrupt Service Request for Timer0
        {  
        ++counts;   // Add one to flag variable
        }
    
    void main ()
    {
       setup_TIMER_0(RTCC_INTERNAL | RTCC_DIV_1);   // Define TIMER0 as Internal timer (Fosc/4)
       setup_TIMER_1(T1_EXTERNAL | T1_DIV_BY_1);  //Define Timer1 as External, no pre-scaler   
       enable_interrupts(GLOBAL);                   // Enable GLOBAL Interruptions
       enable_interrupts(INT_TIMER0);               // Enable TIMER0 Interruption
       set_TIMER0(0);                               // Reset TIMER0
       set_TIMER1(0);                             // Reset TIMER1
       
       while(true)   
          {
          IF (counts==3921)                         // Count approx. 1s @ 4MHz (0.999855s)
             {   
             frequency=get_timer1();              // Stores the number of clocks received at TIMER1
             counts=0;                              // Reset flag so it can start count to 3921 again
             set_TIMER0(0);                         // Reset TIMER0
             clear_interrupt(INT_TIMER0);           // Clear INT_TIMER0
             if (frequency>=1)
             {
             output_high(pin_c7);
             //output_toggle(pin_c7);
             //delay_ms(100);
             }
             set_TIMER1(0);                       // Reset TIMER1 
             }
          }
    }

    0 Not allowed! Not allowed!

  4. #104
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    Καταρχάς καλό πάσχα σε όλους !!

    Σπύρο πρέπει να δουλέψει,

    το εξωτερικό clock το δίνεις στο πιν15 που είναι το T1CKI και όχι στο πιν16 που είναι το T1OSI,

    για να ανάψει το λεντάκι θα πρέπει να πάρει ένα παλμό low to hi μέσα σε 1sec στο πιν t1cki, τον δίνεις?

    αν πάρει το παλμό μετά το λεντακι θα παραμείνει αναμμένο, για να σβήσει και να περιμένει το επόμενο ματσάρισμα βάλε μια else

    πχ.
    while(true)
    {
    IF (counts==3921) // Count approx. 1s @ 4MHz (0.999855s)
    {
    frequency=get_timer1(); // Stores the number of clocks received at TIMER1
    counts=0; // Reset flag so it can start count to 3921 again
    set_TIMER0(0); // Reset TIMER0
    clear_interrupt(INT_TIMER0); // Clear INT_TIMER0
    if (frequency>=1)
    {
    output_high(pin_c7);
    //output_toggle(pin_c7);
    //delay_ms(100);
    }
    else (output_low(pin_c7));
    set_TIMER1(0); // Reset TIMER1
    }
    }

    0 Not allowed! Not allowed!

  5. #105
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή

    Δεν εχω βαλει τον else γιατι δεν αναβει καν. Το εξωτερικο "clock " το δινω απο μια pull down επαφη στην θυρα RC0 . Οπως επισης εχω αλλαξει κ μικροελεγκτη μπας κ αλλα τπτ.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη ventouza1987 : 20-04-14 στις 21:50

  6. #106
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    Δεν μπορώ να το δοκιμάσω σε πραγματικό hardware (είμαι εκτός) αλλά δεν βλέπω το λόγο του προβλήματος

    εκτός του ότι ορίζεις την frequency σαν 8μπιτη αλλά είναι 16πμιτος ο τιμερ1,
    τη εννοείς με το δινω απο μια pull down επαφη στην θυρα RC0

    έχεις μια pulldown στην θύρα και δίνεις τους παλμούς ??

    0 Not allowed! Not allowed!

  7. #107
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    δες και αυτό που το ξέχασα πριν ρε σπύρο

    Capture.JPG

    http://ww1.microchip.com/downloads/e...Doc/39582C.pdf


    After Timer1is enabled in Counter mode, the module must first have
    a falling edge before the counter begins to increment.


    0 Not allowed! Not allowed!

  8. #108
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από spiroscfu Εμφάνιση μηνυμάτων
    δες και αυτό που το ξέχασα πριν ρε σπύρο

    Capture.JPG

    http://ww1.microchip.com/downloads/e...Doc/39582C.pdf


    After Timer1is enabled in Counter mode, the module must first have
    a falling edge before the counter begins to increment.

    Aρα αφου ο τιμερ1 αυξανει σε καθε rising edge κ εγω 8α εχω low default οταν θα κανω σουμα τους παλμους θα προσθετω 1 αφου θα χανω παντα το πρωτο παλμο ως triger του timer1. Σωστα ή καταλαβαινω λάθος?

    0 Not allowed! Not allowed!

  9. #109
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    όχι το triger του counter (με το falling edge) γίνεται μόνο κατά την ενεργοποίηση του,

    δηλ. χάνεις μόνο τον πρώτο παλμό που θα πάρει στο t1cki κατά την ενεργοποίηση του ή την πρώτη φορά που θα τροφοδοτηθεί ή κατά το reset.

    1 Not allowed! Not allowed!

  10. #110
    Μέλος
    Όνομα
    Σπύρος
    Εγγραφή
    May 2010
    Περιοχή
    Κεφαλονιά Αργοστόλι
    Μηνύματα
    105

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από spiroscfu Εμφάνιση μηνυμάτων
    όχι το triger του counter (με το falling edge) γίνεται μόνο κατά την ενεργοποίηση του,

    δηλ. χάνεις μόνο τον πρώτο παλμό που θα πάρει στο t1cki κατά την ενεργοποίηση του ή την πρώτη φορά που θα τροφοδοτηθεί ή κατά το reset.

    Yποκλινομαι.

    0 Not allowed! Not allowed!

Σελίδα 11 από 13 ΠρώτηΠρώτη ... 9 10 11 12 13 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Απαντήσεις: 26
    Τελευταίο Μήνυμα: 24-01-17, 14:54
  2. Προβλημα με C# (CCS)
    By dbsjro in forum Μικροελεγκτές
    Απαντήσεις: 43
    Τελευταίο Μήνυμα: 03-09-09, 02:03
  3. Παραδείγματα κώδικα c για AVR
    By nikspyr in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 29-03-09, 18:23

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας