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()
{
}
Lesezeichen