Hallo Zusammen,
hat von euch schon mal einer mit dem AT90PWM3b eine Dali Ansteuerung
Programmiert? Wenn ja wäre super wenn ihr mir weiter helfen könntet, es
tut sich nämlich gar nichts :-).
Ich habe den folgenden Code verwendet:
#include "io.h"
#include <avr/interrupt.h>
#include "signal.h"
#include <util/delay.h>
void EUSART_Transmit_data( unsigned int data )
{
// Wartet, bis Transmit lehr ist
while ( !( UCSRA & (1<<UDRE)))
{
};
//Die datei wird in den Buffer geladen und dann gesendet
EUDR = data>>8;
UDR = data;
}
int main (void)
{
//UCSRA =
;
UBRRL = 50; //Setzt Baudrate des Transmitters auf 1200;
UCSRC = 0b00001000; //Setzt die Stop-Bits auf 2;
MUBRR = 833; //Setzt Baudrate des reveivers auf 1200 und Frequenz auf
1MHz
EUCSRA = 0b10110111; //Hier wird die Anzahl der zu senden Bits
eingestellt (16)
EUCSRB = 0b00011010; //EUSART-Mode wird eingeschaltet
UCSRB = 0b00011000; //EUSART Transmitter wird eingeschaltet
unsigned int data = 0b1010100101111001;
//unsigned int data = 0b1001111010010101;
EUSART_Transmit_data(data);
while(1)
{
}
}
Bist Du Dir wirklich ganz sicher daß der UART von Deinem µC die Bits für DALI korrekt ausgibt? Hast Du Dir die Ausgabe mit dem Oszi angeschaut und mit den DALI-Specs verglichen? Als ich damals DALI angesteuert habe, hab ich Bitbanging verwendet weil mein Atmega328 das nicht per UART konnte. Ich hab jetzt aber nicht mehr genau im Kopf wo das Problem war, aber vielleicht ist Dein AT90PWM3b ja in der Hinsicht besser.
Ich habe mit dem Oszi geschaut, aber es kommt keine high(o. low) Flanke raus. Der Code ist von einem AT90PWM2b sollte ja aber auf dem AT90PWM3b genauso funktionieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.