Hallo Zusammen,
ich habe zwei Fragen an die jenigen die nur SW Entwickeln und die HW von
jemand anderen bekommt.
Und zwar habe ich eine HW entwickelt an dem jemand anderes die SW für
einen Microcontroller schreibt.
Es gibt eine Anforderung, dass das System von 6,0 - 12,0 V
funktionieren muss. Ein Mikrocontroller überwacht diese Spannung.
Bereitgestellt wird die zu überwachende Spannung für den ADC über einen
Spannungsteiler.
Jetzt kommt die Frage von dem SW Entwickler, wie die ADC Werte aus den
Spannungswerten berechnet werden.
1. Frage
Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI
anwenden?
Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie
das berechnet wird?
2. Frage
Wenn ich davon ausgehe, dass ich ihm das mitteilen muss, wie gehe ich
dann mit Bauteiltoleranzen um, die ihm das Messergebnis im AD Wandler
verfälschen? Ist es eine Worst/Case Betrachtung der ADC Werte?
Ich weiß es ist Freitag, aber dennoch ein ernst gemeinte Frage.
Eigentlich sollte das alles schon im Pflichtenheft stehen. Ein Block
Diagram mit allen Stufen und Verstärkungsfaktoren wäre auch nicht so
verkehrt. Auch alle Spezifikationen sollten jetzt schon festgelegt sein.
Ich mache meist die HW und erste HW Test Software und habe dafür ein
spezelles, von mir geschriebenes Test Programm das auf allen von mir
benutzen uC läuft und leicht für ein neues Design angepasst werden kann.
Mt diesem Programm kann ich dann über die serielle Schnittstelle auf die
Gesamt-HW zugreifen. (Interne Peripherien wie Timer, Eeprom, Adcs und
etz.) und auch alles was extern an der Schaltung hängt(24-bit ADCS,
etz.). Damit verifiziere ich dann das ganze HW Design.
Später dann, wo es geht bekommt mein Kollege die ganzen Unterlagen und
Ergebnisse und kann dann die Anwendung so entwickeln wie es vorgegeben
ist. Wenn dieser Abschnitt keine großen Fehler aufgezeigt hat, dann
steht der Weg zur nächsten Phase bei. HW und SW Planung in Einklang mit
dem Pflichtenheft erfolgt meist in parallel.
Es ist auch sehr nützlich wenn der HW Designer auch im Rahmen der
zukünftigen SW mitdenken kann. Auf dese Weise kann der HW Designer auch
die SW Entwicklung streamlinen und unnötige Umständlchkeiten in der SW
vermeiden. Das kann oft auch die Pin Belegung günstig beeinflussen.
Im Layout kommt es manchmal vor, daß für besseres Layout Pin-swapping
bei einfache DIO Port pins nützlich wäre. Gute Kommunikation und
Zusammenarbeit zwischen HW und SW Kollegen ist hier sehr empfehlenswert.
Einfacher ist es wenn das Projekt klein genug ist um alles selber planen
und ausführen zu können. Dann ist man aber für alles verantwortlich -
Auch die Fehler:-)
Hi,
Softwareentwickler ist nicht gleich Softwareentwickler.
Ein Hardwarenaher Softworker kann das, ein Windowscoder nicht.
Frag einfach den Entwickler. Ansonsten sollte es ja kein Problem sein
einen Skalierungsfaktor mit anzugeben...
Die Bauteiltoleranzen kannst Du im Code nicht berücksichtigen, die gehen
ja in beide Richtungen. Bei der Auslegung der Hardware ist natürlich der
WorstCase zu betrachten.
LG Johann
Also, ganz streng genommen, sollte ein Embedded - Softwareentwickler
so etwas können. Naja. Sollte, hätte, wollte.
Was mich irritiert, ist das er nach der Berechnung der ADC-Wert aus
der Spannung fragt. Ist das wirklich so gefragt worden?
Es ergibt sich ja aus Deiner Anforderung nach einer Spannung , ab der
reagiert werden soll, dass er, wenn überhaupt, gerade das Gegenteil
fragen sollte.
Nun. Ich kenne die Umstände nicht und die Person und Eure Beziehung
nicht und was er Dir gesagt hat, was er kann. Das sollte man
berücksichtigen.
ThePower schrieb:> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI> anwenden?> Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie> das berechnet wird?
Das sollte als Anforderung immer dokumentiert sein. Bei Dir ist es jetzt
vielleicht einfach. Aber stelle Dir mal vor, es soll die Temperatur mit
einem NTC gemessen werden, wo die Kennlinie nichtlinear ist. Da braucht
der Softwerker dann natürlich die Kennlinie - als Formel, Wertetabelle,
oder was auch immer.
> 2. Frage> Wenn ich davon ausgehe, dass ich ihm das mitteilen muss, wie gehe ich> dann mit Bauteiltoleranzen um, die ihm das Messergebnis im AD Wandler> verfälschen? Ist es eine Worst/Case Betrachtung der ADC Werte?
Ja. Das muss natürlich berücksichtigt werden. Es macht keinen Sinn, 4
Nachkommastellen mitzuschleppen und auszugeben, wenn die Genauigkeit der
Messung nur eine Nachkommastelle hergibt. Auch das ist eine Info, die
der Softwerker braucht.
fchk
Zu 1.:
Wozu braucht der SW-Entwickler das ohmsche Gesetz? Daß ein ADC eine
Spannung mit einer Referenz vergleicht sollte jemand, der eine Hardware
programmiert, meines Erachtens wissen, der Rest ist Interpolation.
(Ausgenommen natürlich diejenigen, die durch Betriebsystem, virtueller
Maschine und zig Treiberschichten von der Hardware so absolut gar nichts
mehr sehen, aber um die geht es hier ja anscheinend nicht).
Ich finde aber, das so eine Beschreibung definitiv in einer
Dokumentation genau beschrieben gehört. Aus einem-möglicherweise noch
unmöglich gezeichneten-Schaltplan solche elementaren Informationen
selber rauspulen zu müssen würde ich durchaus als Frechheit bezeichnen.
Ein simpler Spannungsteiler ist zwar sehr einfach, das tägliche Brot
eines reinen Softwareentwicklers ist es dennoch nicht. Und schon gar
nicht, die richtigen zwei Widerstände in einem werweißwiegroßen
Schaltplan zu entdecken.
Außerdem besteht immer noch die Möglichkeit, das-je nach Anforderungen,
Kostendruck und Kundenwunsch-der Hardware-Entwicler doch etwas mehr
Hirnschmalz in die Aufgabe gesteckt hat und statt eines billigen
Spannungsteilers z.B. einen billigen Differenzverstärker gebaut hat.
Sowas gehört meines Erachtens definitiv dokumentiert. Besonders, wenn
andere damit weiterarbeiten sollen.
Zu 2.:
Nun, du kennst die Betriebstemperatur und die Temperaturdrift aller von
dir bestimmten Bauteile, die Meß- und Linearitätstoleranzen des
AD-Wandlers. Daraus solltest du zuverlässig berechnen können, in welchem
Toleranzbereich sich das Meßergebnis später bewegt.
Das ist das Problem, wie bei uns, wenn HW und Basis SW nicht aus einer
hand kommen. Dann muss eigentlich der SW den Schaltplan verantworten.
Nicht die spgsversorgung oder emv-schutz, aber alles, was an den uC
geht.
Mit der ersten Frage sagst Du quasi: Ist so einfach, mach selber! Und
mit der zweiten: kann ich auch nicht.
Nach welchen Vorgaben hast Du denn gebaut? Gib die doch einfach
weiter...
Vielen Dank, das war schon sehr wertiger Input!
Wir sind 4 HW + 3 SW Entwickler und sind ca. 50 km von einander
Entfernt.
Die Beziehung ist gut, nur die "Kommunikation" ist Problematisch und die
Erwartungen immer eine andere (siehe Frage 1).
Die Frage war wirklich "so" gestellt, sollte ich aber noch hinterfragen.
Die Idee mit der Test Software ist super, es war nur keine Zeit und der
Wunsch das bei uns zumachen wurde mit "dazu ist die SW Entwicklung
da"... abgewunken.
Vielen Dank!
Sowas gehört eigentlich schon in einer kleinen Beschreibung für die
Softwareentwickler dokumentiert. Da gehören dann noch so Dinge dazu wie
an welchem Pin das angeschlossen ist, ob eine externe Spannungsreferenz
angeschlossen ist oder die µC-intere verwendet werden soll etc.
Mindestens an den Schnittstellen zu anderen Teams oder Entwicklern ist
eine Schnittstellendokumentation sinnvoll.
Braucht der Softie dann auch noch eine Liste mit den Eingangssignalen
oder kann er das wenigstens aus dem SLP extrahieren?
Und wie will er die ganzen Init bzw. Config Werte für die
Peripherie-Steuer-Register zusammenkriegen?
ThePower schrieb:> Die Idee mit der Test Software ist super, es war nur keine Zeit und der> Wunsch das bei uns zumachen wurde mit "dazu ist die SW Entwicklung> da"... abgewunken.
Dann stelle Dich auf die Hinterbeine und fragst mal nett nach wie Du
eigentlich Deine entwickelte Hardware verifizieren und debuggen sollst
wenn keine Testsoftware existiert und man nicht auf die Schaltung
zugreifen kann. Wenn Du Deine Peripherien nicht steuern kannst usw.
Z.b. Wie sollst Du wissen ob und wie gut der externe MAX11200 24-bit ADC
am SPI Bus funktioniert. Ob das Rauschen und Stabilität den Vorgaben
entspricht. Solche Peripherien benötigen interne Parametrisierung um
überhaupt wie gewünscht funktionieren zu können. Und stellt sich drei
Monate bei Eurem System raus, daß der Analogteil noch nicht so gut
funktioniert wie gewünscht. Wertvolle Zeit geht so verloren. Speziell
wenn ein neues LP Design vonnöten ist.
Aks HW Designer solltet ihr das Recht und Unterstützung von der Firma
haben erste Testsoftware selber stricken zu können um die HW voll
verifizieren und debuggen zu können. Irgendwie finde ich die erzwungene
Trennung zwischen HW und SW hahnebüchen und wird letztlich die Kosten
unnötig hochtreiben. Im ebedded Bereich sollte gleichzeitige HW und Test
SW Entwicklung selbstverständlich sein.
Zumindest solltest Du gleich bei Anbeginn der HW Entwicklung bestehen,
dass Deine SW Kollegen nach Festlegung der HW schon mit dem Schreiben
der Test Software nach Deinen Wünschen anfangen.
Ganz abgesehen davon macht man das nur einmal weil sich solche SW auch
bei zukünftigen Designs wiederverwenden läßt und jeweils nur mäßige
Anpassungen benötigt. Meine Test SW läuft auf allen uC mit denen ich bis
jetzt zu tun hatte. Von STM32 bis zu Arduino.
Ich hätte da definitiv Probleme in so einer Firma zu arbeiten die die
Wichtigkeit solcher Zusammenarbeit nicht in dem Grad würdigt die sie
verdient.
Gruß,
Kopfschüttel
Der SW-Entwickler wird halt schon ein paarmal mitgedacht haben. Aber
wenn es dann ein Problem gibt, das vorher niemand bedacht hat
(Toleranzen etc.), dann hat er ganz schnell den schwarzen Peter. Dann
ist plötzlich jeder gescheit.
Daraus wird er gelernt haben und will jetzt halt klare Aussagen haben.
Wenn es so einfach wäre, dann sollte das ja kein Problem sein. Ist es
aber halt oft doch nicht, wenn man dann selbst dafür gerade stehen muss.
ThePower schrieb:> Es gibt eine Anforderung, dass das System von 6,0 - 12,0 V> funktionieren muss. Ein Mikrocontroller überwacht diese Spannung.> Bereitgestellt wird die zu überwachende Spannung für den ADC über einen> Spannungsteiler.
Ohne Schaltung wäre für mich die ganze Anforderung schon so recht
sinnfrei. Wenn der der Controller irgendwelche Schutzmassnahmen sind der
eigenen Versorgung (z.B. durch entsprechende Pufferung z.B. Goldcap,
Akku, Batterie) geschützt ist, würden ja keine sinnvollen Messungen
möglich sein. Somit wäre eine Überwachung nicht mehr möglich. Das
Verhältnis des Spannungsteilers, damit der ADC Input auf für den
Controller sinnvolle Werte reduziert wird sollte die Hardware-Fraktion
dem Softwerker schon mitteilen bzw. man sollte sich auf ein passendes
Teilerverhältnis einigen.
ThePower schrieb:> Jetzt kommt die Frage von dem SW Entwickler, wie die ADC Werte aus den> Spannungswerten berechnet werden.>> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI anwenden?
Du bist nicht teamfähig und im falschen Tätigkeitsbereich.
Bei einem solch trivialen "Problem" telefoniert man ein paar Minuten
miteinander und fertig ist, es gibt keinen Grund, sich im Forum
auszuheulen.
Ich empfinde die Beteiligten als ausserordentlich schwach. Entweder
koennen sie miteinander kommunizieren, oder sie werden ersetzt, durch
jemanden, der beides kann.
Naja, man muss aber auch sagen dass Kommunikation auch strukturiert sein
will. Das kommt von einem Vorgesetzten oder auch nur respektiertem
Teamleiter.
In einem Scrum Team (das aber geografisch gespalten sowieso nicht geht),
ist ein Scrum Master für die Optimierung der Kommunikation
verantwortlich.
Einfach die Mitarbeiter das selbst regeln lassen kann funktionieren,
muss aber nicht und sehr selten läuft es langfristig optimal. Spätestens
wenn eine Verantwortlichkeitsfrage geklärt werden muss, krachts...
> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI> anwenden?> Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie> das berechnet wird?
Vielleicht solltest du erstmal an die eigene Nase packen und das ohmsche
Gesetz richtig anwenden können!!
Da wir nicht frei von Fehlern sind, gestehe ich mir meine auch ein.
Die Frage zielte vor allem darauf ab: Wie macht ihr es? Wie macht man es
richtig? Und dabei habt ihr geholfen.
Da wir nicht frei von Fehlern sind, gestehe ich mir meine auch ein.
Die Frage zielte vor allem darauf ab: Wie macht ihr es? Wie macht man es
richtig? Und dabei habt ihr geholfen.
Teddy schrieb:> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI> anwenden?> Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie> das berechnet wird?>> Vielleicht solltest du erstmal an die eigene Nase packen und das ohmsche> Gesetz richtig anwenden können!!
Endlich hat es jemand gesehen!
Alex G. schrieb:> Naja, man muss aber auch sagen dass Kommunikation auch strukturiert sein will.> Das kommt von einem Vorgesetzten oder auch nur respektiertem> Teamleiter.
In einem solchen Umfeld will man nicht arbeiten. Opfer der dabei
entstehenden Produkte mag man auch nicht sein müssen.
> Einfach die Mitarbeiter das selbst regeln lassen kann funktionieren,> muss aber nicht und sehr selten läuft es langfristig optimal.
Quatsch.
> Spätestens wenn eine Verantwortlichkeitsfrage geklärt werden muss, krachts...
Richtig: Der Verantwortliche lehnt die Lösung ab, aus Prinzip, weil sie
nicht auf seinem Mist gewachsen ist.
Spricht man die auf Kollegenebene ab und setzt sie einfach um, merkt der
Oberarsch das entweder garnicht oder erst sehr spät und es kommt dem
Endprodukt zugute.
ThePower schrieb:> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI> anwenden?
Nein.
> Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie> das berechnet wird?
Ja, welcher A/D Wandlerwert zu welcher Spannung gehört.
Veermutlich willst du auch vorgeben, daß die Spannung bezogen auf die
interne Refeenz gemessen wird (die +/-10% schwanken kann, aber zeitlich
stabil ist) oder auf VCC.
> 2. Frage> Wenn ich davon ausgehe, dass ich ihm das mitteilen muss, wie gehe ich> dann mit Bauteiltoleranzen um, die ihm das Messergebnis im AD Wandler> verfälschen? Ist es eine Worst/Case Betrachtung der ADC Werte?
Sicher musst du VOLLSTÄNDIG beschreiben, also auch Toleranzen.
12.0V -> Wandlerwert je nach Exemplar 901 bis 999 (oder so).
ThePower schrieb:> Wir sind 4 HW + 3 SW Entwickler und sind ca. 50 km von einander> Entfernt.
Bei so kleinen Teams muss man aber auch auf die Qualität der Entwickler
achten.
Ein Informatiker darf nach der Funktion eines ADCs schon mal fragen, ein
TI'ler (Technische Informatik, nicht Texas Instruments ;-) eigentlich
nicht - letzterer hat nämlich auch Elektrotechnik gehört.
Bei einem "einfachen" Spannungsteiler könnte das aber eine ernstgemeinte
Frage sein, denn der ADC belastet den Teiler (bei AVRs mit 15kOhm z.T.
signifikant). Reale Schaltungen sehe ich daher eher mit OpAmp oder
Instrumentenverstärker.
Idealerweise bekommt der SW Entwickler den Schaltplan früh zu sehen und
kann
noch Korrekturen anmelden: "Ich hätte das Signal für die LED lieber an
Pin X statt Y, bitte."
ThePower schrieb:> wie gehe ich> dann mit Bauteiltoleranzen um, die ihm das Messergebnis im AD Wandler> verfälschen?
Entweder mit Worst Case oder man sieht gleich eine Kalibrierung vor.
Letzters macht das Produkt aber teurer in der Herstellung.
Das Problem ist sehr häufig, eine goldene Lösung gibt es nicht.
Wenn der Programmierer hardwarenah programmieren soll, dann muß er auch
Schaltpläne lesen können und sowas wie OPV-Grundschaltungen und
Spannungsteiler verstehen. Und auch die Datenblätter der ADCs, DACs und
anderer zu programmierenden ICs mit Digitalinterface.
Ideal ist es, wenn der HW-Entwickler auch die HW-nahe Programmierung
übernehmen kann. Ich mache das gerne so. Die Spannungsteilerwiderstände
stehen als Define im h-File und werden zur Compilezeit ausgerechnet.
Damit lassen sich Bereichsänderungen ohne Rechenfehler leicht vornehmen.
Z.B. ein Modul für 100V ist so problemlos auf 10kV umdimensioniert.
Der Programmierer der Bediensoftware kriegt dann nur das fertige
CAN-Interface zu sehen, wo er die Betriebsarten setzen kann,
Statusmeldungen empfängt, sowie die analogen Steuergrößen in
SI-Einheiten setzt und monitort.
Als HW-Entwickler weiß man auch am besten, welche Funktionen man zur
Inbetriebnahme und zur Fehlersuche braucht. Z.B. kann ich auch alle
Analogwerte roh setzen und auslesen oder Regelkreise auftrennen und
Fehlerabschaltungen disablen. Ich mache das immer so, daß eine
Fehlerwartezeit von 0ms = abgeschaltet bedeutet. D.h. der Fehlerstatus
kann ausgelesen werden, aber der DAC wird nicht auf 0 gesetzt.
Wenn man für jede Diagnosefunktion erstmal ein riesen Paper schreiben
müßte und den Softwerker beknien, bis er es endlich implementiert, da
würd ich ja wahnsinnig werden.
Alle Diagnosefunktionen kann ich direkt über Ethernet und CAN bis in das
jeweilige Modul tunneln.
ThePower schrieb:> 1. Frage> Kann der Entwickler nicht selbst in den Schaltplan gucken und R=UI> anwenden?
Abgesehen davon, dass die Formel falsch ist: Ja, das kann er tun und
wenn er was kann, wird er es auch beim ersten Mal tun (und vermutlich
fluchen, weil die Datenblätter schon wieder unvollständig sind). Aber es
ist für ihn Zeitverschwendung, die gesamte Entwicklung der Hardware zu
verfolgen.
Es ist Aufgabe der HW-Abteilung, alle relevanten Informationen an die
SW-Abteilung weiterzugeben. Die gesamte Software sollte allein anhand
der Beschreibung erstellbar sein.
> Oder muss ich, aus HW Sicht, ihm das in einer Anforderung mitteilen wie> das berechnet wird?
Selbstverständlich. Wenn du in der nächsten Revision einen anderen
Spannungsteiler einbaust, dann muss sich in deiner Anforderungsliste ein
Wert ändern. Du kannst nicht vom SW-Entwickler erwarten, dass er
jedesmal den gesamten Schaltplan neu verfolgt. Das macht er einmal und
danach nur, wenn es beim Test knallt.
ThePower schrieb:> 2. Frage> Wenn ich davon ausgehe, dass ich ihm das mitteilen muss, wie gehe ich> dann mit Bauteiltoleranzen um, die ihm das Messergebnis im AD Wandler> verfälschen?
Das ist deine Entscheidung. Wenn du angibst, dass ein ADC-Bereich von
674 bis 1503 einen ordnungsgemäßen Betriebszustand beschreibt, dann
musst du dich nicht wundern, wenn ein Wert von 673 grundsätzlich zu
einer Notabschaltung führt.
> Ist es eine Worst/Case Betrachtung der ADC Werte?
Das hängt von der Anwendung ab. In jedem Fall solltest du das Verhalten
angeben, wenn die Toleranzen relevant sind.
Weder Hardware- noch Softwareentwickler können Gedanken lesen. Hat man
nicht genug Informationen, um seine Arbeit erledigen zu können, muss man
sich die Informationen entweder beschaffen oder durch mehr oder weniger
fundierte Annahmen ersetzen. In beiden Fällen entstehen implizite
Bedingungen in der Software, die langfristig ein Problem werden können.
Was soll ich sagen. Schon die Hardware benoetigt die Zusammenarbeit von
Hardware und Software Spezialisten. Denn sonst passt die Software nicht
auf die Hardware und umgekehrt. Soll man einen ADC/DAC/Flash mit I2C,
mit SPI, oder Parallel Anschluss einbauen ? Wieviele Stoerungen sind zu
erwarten, wieviel sind tolerierbar.