Hallo zusammen,
ich habe einen Trigger-Eingang der als RS485 alias(EIA-485)
Spezifiziert ist.
Nun möchte ich mit dem Atmega 360p die Pegeldifferenz simulieren,
ohne lauter Wiederstände anzuwenden.
Mit 2 IO-Ports kommt irgendwie Mist bei raus.
(Triggert nicht korrekt).
Kann ich mit zwei PWM Ausgängen das Differenzsignal hinbekommen ?
Gibt es Beispiele ?
Vielen Dank für jeden Hinweise
Karsten aus Berlin
@Karsten S. (kahnsoft)
>Nun möchte ich mit dem Atmega 360p die Pegeldifferenz simulieren,>ohne lauter Wiederstände anzuwenden.
Kann man machen, man muss nur zwei IOs synchron umschalten. Also nicht
NACHEINANDER sonder echt gleichzeitg. Das geht mit einem passenden
Portzugriff.
>Kann ich mit zwei PWM Ausgängen das Differenzsignal hinbekommen ?
Braucht man nicht.
Hallo,
danke für deine Antwort.
Also es handelt sich um einen HighEnd -Controller für industrielle
Anwendungen. Getriggert wird der also über eine RS485 Vereinbarung.
(Also keine Kommunikation nur ein Bit quasi)
Hier kann man schon bei Google sehen, das eine Leitung High geht wärend
auf der anderen eine Flanke stattfindet, nur wird die nicht Null sondern
im 5V Fall z.b. 4.8V im Verhältnis zur Quittungsleitung 5V.
So bildet die "Quittung 5V" und das Signal(4.8V) eine Differenz also
auch LVDS genannt.
Ich fummel mich da jetzt ran , setze mit einem Arduino die Quittung auf
analogout PWM 255 und das Signal auf dem zweiten AnlOut auf 250 nun wird
das scheinbar gut durchgetriggert.
Ob ich durch den Pfusch nun Signale verliere kann ich nur schwer
ermitteln.
Die Frequenzen sind niedrig im 200Hz Bereich.
Was mich nun stört das ich in testserien am Oszi das alles ausprobieren
muss, wiederstände wollte ich da nicht einschustern in die Leitung.
Für Trainingshinweise bin ich sehr Dankbar, ich bin ja Informatiker und
Touchiere die Mikroelektronik mit gefährlichem Halbwissen.
Läuft also so lala..
Dank Dir
Grüße aus Berlin
Karsten
Markus schrieb:>> ... Informatiker ...>> Unwahrscheinlich :)
Wieso? Ich jedenfalls habe nur recht wenige Informatiker kennengelernt,
die tatsächlich programmieren können, aber eine ganze Menge, die viele
Tage lang darüber reden können, wie man es richtig machen sollte...
Das sind dann die Leute, die bei SAP, T-Systems usw. das Sagen haben...
Ich vermute fast, das sie auch beim BER irgendwie beteiligt waren...
Ach seit der Kindheit habe ich schon den Bastelgang Radioman von Kosmos
Und alle EE2050 Philips serien :) Und Softwareentwicklung mache ich
seit zx81 zeiten also 1981
Langsam komme ich dahinter ..
Der LVDS Simulator sieht dann so aus:
inline void Trigger(void)//emit short diff flash
{
//LVDS Signal emulator
analogWrite(OUTPORT1,250);//Signal
analogWrite(OUTPORT2,255);//Resp
delayMicroseconds(500);
analogWrite(OUTPORT1,255);//Signal
analogWrite(OUTPORT2,0);//resp
delayMicroseconds(500);
vTrigger++;
}
Habe noch einen verdammten Teiler im Controller gefunden und umgestellt,
nun komme ich auf gute Ergebnisse muss aber weiter prüfen..
Oft hilft es einfach nur von was zu qwatschen was das thema noch mal
verinnerlicht.
Grüße aus berlin
Kasrten
@Karsten S. (kahnsoft)
>Also es handelt sich um einen HighEnd -Controller für industrielle>Anwendungen. Getriggert wird der also über eine RS485 Vereinbarung.>(Also keine Kommunikation nur ein Bit quasi)
Schon klar.
>Hier kann man schon bei Google sehen, das eine Leitung High geht wärend>auf der anderen eine Flanke stattfindet,
Nö, die Signale schalten praktisch gleichzeitig. Eins geht hoch, das
andere runter.
> nur wird die nicht Null sondern>im 5V Fall z.b. 4.8V im Verhältnis zur Quittungsleitung 5V.
???
>So bildet die "Quittung 5V" und das Signal(4.8V) eine Differenz also>auch LVDS genannt.
Nö, LVDS ist zwar auch differentiell, aber ein anderer, elektrischer
Standard als RS485.
>Ich fummel mich da jetzt ran , setze mit einem Arduino die Quittung auf>analogout PWM 255 und das Signal auf dem zweiten AnlOut auf 250 nun wird>das scheinbar gut durchgetriggert.
Was zu Geier murkst du da rum? Duch braucht keine Sekunde PWM!!!
>Für Trainingshinweise bin ich sehr Dankbar, ich bin ja Informatiker und>Touchiere die Mikroelektronik mit gefährlichem Halbwissen.
Merkt man.
@ Karsten S. (kahnsoft)
>Mensch jo das ist gut, ich lasse mich immer vom Arduino verführen..>#define PIN1 PD0>#define PIN2 PD3>PORTD ^= (1<<PIN1) | (1<<PIN2);
Vielleicht nicht soviel Kaffee/Red Bull/whatever saufen und mal
versuchen, mit vernünftgen Worten einen vernünftigen Inhalt zu
kommunizieren?
Was wolltest du uns mitteilen?
Mit analogWrite wird das wahrscheinlich nix, da dies über PWM generiert
wird.
Und mir scheint, du wolltest hier die 200mv simulieren, die mindestens
erforderlich sind.
Du kannst direkt mit +-5V der Portpins rein gehen (Ein MAX485 erlaubt
bis 12,5V am Eingang)
VG Roland
Hi,
also danke an alle angeschlossenen Stationen :)
Läuft halt mit dem Register: PORTD ^= (1<<PIN4) | (1<<PIN5);
(das mit dem LVDS difference signal war hier bedenklich mit dem
portswitch läuft das auch, und wohl sicher besser)
Alles jute danke für die Hilfen.
Grüße aus Berlin.
Nur so geht es also, das ist die einzige gültige Flanke.
Sieht trivial aus aber nur mit der negation der bits
läuft das.
#include <avr/io.h>
DDRD = B00111000;//outport mask
//RS485 Trigger
void Trigger(void)
{
PORTD = (1<<PIN4) | ~(1<<PIN5);
delayMicroseconds(10);//ggf. anpassen
PORTD = ~(1<<PIN4) | (1<<PIN5);
}
Danke nochmal der Hinweise. Alles zusammen hat das Problem gelöst,
getestet am Atmel360p via Arduino.
Karsten S. schrieb:> Nur so geht es also, das ist die einzige gültige Flanke.> Sieht trivial aus aber nur mit der negation der bits läuft das.
Dir ist aber schon klar, dass Deine Erläuterungen Nonsens waren? Bsp:
Karsten S. schrieb:> Hier kann man schon bei Google sehen,
Wenn man einen konkreten Typen hätte, einfaches rs485 war's ja nicht.
> das eine Leitung High geht wärend> auf der anderen eine Flanke stattfindet,
Was unterscheidet Flanke von "high geht"
> nur wird die nicht Null sondern> im 5V Fall z.b. 4.8V im Verhältnis zur Quittungsleitung 5V
Hier führst Du "Quittungsleitung" ein
> So bildet die "Quittung 5V" und das Signal(4.8V) eine Differenz also> auch LVDS genannt.
Ohne Datenblatt deiner Aufgabe sind die Erläuterungen sinnfrei.
Dass dann Falk eine Lösung postet, 2 Bits zu invertieren, und Du
stattdessen alle 8 setzt, zeigt: ja, Informatiker
>>Autor: Achim S. (achs)>>Dass dann Falk eine Lösung postet, 2 Bits zu invertieren, und Du>>stattdessen alle 8 setzt, zeigt: ja, Informatiker
Das hat am allerbesten geholfen !
@Karsten S. (kahnsoft)
>void Trigger(void)>{> PORTD = (1<<PIN4) | ~(1<<PIN5);
Über diesen Term denken wir dann doch noch einmal nach.
Siehe Bitmanipulation und
https://www.mikrocontroller.net/articles/Bitmanipulation_-_Standard_C_-_DeMorgan_Umformung> PORTD = ~(1<<PIN4) | (1<<PIN5);
Dito.
>Danke nochmal der Hinweise. Alles zusammen hat das Problem gelöst,>getestet am Atmel360p via Arduino.
Da hattest du mehr Glück als Verstand. Schon mal überlegt, das die
anderen Bits in dem Register machen?
Ich staune (mit grossen Augen) welch massives Wissen und
Fähigkeiten Informatiker mitbringen.
Dagegen sind wir Spaghetti-Codierschweine doch arme Würstchen.
Hallo Ufo,
funktioniert leider nicht, die müssen sich als Paar gegenseitig
negieren beim zweiten signal nach 10-100 ns.
Ein Trigger besteht aus dem Wechsel der Bits daher exclude ~
Danke für deinen Hinweis!
Ist ggf. auch eine Eigenschaft der hohen Datensicherheit auf dieser
Leitung. 1Kw Co2 Laser.
Hallo UfUf :) Ufo war nicht korrekt :)
Was ich damit mache wenn es interessiert sieht man in einem Erklärvideo
dazu: https://www.youtube.com/watch?v=jfWM6e0R0mk
Viele Grüße
Karsten
Karsten S. schrieb:> Ufo war nicht korrekt :)
OK....
Dann bin ich gemeint...
Atmega360p ist auch nicht korrekt.
Denn weder Microchip, noch Google kennt einen Atmega360p
(oder habe ich was übersehen?)
Karsten S. schrieb:> funktioniert leider nicht, die müssen sich als Paar gegenseitig> negieren beim zweiten signal nach 10-100 ns.> Ein Trigger besteht aus dem Wechsel der Bits daher exclude ~
Ich habe deinen µC als halbwegs modernen ATMega angenommen, das P deutet
darauf.
Und bei diesen funktioniert der Toggle auf diese Art.
Die Bedingungen, unter dem das von dir gewünschte Verhalten erzeugt
wird, habe ich auch genannt.
Ich nehme also an, dass du nur behauptest, dass mein Code nicht
funktioniert.
Getestet hast du das nicht.
Aber, wie so oft:
Das Datenblatt zu deinem µC gibt gerne zu dem Punkt Auskunft.
Danke für den Hinweis es ist ein 328P. (2 Euro)
Ne läuft nicht durch Wiederholung des selben Musters.
Wie gesagt es wechselt sich der Inhalt alles gut,
läuft ja prima.
Danke für deine Hilfe.
Gruß
Karsten
Karsten S. schrieb:> Ne läuft nicht durch Wiederholung des selben Musters.> Wie gesagt es wechselt sich der Inhalt alles gut,> läuft ja prima.
Kannst du das übersetzen?
Der 328p kann den Toggle über das PINx Register
Halb Leerer schrieb:> Ich staune (mit grossen Augen) welch massives Wissen und> Fähigkeiten Informatiker mitbringen.>> Dagegen sind wir Spaghetti-Codierschweine doch arme Würstchen.
Ich verstehe, dass dein Kommentar negativ bewertet wird.
Muss dir aber zustimmen!
Bin allerdings als Hobbyprogrammierer, als Arduinojünger, kaum in der
Position, gestandene Informatiker kritisieren zu dürfen.
Aber in diesem Thread fallen mir einige Dinge auf.
z.B. mangelnde Sorgfalt.
(...,Ufo,360p,...)
Ich erwarte von einem Informatiker, dass er ganze und verständliche
Sätze schreiben kann.
Das er die binären Operatoren vollständig beherrscht, oder zumindest
weiß, wo man das nachlesen kann und und der Lage ist sich kundig zu
machen.
Die in Beitrag "Re: RS485 Differenz simulieren mit Atmega360p" vorgestellte
Funktion soll angeblich funktionieren.
ok...
Aber sie hat Seiteneffekte, welche mit Sicherheit nicht gewünscht sind,
und einem (mit hoher Wahrscheinlichkeit) zu späterer Zeit derbe auf die
Füße fallen werden.
Das ist das, was ich öfter mit "schlampige Arbeit" bezeichne.
Hier sage ich: "Mangelnde Sorgfalt."
Die Variante mit dem ^= ist da eindeutig vorzuziehen.
Meine Variante ist ein paar Takte schneller, braucht etwas weniger
Flash, bietet sonst keine Vorteile.
Verwundern tut mich, dass mein Toggle Verfahren vom TE nicht verstanden
wird/wurde. Und als defekt erklärt wird. Dabei ist das Verhalten doch
eindeutig im Datenblatt beschrieben.
OK, vielleicht erwarte ich zu viel...
Vielleicht ist meine Position auch nicht die, dass ich überhaupt was
erwarten "darf".
--
Alles in allem:
Dieser Thread "verstört" mich etwas.
Arduino Fanboy D. schrieb:> Aber in diesem Thread fallen mir einige Dinge auf.
Ja ... da ist so ziemlich alles auffällig.
Danke dass sich jemand noch die Mühe macht dies alles
auch in einem anderem Licht zu betrachten. Scheinbar
gibt es hier genügend Leute die sehr enge Scheuklappen
aufgesetzt haben.
Arduino Fanboy D. schrieb:> Dieser Thread "verstört" mich etwas.
So verstörend dass man schon mit hoher Sicherheit von
einem Troll-/Fake-Thread sprechen darf.
Oder man kann es einfach nicht glauben dass solche
"Informatiker" wirklich ihr Unwesen treiben und es
ist tatsächlich so.
Achim S. schrieb:> Karsten S. schrieb:>> Ist ggf. auch eine Eigenschaft der hohen Datensicherheit auf dieser>> Leitung. 1Kw Co2 Laser.>> Das macht mir dann Angst.
Ja, ich hoffe auch, das da weitere Sicherheitsmechanismen verbaut sind,
die nicht von unserem Informatiker entworfen worden.
Also hier läuft mal wieder eine Diskreditierung.
Der hat freundliche Fragen formuliert, und das sind
ganz normale Probleme auf die man stoßen wird.
Man sollte sich Ehre und Respekt erhalten, oder Sachlich bleiben
von wegen Drogensüchtiger und Psychischer ADHS Fall.
Trifft eher für die zu, die solche Hetzen veranstalten.
Kortschnoi schrieb:> Also hier läuft mal wieder eine Diskreditierung.>> Der hat freundliche Fragen formuliert, und das sind> ganz normale Probleme auf die man stoßen wird.>> Man sollte sich Ehre und Respekt erhalten, oder Sachlich bleiben> von wegen Drogensüchtiger und Psychischer ADHS Fall.> Trifft eher für die zu, die solche Hetzen veranstalten.
mit dem letzten Absatz hast Du natürlich recht. Was ich hier jedoch
bedenklich finde, ist weniger die fehlende HW-Kenntniss (die dann mit
munter sinnfreie eingeworfenen Begriffen kaschiert wird) sondern
- kein Datenblatt oder Typ, um den sonst wirren Pegel- und
Trigger-Ausführungen folgen zu können
- anscheinend kein Verständnis von boolschen Operationen als
Informatiker.
Wenn er irgendwie erwähnte: PortD ist sonst nicht belegt, dann könnte
man ja sagen: boah, abgefahrener Pfuscher. Aber so sehe ich ihn
übermorgen posten: "Kühlung wird beim Triggern ausgeschaltet, 5V mit
PWM-DAC erzeugen?"
Alles gut Kortschnoi,
die jüngere Generation ist nicht mehr so wie früher wo man froh war
überhaupt über ein Thema ohne Briefverkehr zu reden.
Und keine Sorge boolesche Algebra hatten wir auf dem zx81, da war mal
jedes Bit wichtig , von 2 euro Rechnern mit 20Mhz haben wir nicht zu
träumen gewagt. Sollte man mal zu schätzen wissen.
Dazu spielte Abba. Aber dieser LVDS kombinierte RS485 Port ist
undokumentiert. Wir haben zuerst versucht mit versch. Pegeln die
Differenz zu liefern, ausschlaggebend waren aber zwei Trigger mit
gedrehtem Inhalt und zwar im ns Bereich gleichzeitig, und in einem
bestimmten Zeit Fenster, das muss man erst austüfteln, und daher hier
der Dialog, oft ist es wichtig drüber zu reden.
Und auch für die jüngeren ist das wichtig, die müssen sich erstmal an
die Basis halten und schreien wenn was abweicht, später wird man
lockerer.
Der Atmel 328P ist zum Testen. Wird später über eine S7 getriggert.
Grüsschen aus Berlin
Karsten
(InHale)