Forum: Mikrocontroller und Digitale Elektronik DMX512 mit ATtiny2313 empfangen


von Theo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit dem Empfang von DMX512 mit einem ATtiny2313.

Ich habe schon mal einen Beitrag geposted, bitte entschuldigt, dass ich 
mich nochmals an Euch wende. Aber ich komme einfach nicht weiter.

Im Anhang findet Ihr meinen Code. Den habe ich von Hendrik Hoelschers 
Projekt für den ATmega8515 versucht zu übertragen. Leider scheitere ich 
noch immer.

Konkretisierung meines Problems:
Ich habe versucht, mich Schritt für Schritt an die Ursache ranzutasten. 
D.h. ich habe in der Interruptroutine in jeder einzelnen If-Schleife 
einen Ausgang des µC geschaltet um zu überprüfen, ob das Programm 
überhaupt in diejenigen Schleifen springt.

Beim 8515 funktioniert das einwandfrei, beim ATtiny2313 jeoch springt 
das Programm lediglich in die erste if-Schleife "if (USARTstate 
&(1<<FE))".

Das bedeutet für mich ja schon mal, dass der Interrupt soweit 
funktioniert und der Controller UART zumindest "sieht".

Wo kann nun mein Fehler liegen, dass der Interrupt nicht weiter 
ausgeführt wird?

Ich wäre Euch sehr sehr dankbar, wenn konstruktive Antworten kämen.

Viele Grüße

Theo

von Theo (Gast)


Lesenswert?

Noch eine Vermutung:

kann es sein, dass das Ganze mit dem Register UCSRC zusammenhängt? Im 
Vergleich zum 8515 weist das Register vom ATtiny2313 kein URSEL auf.

Wie hat man damit umzugehen?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Theo schrieb:

> kann es sein, dass das Ganze mit dem Register UCSRC zusammenhängt? Im
> Vergleich zum 8515 weist das Register vom ATtiny2313 kein URSEL auf.
> Wie hat man damit umzugehen?

Man lässt das URSEL Bit dann weg. Also man initialisiert die UART so wie 
du es gemacht hast.

Hast du bereits kontrolliert, ob dein Attiny2313 mit 16 MHz läuft, wie 
im Programm vorausgesetzt?

von Theo (Gast)


Angehängte Dateien:

Lesenswert?

Hi Stefan,

erstmals vielen Dank für Deine Antwort.

Dein Hinweis könnte durchaus zielführend sein:
Die Fuse-Bits habe ich lt. Anhang gesetzt und zum Programmieren verwende 
ich ein STK500 mit 16 MHz Quarz.
Zum Testen hab ich den USART-Interrupt auskommentiert und ein 
Rechtecksignal an einem Ausgang mit je _delay_ms(100) für ON und OFF 
Zeit programmiert.
Die tatsächliche Zeit ist aber ca. 800ms.

Hab ich da wieder was falsch gemacht?

Viele Grüße

von kaffeetas (Gast)


Lesenswert?

Hallo Theo,

RTFDS -> mach den Haken bei CKDIV8 raus dann passts auch mit dem delay.

Grüße
 kaffeetas

von Theo (Gast)


Lesenswert?

Hallo an alle,

nun läufts!! Genau der Fehler wars.

Vielen Dank für Eure Hilfe.

Ihr habt mir geholfen, meinen Haarausfall noch ein wenig zu verzögern.

Diese Scheiß Fusebits........

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
Noch kein Account? Hier anmelden.