mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX-Empfang mit Atmega169 funktioniert immer noch nicht!


Autor: Markus W. (mark-169)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich möchte einen MH mit DMX steuern, die Hardware funktioniert soweit, 
nur beim Programm klemmt es noch trotz intensiver Fehlersuche und 
umwälzen von Tutorials und Foren...

zunächst zu meiner Hardware:
  AVR: Butterfly(Atmega169) -->OK!
  Programmschnittstelle: ISP-Programmieradapter -->OK!
  DMX: kommerzieller DMX-Controller + RS485-Wandler -->OK!

Nun zur Software:
  Code (im Anhang) stammt von "Henne's Sites"
  ... verwende seine Demo (PORTD an wenn DMX >127).
  [[http://www.hoelscher-hi.de/hendrik/light/ressources.htm]]


Ich bin den Quellcode durchgegangen und habe alle Variablen auf Atm169 
angepasst und PortD getestet.

Leider funktioniert immer noch nichts.

Unsicher bin ich mir noch bei der Oszillatorfrequenz und dem einstellen 
der Startadresse.

Nun meine Frage:
Wie kann ich die OSz.freq.-Einstellungen überprüfen (AVRStudio und 
AVRProg)???

Außerdem stimmt das mit der Startadresse (Die Dip-Schalter verwende ich 
nicht; welche Adresse ist auch erstmal egal)?????

Vllt könnt ihr mir Tipps geben!

Danke gruß mark-169

PS: Das Prog besteht aus drei Dateien, habe sie im Anhang untereinander 
geschrieben.
demo_dmx_in.c --> Demo-Prog, schalten des Ports durch DMX-Signal
lib_dmx_in.c --> eigentliches Prog zum Auswerten des DMX
lib_dmx_in.h --> naja erklärt sich von selbst...variablen und co.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Mark Walter (mark-169)

>Unsicher bin ich mir noch bei der Oszillatorfrequenz und dem einstellen
>der Startadresse.

>UBRRH  = 0;
>UBRRL  = ((F_OSC/4000)-1);            >//250kbaud, 8N2

Was soll das? Stimmt zwar, ist aber schlecht lesbar und nciht 
standardkonform. Warum nimmst du nicht die normalen Makros?

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

>Nun meine Frage:
>Wie kann ich die OSz.freq.-Einstellungen überprüfen (AVRStudio und
>AVRProg)???

http://www.mikrocontroller.net/articles/AVR_Checkl...

>Außerdem stimmt das mit der Startadresse (Die Dip-Schalter verwende ich
>nicht; welche Adresse ist auch erstmal egal)?????

>uint16_t Temp= (255-PINC); //invert DIP state

Das geht schief. Eher so
uint16_t Temp= ~PINC & 0xFF; //invert DIP state

>// *************** DMX Reception ISR ****************
>ISR (USART0_RX_vect)
>{
>uint8_t USARTstate= UCSRA;  //get state
>uint8_t DmxByte= UDR;        //get data
>uint8_t DmxState= gDmxState;  //just get once from SRAM!!!

Hier wäre ich auch vorsichitg. Ich bin mir nicht sicher, ob der Compiler 
ggf. die reigenfolge umstellen darf. Dann geht aber der Zugriff von 
UCSRA vor UDR schief!

MfG
Falk

Autor: Markus W. (mark-169)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk! Danke für die schnelle Antwort!

So ich hab des jetzt mal geändert:
//DDRD |= (1<<2);
//PORTD &= ~(1<<2);  //enable reception
[/]
UCSRC |= (1<<UMSEL)|(3<<UCSZ0)|(1<<USBS); //ursel
UCSRB |= (1<<RXEN)|(1<<RXCIE);

UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF; //250kbaud, 8N2

Was hat das
DDRD |= (1<<2);
PORTD &= ~(1<<2);  //enable reception
 eigentlich da zu suchen? Hat doch nix mit Initialisierung/Empfang zu 
tun?

Das mit der Startadresse bekomm ich immer noch net hin, da ich
void get_dips(void)
 wegen
//#define USE_DIP
 und
#ifdef USE_DIP
 nicht verwende? Die Adresse muss ich aber trotzdem definieren!

DmxAddress = 0;
???

Mfg Markus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.