@pebisoft
Dann ist aber die Batterie deiner selbstgebauten Fernbedienung schnell
leer ;)
Wenn A)
"...die irdiode geht bei mir vom pinb0 (kann beliebig sein) über
einen 100ohm widerstand an +5volt..."
und B)
#define IR_LED_ON IR_LED_PORT |= (1<<IR_LED_PIN)
#define IR_LED_OFF IR_LED_PORT &= ~(1<<IR_LED_PIN)
dann ist die LED nach einem "IR_LED_OFF;" immer unter Strom.
Das würde ich nicht aushalten - IMMER unter strom ;)
du sollst keine kritik üben, sondern einen konkreten vorschlag machen,
damit es nicht so ist. monatenlang ward ihr zu dusselig einen sender zu
programmieren und jetzt kommen die parasieten.
mfg pebisoft
Na? Wie schreibt man Parasit?
Wenn du deine LED auf einer Seite an 5V hängst und im Ruhezustand den
AVR-Pin auf 0V legst, dann "leuchtet" sie ständig. Wenn du nicht von
selbst drauf kommst, wie man das ändert, dann tut es mir leid.
@pebisoft
ÄÄÄÄÄ "...konkreten vorschlag machen..."?
Wenn Du <bold>*DAS*</bold> nicht zustandebringst ...
Zudem was das nicht als Kritik gedacht, sondern als Hinweis auf eine
Sache die offensichtlich übersehen worden ist!
@pebisoft
"du sollst keine kritik üben,"
Uih, ganz böses Foul !
Dafür gibts nur eine einzige Lösung: stell Deinen Sch... nicht in ein
Forum.
Ein Forum ist ja gerade dazu da, um Kritik zu üben.
Und gerade dieses Forum gefällt mir gut, weil es hier Sitte ist, einen
mit der Nase auf den Fehler zu stoßen, ohne ihm die Lösung vorzukauen.
Wenn Du nur als Gott angebetet werden willst, dann bist Du hier
falsch.
"monatenlang ward ihr zu dusselig einen sender zu programmieren"
Uih, 2. ganz böses Foul !
Wer hat Dir denn hier versprochen, für Dich einen Sender zu
programmieren ???
Niemand !!!
Ich wüßte also nicht, was daran "dusselig" sein soll, eine Aufgabe
nicht zu lösen, die man garnicht hat.
Peter
P.S.:
Es kann auch nichts schaden, zu überlegen, wozu wohl der Dateianhang
gedacht ist.
Hallo,
trifft sich ja, daß hier ein Quellcode in C da ist. Brauch ich grad für
meine Propeller Uhr um die DCF Zeit über IR zu übertragen :)
Was ist denn die Lösung für das IR-Problem hier ?
Die IR-LED auf der einen Seite an Masse hängen und mit dem AVR die
Leitung auf High (sende) oder Low (aus) legen ?
Nur damit ich nicht ganz dumm sterbe und es hier wieder zum
Ursprungsthema zurückgeht.
Peter
Naja die IR Diode würde ich jetzt nicht anders herum ansteuern, weil
Microcontroller im allgemeinen als Open Collector ausgeführt werden.
Soll heißen wenn Strom fließt sollter der Pin auf "null" sein.
Die einfachste Lösung ist wohl in die Funktion "void send_code" als
letzte Zeile noch "IR_LED_OFF;" ein zu fügen. Eventuell das gleich
noch einmal Am Anfang bei einer Initialisierung.
Gruß
Aurel
Leute !!
damit ihr nich dumm sterbt,
#define IR_LED_ON IR_LED_PORT |= (1<<IR_LED_PIN)
#define IR_LED_OFF IR_LED_PORT &= ~(1<<IR_LED_PIN)
IR_LED_ON setzt Ausgang auf High Pegel,er hat aber die LED nach Vcc
geschaltet, erdo IR_LED_ON schaltet die LED aus und IR_LED_OFF schaltet
die LED an, weil ja dann der Ausgang auf Low geht und somit Strom
fließt.
Na, was wäre jetzt die cleverste Lösung ?
Bevor auch das noch gefragt wird, einfach die #defines vertrauschen und
hoffen das der Rest des Codes wirklich bipolare Manchastercodierung
unterstützt.
Also:
#define IR_LED_OFF IR_LED_PORT |= (1<<IR_LED_PIN)
#define IR_LED_ON IR_LED_PORT &= ~(1<<IR_LED_PIN)
Gruß hagen
Hallo Hagen,
danke für deine Sorge um mein Ableben aber an der Stelle habe ich schon
vorgesorgt :-)
Mit der ON/OFF Geschichte hast du völlig recht aber leider ist die
Batterie immer noch leer.
1.
Nach einem Reset sind die Ausgänge low d.h. die Diode brennt bis zum
ersten Sendeeinsatz. --> Abhilfe: Bei der Initialisierung ein
IR_LED_OFF; nach deiner Änderung.
2.
Fast am Ende steht "PORTB=0; //IR-LED abschalten". Das muss natürlich
auch gegen IR_LED_OFF; ersetzt werden oder PORTB=1; heißen.
Gruß
Aurel
@pebisoft
Dein Code ist ja ganz nett, nur was mache ich bei einer anderen
Quarzfrequenz. Dann geht das suchen (und rechnen) los, welche Schleifen
geändert werden müssen, um die Zeiten zu bekommen. Du solltest das
nochmal überarbeiten, am besten so, daß nur am Anfang ein paar #defines
geändert werden müssen.
Ansonsten komm mal runter von deinem hohen Ross, Peter hat eigentlich
schon alles dazu gesagt.
MfG
Jens
Ungetestet und ohne Garantie
// Timing Werte aus ASM-Listing ermittelt. Referenzfrequenz ist 8 MHz
(8.0e6 Hz)
// F_CPU im Makefile definiert.
#define DELAY_89ms (uint32_t)(88997.875*(F_CPU/8.0e6)+0.499)
#define DELAY_HALFBIT (uint16_t)(1184.019*(F_CPU/8.0e6)+0.499)
#define DELAY_36kHz (uint8_t)(21.4*(F_CPU/8.0e6)+0.499)
oder als Anhang der komplett überarbeitete und kommentierte (noch
ungetestete) Code.
P.S:
Ich bin immernoch am überlegen wie ich's mit PWM mache :)
Kann nicht mal einer eine Maschine erfinden die diesem Bill G.
automatisch eine knallt sobald wieder so ein Sch... passiert?
rc5_send.szipfile in .zip umbenennen :)
kann mir einer erklären was es mit dem togglebit bei rc5_send_code auf
sich hat? Und wie sende ich jetzt einen speziellen Code, bzw. gebe ich
das an? ist das dezimal oder hex?
Ich will zB Taste 7 von Code 030 Sanyo senden, geht das dann so: ?
rc5_send_code(??siehe oben, 30, 7);
Hoffe es kann mir noch wer helfen.
mfg chris