Εμφάνιση αποτελεσμάτων : 1 έως 10 από 10

Θέμα: 12f629, timer1 και Mikrobasic

  1. #1
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή 12f629, timer1 και Mikrobasic

    Καλησπέρα παίδες.
    Άρχισα να ασχολούμαι με μΕ και χρησιμοποιώ για το προγραμματισμό Mikrobasic. Ο πρώτος μικροελεγκτής που προσπαθώ να μάθω είναι ο 12f629. Αλλά έχω ένα πρόβλημα. Προσπαθώ να δουλέψω με τον timer1, αλλα δεν τα καταφέρνω, καθώς δε μπορώ ούτε καλά καλά να τον ενεργοποιήσω μάλλον.
    Προσπαθώ να βγάλω το timer1 στην πόρτα περισσότερο σαν ένδειξη καλής λειτουργίας. Αλλά δεν αλλάζει καθόλου η κατάσταση της πόρτας. Όποιος μπορεί ας ρίξει μια ματιά στο παρακάτω κώδικα μήπως βγάλει καμιά άκρη. Μάλλον δεν ενεργοποιείται καν ο timer.
    Ευχαριστώ προκαταβολικά.
    Κώδικας:
    program name
    
    dim counter as byte
    
    sub procedure interrupt
      inc(counter)
      PIR1.TMR1IF = 0              ' clear TMR1IF
    end sub
    
    main:
    
      t1con.TMR1ON = true
      pie1.TMR1IE = true
      TRISIO  = 0                   ' PORTB is output
      GPIO  = %001000                ' initialize PORTB
      CMCON= $FF
      T1CON  = %00000101                   ' TIMER1 settings
      counter = 0                  ' initialize ounter
      pir1.TMR1IF  = 0
      tmr1h = 00
      tmr1l = 00
      do
        if counter = 64 then       ' if counter is 64,
          GPIO  = tmr1H      ' then toggle PORTB LEDs
          counter = 0              ' and reset counter
          delay_ms(1000)
        end if
      loop until false
    end.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη dal_kos : 18-12-09 στις 21:34

  2. #2
    Μέλος Το avatar του χρήστη DT200
    Όνομα
    Ιωάννης
    Εγγραφή
    Nov 2005
    Περιοχή
    ΜΕΓΑΡΑ
    Μηνύματα
    1.245

    Προεπιλογή

    μάλλον έχω σκουριάσει και δεν καταλαβένω και πολλά από
    αυτά που γράφεις.

    δεν ξέρω σε τι επίπεδο είσαι και θέλω να σε ρωτήσω κάτι πολύ
    απλό , έχεις ανάψει και σβήσει κάποιο Led με αυτόν το μ/ε ?

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή

    Τώρα άρχισα να ασχολούμαι με μικροελεγκτές και Mikrobasic. Έχω ανάψει λεντ, εχω χρησιμοποιήσει και το timer0, έχω φτιάξει κι ένα υποτυπώδες προγραμματάκι που πατάς κάποια μπουτόν και ανάβει κάποιες εξόδους, σβήνει κάποιες άλλες κλπ, αλλά το timer1, δεν τον καταφέρνω.

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη DT200
    Όνομα
    Ιωάννης
    Εγγραφή
    Nov 2005
    Περιοχή
    ΜΕΓΑΡΑ
    Μηνύματα
    1.245

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από dal_kos Εμφάνιση μηνυμάτων
    Προσπαθώ να βγάλω το timer1 στην πόρτα περισσότερο σαν ένδειξη καλής λειτουργίας. Αλλά δεν αλλάζει καθόλου η κατάσταση της πόρτας.
    για ξανά πες το λίγο καλύτερα τι θέλεις να κάνεις διότι δεν το έχω καταλάβει καλά.

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή

    Βασικα απλα θελω να κάνω το timer1 να λειτουργήσει και να προκαλεί interrupt. Στο πρόγραμμα που είχα δώσει στο πρώτο ποστ, προσπαθούσε να βγεί το tmr1h στη πόρτα, ώστε να δω αν κινειται, αλλά δεν γινόταν τίποτα. Αν μπορέσει κάποιος να μου εξηγήσει τι χρειάζεται για να κάνω έναρξη του timer, θα του ειμαι ευγνώμων.

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη DT200
    Όνομα
    Ιωάννης
    Εγγραφή
    Nov 2005
    Περιοχή
    ΜΕΓΑΡΑ
    Μηνύματα
    1.245

    Προεπιλογή

    εάν υποθέσουμε ότι το πρόγραμμα είναι σωστό ...
    γιατί περιμένεις να δεις κάποια αλλαγή στην πόρτα σου , αφού
    η πόρτα δέχεται πάντα την ίδια τιμή , διότι ο αριθμός που εισάγετε από
    τον tmr1h είναι πάντα ο ίδιος.

    γιατί είναι ο ίδιος ?
    επειδή το πρόγραμμα σου εκτελείτε με τέτοιο τρόπο που την στιγμή
    που διαβάζεις τον tmr1h έχει πάντα την ίδια τιμή.

    θα ξέρω περισσότερα σε λίγο, θα βγάλω από την κούτα το easypic 5.

    0 Not allowed! Not allowed!

  7. #7
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή

    Σωστά.. δε το χα σκεφτεί αυτό. Το δοκίμασα τώρα βάζοντας το να βγάζει πάντα το tmr1h στην έξοδο και υπήρχε πράγματι συνεχής εναλλαγή. Ωστόσο μάλλον ο counter δεν αυξάνεται γιατί ποτέ δεν μπαίνει μέσα στο if μάλλον, αρα δεν κάνει interrupt.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη dal_kos : 20-12-09 στις 19:15

  8. #8
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή

    Βρήκα αυτό το άρθρο: http://www.mikroe.com/en/books/picbasicbook/06.htm
    το οποίο με βοήθησε και το έκανα να λειτουργήσει. Ευχαριστώ για τις απαντήσεις. Ο κώδικας που λειτούργησε είναι ο εξής:
    Κώδικας:
    program name
    
    dim counter as longint
    
    sub procedure interrupt
      counter = counter +1
      PIR1.0= 0              ' clear TMR1IF
    end sub
    
    main:
    
    
      TRISIO  = 0                   ' PORTB is output
      GPIO  = %001000                ' initialize PORTB
    
    
    T1CON = 1
    PIR1.TMR1IF = 0         ' Clear TMR1IF
    PIE1  =   1             ' Enable interrupts
    INTCON = $C0
    
      tmr1h = %10101010
      tmr1l = 00
    
      counter = 5                  ' initialize ounter
    
      do
          GPIO  = counter      ' then toggle PORTB LEDs
    
      loop until false
    end.

    0 Not allowed! Not allowed!

  9. #9
    Μέλος Το avatar του χρήστη DT200
    Όνομα
    Ιωάννης
    Εγγραφή
    Nov 2005
    Περιοχή
    ΜΕΓΑΡΑ
    Μηνύματα
    1.245

    Προεπιλογή

    Μπράβο !!!
    εγώ μετά το τελευταίο μου ποστ με πήραν σε κάτι παιδικά γενέθλια
    και δεν το προχώρησα καθόλου,
    ευτυχώς το βρήκες εσύ.

    τα λέμε...

    0 Not allowed! Not allowed!

  10. #10
    Μέλος Το avatar του χρήστη dal_kos
    Όνομα
    Κώστας
    Εγγραφή
    Jun 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    1.000

    Προεπιλογή

    Να αναφέρω επίσης πως η διαφορά ήταν στο Intcon όπου άλλαξε απο 1000 0000 σε 1100 0000. Αν μπορεί κάποιος να μου εξηγήσει για ποιο λόγο δε λειτουργούσε πριν, αλλά λειτουργεί τώρα, απλά ενεργοποιόντας το interrupt από την eeprom, θα με βοηθούσε.

    0 Not allowed! Not allowed!

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

  1. timer και mikrobasic
    By kotsos___ in forum Μικροελεγκτές
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 08-01-13, 20:07
  2. Timer1 as timer
    By ventouza6969 in forum Μικροελεγκτές
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 07-12-12, 18:49
  3. Απαντήσεις: 60
    Τελευταίο Μήνυμα: 18-10-10, 16:25
  4. PIc, Mikrobasic και SHT11 Sensor!
    By leosedf in forum Μικροελεγκτές
    Απαντήσεις: 18
    Τελευταίο Μήνυμα: 22-01-10, 16:27
  5. PIC 12F629
    By orck in forum Μικροελεγκτές
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 11-01-09, 18:30

Tags for this Thread

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

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