Περιεργα Bugs που μπορει να σας κανουν να αναρωτιεστε γιατι δε λειτουργει ο κωδιικας...

Απάντηση
Άβαταρ μέλους
Βασίλειος
ΡΑΤΣΙΣΤΗΣ
Δημοσιεύσεις: 96
Εγγραφή: 14 Νοέμ 2017, 21:19
Τοποθεσία: Athens
Επικοινωνία:

Περιεργα Bugs που μπορει να σας κανουν να αναρωτιεστε γιατι δε λειτουργει ο κωδιικας...

Δημοσίευση από Βασίλειος » 20 Φεβ 2018, 16:28

*Χρησιμοποιείτε τα pins που ΔΕΝ ειναι PWM (οπως το pin 3,5.. στο UNO) για button read (input). Για καποιο λογο τα PWM δε "λειτουγουν" καλα οταν τα χρησιμοποιειτε για button input, μαλλον επειδη ειναι σχεδιασμενα για να δινουν PWM σηματα, αρα και να λαμβανουν?? μονο τετοια? δε ξερω... Σιγουρα παντως μη χρησιμοποιειτε ουτε τα Α0...Α5 analog pins για να διαβασετε 0 η 1.

*Το pin0 του arduino uno δεν με αφηνε να παρω σωστες μετρησεις οταν μετρουσα αποσταση με ultrasonic senor. Λογικα το RX που λειι χρησιμοποιειται και κατα τη διαρκεια που τρεχει το προγραμμα??

*Fun fact: there is no way to delay inside an interrupt. Love ya all <3
Moon also rises

cdrm
Δημοσιεύσεις: 1
Εγγραφή: 20 Απρ 2018, 17:20

Re: Περιεργα Bugs που μπορει να σας κανουν να αναρωτιεστε γιατι δε λειτουργει ο κωδιικας...

Δημοσίευση από cdrm » 20 Απρ 2018, 17:32

  • Tα analog pins μια χαρα λειτουργούν και ως digital. Πιθανόν να μην έχουν ενσωματωμένη pull-up ή pull-down - αν βάλεις θα σου λυθούν όποια προβλήματα έχεις.
  • Πιθανόν να είχες κάνει Serial.begin()? Δεν είμαι σίγουρος γι' αυτό γιατί δεν ασχολούμαι και τόσο με arduino.
  • Φυσικά και γίνεται να έχεις delay μέσα σε interrupt (αν και δεν είναι πολύ θεμιτό*). Το standard delay() function του arduino νομίζω είναι implemented με interrupts και έτσι προκύπτει το πρόβλημα. Το delayMicros() λειτουργεί απ' όσο θυμάμαι. Στην τελική do it the karaiskos way.

    Κώδικας: Επιλογή όλων

    #define NOP __asm__ __volatile__ ("nop\n\t")
    
    void ISR_x() 
    {
    	...
    	NOP; // 1 clock cycle
    	...
    }
    
    Mε μερικά #ifdef για να καλύψεις τα διάφορα clock φτιάχνεις κ το δικό σου portable delay function για τέτοιες χρήσεις.
*Aν η λογική είναι περιοδική, κάνε timer interrupt, αν θες τα external interrupt να εξυπηρετούνται περιοδικά, θεωρώ ο καλύτερος τρόπος στον arduino είναι να τα απενεργοποιήσεις για Χ χρόνο.

Απάντηση

Επιστροφή στο “Arduino”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες