Forum: Mikrocontroller und Digitale Elektronik Atmega8151 instabil, DMX Transiever Henne


von Thomas B. (baua)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe kürzlich den DMX Transceiver von Henne gebaut.
http://www.hoelscher-hi.de/hendrik/light/dmxled.htm
Habe dann die Board.hex draufgezogen um das Board zu überprüfen, da war 
alles okay. Danach hab ich die LED Firmware überspielt.
Soweit so gut. Da ich daheim kein DMX Pult habe, wollte ich den 
Transceiver mittels 2 LEDs und den internen Programmen testen. Jedoch 
leuchten die LED's permanent, also habe ich die Outputs des ATMEGA8151 
an den Oszi gehängt.
Setze ich den Transceiver unter Strom ist das PWM Signal zunächst sehr 
breit, fast auf Gleichstromniveau, jedoch wird es mit der Zeit immer 
schmaler(siehe Anhang), bis es einbricht und nur noch 
Gleichstromcharakter hat. Danach blinkt kurz die grüne StatusLED.
Sobald ich den Transceiver vom Strom trenne und wieder anschließe geht 
das Spiel wieder von vorne los.
Kann das ein Problem mit dem Taktgeber sein? Habe einen 8MHz 
Quarzoszilator anstatt des Resonators eingebaut, allerdings dürfte das 
ja kein Problem mit der Firmware haben oder etwa doch?


Gruß Thomas

von Falk B. (falk)


Lesenswert?

@ Thomas Bauer (baua)

>Setze ich den Transceiver unter Strom ist das PWM Signal zunächst sehr
>breit, fast auf Gleichstromniveau, jedoch wird es mit der Zeit immer
>schmaler(siehe Anhang), bis es einbricht und nur noch
>Gleichstromcharakter hat. Danach blinkt kurz die grüne StatusLED.
>Sobald ich den Transceiver vom Strom trenne und wieder anschließe geht
>das Spiel wieder von vorne los.

Klingt nach einem Einschalttest in der Software.

>Kann das ein Problem mit dem Taktgeber sein? Habe einen 8MHz
>Quarzoszilator anstatt des Resonators eingebaut, allerdings dürfte das
>ja kein Problem mit der Firmware haben oder etwa doch?

Das ist kein Problem.

von Karl H. (kbuchegg)


Lesenswert?

Hast du die beiden Eingangsleitungen mal kurzgeschlossen (miteinander 
verbunden)?


Das ist ein Differenzverstärker am Eingang. Wenn sich die Eingänge da 
irgendwas einfangen, dann wertet die Schaltung alles mögliche aus. Und 
einfangen können sich die genug.

von Thomas B. (baua)


Angehängte Dateien:

Lesenswert?

>Klingt nach einem Einschalttest in der Software.

Wenn ich den Transceiver anschalte und alle DIP Schalter auf OFF habe 
hat ist der Pin einfach nur auf VCC. Das PWM Signal kommt erst wenn man 
den 10ten DIP umlegt-> Standalonebetrieb. Wobei eig. erst dann ein 
Programm laufen dürfte, wenn ich einen einen der ersten 3 DIPs umlege.

Henne schreibt dazu:
Stand Alone Mode

Durch Einschalten von DIP10 wird der Stand Alone Mode aktiviert. 
Folgende Einstellungen sind über die übrigen DIPs möglich:

DIP1-3   Programm
DIP5-8   Geschwindigkeit
DIP9   Strobe

>Hast du die beiden Eingangsleitungen mal kurzgeschlossen (miteinander
>verbunden)?
>
>
>Das ist ein Differenzverstärker am Eingang. Wenn sich die Eingänge da
>irgendwas einfangen, dann wertet die Schaltung alles mögliche aus. Und
>einfangen können sich die genug.

Hab ich grade probiert, aber hat keine Änderung hervorgebracht.

Ich hab die Software mal mit angehängt, falls da jemand etwas mehr 
rauslesen kann von euch. Meine letzten und einzigen Programmierungen 
waren vor ein paar Jahren mit ABEL. Da kann ich nur die grobe Funktion 
aus der Datei erkennen.

von Karl H. (kbuchegg)


Lesenswert?

Thomas Bauer schrieb:


> Hab ich grade probiert, aber hat keine Änderung hervorgebracht.

Vergiss das. Ich hab überlesen, dass du im Testmodus 'manuell' bist.


> Das PWM Signal kommt erst wenn man den 10ten DIP umlegt->
> Standalonebetrieb. Wobei eig. erst dann ein Programm laufen dürfte,
> wenn ich einen einen der ersten 3 DIPs umlege.

Nope.
Du hast 3 Bits an diesem Eingang und 8 Demoprogramme. Auch das Programm 
0 ist ein Programm.

