- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 15

Thema: SainSmart Arduino UNO R3 Timer

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    05.05.2013
    Beiträge
    8
    Hallo,

    danke für den Link.

    Zu dem anderen Thema und um hier keine Falschinfos aufkommen zu lassen:

    Deine Aussage bezüglich der Rechenoperation mit "hex-Zahlen" und "dezimal-Zahlen" sind definitiv falsch. Die Schreibweise einer Zahl ist, solange keine String/char* verwendet wird, völlig irrelevant. Es handlet sich bei 0xFFFF lediglich um eine andere Schreibweise für 65535 (sofern es sich um eine unsigned, also vorzeichenlosen Datentypen handelt). Aus der Schreibweise in Hexadezimal lässt sich allerdings besser ablesen, dass alle bits gesetzt sind bzw. dies der maximale Wert für 16 bit sind.

    Ein einfaches Beispiel, mit dem du das verifizieren kannst:
    Code:
    void setup()
    {
      Serial.begin(9600);
    }
    
    unsigned int n;
    
    void loop()
    {
      n = 0xFFFF - 200;
      
      Serial.println(n);
      
      n = 65535 - 200;
      
      Serial.println(n);
      
      while(1);
    }
    Die Aussgabe auf Serial:
    65335
    65335

    Leider ist dadurch aber immer noch nicht mein Problem gelöst... Hat denn keiner Erfahrung mit dem SainSmart Board?
    Muss ich den Timer vielleicht anders ansteuern oder enthält das Board einen Fehler?

    Gruß,

    SACO

    ------------------------------------------------

    EDIT: Endlich! Ich habs! Scheinbar sind in dem Code gleich zwei Fehler:

    1.) 4 | 5 = 5; ich will aber WGM12 setzen, damit ich CTC nutzen kann. Dieses bit wird durch 8 repräsentiert. Richtig wäre also 13 = 8 | 5 = 1101b oder eben 1 << WGM12 | 1 << CS12 | 1 << CS10
    2.) Der zweite Fehler ist, dass das Setzen von OCR1A nur dann funktioniert, wenn TCCR1B = 0, also der Timer aus ist. Wieso das genau so ist, weiß ich noch nicht, aber vielleicht kann jemand hier
    im Forum das erklären. Sonst werde ich mir das noch raussuchen.

    Der funktionierende Code:

    Code:
    void setup()
    {
      Serial.begin(9600);
    	
      noInterrupts();
    
      // stop the timer	
      TCCR1A = 0;
      TCCR1B = 0;
      
      OCR1A = 15624; // with 16 Mhz: about one second
      TCNT1 = 0; // reset counter  
    
      // start the timer
      TCCR1B = 13; // Mode 4, CTC on OCR1A; divide by 1024
      TIMSK1 = 2;     //Set interrupt on compare match for OCIE1A
    
      interrupts();
    }
    
    ISR(TIMER1_COMPA_vect) {
      Serial.println("X");
    }
    
    void loop()
    {
    }
    Geändert von SACO (07.05.2013 um 22:15 Uhr)

Ähnliche Themen

  1. SainSmart uno r3-atmega328
    Von Droggelbecher im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 18
    Letzter Beitrag: 04.01.2013, 11:57
  2. Arduino Uno .... [GELÖST]
    Von Jonas15 im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 27.03.2012, 21:08
  3. Arduino Uno mit BASCOM
    Von uddo im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 14.02.2012, 19:22
  4. Arduino uno ... need help
    Von Leftbehindesp im Forum Arduino -Plattform
    Antworten: 3
    Letzter Beitrag: 09.02.2012, 11:46
  5. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen