Hallo oberallgeier,
ich habe jetzt einmal den Code aus dem EXAMPLES Ordner für IRKollision leicht verändert und benutze nun:
Code:
/*******************************************************************************
*
* Description: Asuro IR-Detektor Testprogramm
*
*****************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
***************************************************************************/
#include "asuro.h"
#include <stdlib.h>
static unsigned char newocr2 = 0xFE;
void InitIRDetect(void)
{
UCSRB = 0;
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = newocr2;
}
int main(void)
{
unsigned char sw;
Init();
InitIRDetect();
while (1)
{
UCSRB = 0;
OCR2 = 0xFE;
if (PIND & (1 << PD0))
StatusLED(GREEN);
else
StatusLED(RED);
sw = PollSwitch();
if (sw & 0x01)
newocr2 = 0xFE; //Pulsbreite 1
if (sw & 0x02)
newocr2 = 0xFD; //Pulsbreite 2
if (sw & 0x04)
newocr2 = 0xFB; //Pulsbreite 4
if (sw & 0x08)
newocr2 = 0xF7; //Pulsbreite 8
if (sw & 0x10)
newocr2 = 0xEF; //Pulsbreite 16
if (sw & 0x20)
newocr2 = 0x90; //Pulsbreite 110
if (sw)
{
OCR2 = 0x91;
PrintInt(sw);
SerPrint(" ");
PrintInt(newocr2);
SerPrint("\r\n");
OCR2 = newocr2;
}
// Msleep(100);
}
return 0;
}
Aber auch wenn ich nach dem SerPrint wieder die Pulsweite mittels OCR2 auf den neuen Wert, der laut Schalter nun verwendet werden soll, bekomme ich immer nur Nadelimpulst ?!? Ich hab auch schon versucht die Ausgabe an das Terminal auszukommentieren und in den Schalterabfragen direkt OCR2 zu setzen, aber immer nur Nadelimpulse.
Hast Du evtl. dazu noch eine Idee ?
Wolli
Lesezeichen