Nach allen was ich im Code gesehen habe könnte das Verhalten korrekt 
sein.
Hier sind die 8 Muster
1
.org PAT0          ;on
2
.dw 0b0111111111
3
.dw 0b1111111111
4
5
.org PAT1          ;Lauflicht
6
.dw 0b0000000001
7
.dw 0b0000000010
8
.dw 0b0000000100
9
.dw 0b0000001000
10
.dw 0b0000010000
11
.dw 0b0000100000
12
.dw 0b0001000000
13
.dw 0b0010000000
14
.dw 0b1100000000
15
16
.org PAT2          ;ping pong
17
.dw 0b0000010000
18
.dw 0b0000100000
19
.dw 0b0000001000
20
.dw 0b0001000000
21
.dw 0b0000000100
22
.dw 0b0010000000
23
.dw 0b0000000010
24
.dw 0b0100000000 
25
.dw 0b1000000001
26
27
.org PAT3          ;ping pong
28
.dw 0b0000011000
29
.dw 0b0000100100
30
.dw 0b0001000010
31
.dw 0b1010000001
32
33
.org PAT4          ;pfeil
34
.dw 0b0000011000
35
.dw 0b0000111100
36
.dw 0b0001111110
37
.dw 0b0011111111
38
.dw 0b0011100111
39
.dw 0b0011000011
40
.dw 0b1010000001
41
42
.org PAT5          ;RGB
43
.dw 0b0001001001
44
.dw 0b0011011011
45
.dw 0b0010010010
46
.dw 0b0110110110
47
.dw 0b0100100100
48
.dw 0b1101101101
49
50
.org PAT6          ;RGB spread
51
.dw 0b0100010001
52
.dw 0b0101110011
53
.dw 0b0001100010
54
.dw 0b0011101110
55
.dw 0b0010001100
56
.dw 0b1110011101
57
58
.org PAT7
59
.dw 0b0001001001      ;RGB single change
60
.dw 0b0001001011
61
.dw 0b0001011011
62
.dw 0b0011011011
63
.dw 0b0011011010
64
.dw 0b0011010010
65
.dw 0b0010010010
66
.dw 0b0010010110
67
.dw 0b0010110110
68
.dw 0b0110110110
69
.dw 0b0110110100
70
.dw 0b0110100100
71
.dw 0b0100100100
72
.dw 0b0100100101
73
.dw 0b0100101101
74
.dw 0b0101101101
75
.dw 0b0101101001
76
.dw 0b1101001001

Das Muster '0' hat einen Bitunterschied im 7. Bit. Ich würde das als 
'Blink diese LED' ansehen. Auch hab ich in der Software was gelesen, 
dass es da wohbl einen Fader von einem Zustand in den nächsten gibt. Ich 
bin allerdings noch nicht durchgestiegen, wie das funktioniert.

Was ist mit den restlichen Mustern? Sehen die so aus, wie man aus den 
Mustertabellen erwarten könnte?

von Thomas B. (baua)


Lesenswert?

Das is das Seltsame.
Das Programm läuft an sobald ich DIP 10 umlege,
es macht dabei keinen unterschied ob dabei einer der anderen DIPs 
geschalten ist oder währenddessen geschalten wird. -> Keines der Muster 
wird abgerufen.
Ich habe momentan an den ersten 2 Outputs eine LED geklemmt, zur 
optischen überprüfung und mit Oszi alle 8 AD(Output1-8) Pins abgerufen, 
die senden alle das gleiche Signal (Synchron)
Dass das Mäuseklavier korrekt verlötet ist, dessen bin ich mir sicher, 
hab ich auch mit der Board.hex (Testfile) überprüft.
Im Code steht etwas, von reset pattern. Hat das vllt. was zu tun mit den 
Programmpattern?
1
ldi    ZH, high(PAT0*2)          ;get next step
2
    lds    tempH, StepCnt
3
    mov    ZL, tempH
4
    lsl    ZL
5
    inc    tempH
6
    sts    StepCnt, tempH
7
    lpm    tempH, Z+
8
    sts    NewStepL, tempH
9
    lpm    tempH, Z
10
    sts    NewStepH, tempH
11
    
12
    sbrs  tempH, 1              ;reset pattern?  
13
    rjmp  chs_step_ret
14
    
15
    in    ZL, PinC
16
    com    ZL
17
    andi  ZL, 0b00000111            ;isolate pattern
18
    ldi    tempH, 10
19
    mul    ZL, tempH  
20
    sts    StepCnt, r0              ;save pattern
21
22
    rjmp  chs_step_ret

von Karl H. (kbuchegg)


Lesenswert?

Thomas Bauer schrieb:

> Im Code steht etwas, von reset pattern. Hat das vllt. was zu tun mit den
> Programmpattern?

das 'reset' ist hier als Verb gebraucht.
Also 'setzte den Musterzähler' auf Anfang zurück.
Logisch: irgendwann ist jedes Muster zu Ende und beginnt wieder von 
vorne. Es wird also auf den Anfang 'reset'-et.

von Thomas B. (baua)


Lesenswert?

Ich werde mir denk ich mal die Tage ein DMX Interface ausleihen oder 
vllt. auch eins selbermachen wenn ich was gutes finde. Letzenendes ist 
ja nur der DMX Modus des Transceivers von Relevanz, da ich die Programme 
ja nur zum testen ablaufen lassen wollte.

Dennoch dickes Dankeschön so far für die Hilfe!

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.