mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Parsic - Programmierung


Autor: Hans Mauderer (ehrnsperger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und guten Tag,

ich hab in letzter Zeit ziemlich viel mit der graphischen 
Programmierumgebung "Parsic" gearbeitet.

Allerdings stehe ich nun vor einen Problem welches ich weder mit der 
Hilfe des Handbuches von Parsic (Ist leider nicht besonders Umfangreich) 
noch mit Google lösen kann.

Bei Parsic kann man ja analoge Eingänge wunderbar Programmieren (8 oder 
16 Bit Auflösung). Allerdings wie bringe ich die 255 Stufen (Bei 8.Bit) 
zu einem gescheiten weiterverarbeitbaren Signal?
Ich könnte natürlich mit Schmitt-Triggern arbeiten, allerdings denke und 
hoffe ich dass es einfacher und vor allem Speicherschonender geht.

Ich möchte nämlich aus meinem 0 - 5 V Signal, welches vom Hall-Generator 
kommt, im PIC so verarbeiten dass ich sie mit Hilfe eines ULN2xxx auf 
Sieben-Segment-Anzeigen oder einem LCD-Display (Bei LCD natürlich ohne 
den ULN) anzeigen lassen kann.
Also aus Analoger Spannung mach mA Anzeige.
Aud der Spannung mA zu machen ist ja gar kein Problem aber überhaupt 
soweit zu kommen schon.

Ich hab schon stundenlang herumexperimentiert - leider ohne Erfolg.

Hat jemand von euch schon etwas derartiges programmiert - Evtl auch mit 
Assembler (Mit Parsic kann man einmalig eine Assembler Datei als 
Unterprogramm aufrufen)

Vielleicht ist die Lösung so einfach dass ich sie einfach übersehe.
Was ich hoffe aber nicht glaube.


Vielen Dank für die hoffentlich zahlreichen Antworten.


MFG

Autor: vlad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grafische Programmierung ist was für Weicheier und Warmduscher ;-P

Aber deine Beschreibung ist auch ncith sehr aufschlussreich.

Wie Programmiert man analoge Eingänge?
oder heißt das dein PIC hat einen Analog-Digitalwandler, dessen Wert du 
benutzt?
In diesem Fall müsste es doch irgen ein Element in deiner Bibliothek 
geben, die das Auslesen dieser Schnittstelle realisiert und ein Signal 
zur Verfügung stellt, was ja digital sein sollte entweder 8bit oder 
16bit.

oder meinst du dui hast jetzt diesen wert und weißt nicht, was er 
bedeutet?

Der AD-Wandler hat ja einen Arbeitsbereich. Der liegt normalerweise 
zwischen GND und einer Referenzspannung (die ist hardware und 
Konfigurationsabhängig, keine Ahnung wie das bei Pics aussieht).
Dh <=0V am eingang entsprechen 0 und  >=Referenzspannung entsprechen 255 
(bei 8bit) oder 1024 (bei 10bit) oder 65535 (bei 16bit)

Der echte wert ergibt sich also aus  x_V = x_adc * V_ref/(2^adc-bits)
Zu beachten ist natürlich, dass du entweder in float (lieber vermeiden) 
oder in Fixpoint rechnest, damit du nicht ein haufen genauigkeit durch 
die integerdivision verlierst.

Autor: Hans Mauderer (ehrnsperger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso für Weicheier - Bevor ich mich Stunden über Stunden in den 
Assembler einarbeite der eh total be.. ist nehm ich lieber ein Programm 
ohne nennenswerte Einarbeitungszeit (Außer man macht so Sachen wie ich)

Also ich erklärs nochmal kurz,

Ich hab meine Analogen 0 - 5V
Diese werden von meinem PIC internen ADU in 255 Schritten (8Bit) 
umgesetzt.

Jetzt frage ich mich wie ich diese, ohne zu großen Schaltungsaufwand, so 
verschalten kann dass ich einen (natürlich programmierten) 
7-Segment-Decoder ansteuern kann. Sprich 4-Bit-Zähler oder was 
ähnliches..

Noch unklar - ist glaube ich nicht so einfach zu verstehen, muss man 
wahrscheinlich selbst einmal versucht haben zu programmieren.

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ADC-Wert * 5 / 255

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>...muss man wahrscheinlich selbst einmal versucht haben zu programmieren.

Das solltest du auch mal versuchen.

MfG Spess

Autor: Hans Mauderer (ehrnsperger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eieiei, wie man die Stufen ausrechnet ist mir klar und versucht hab ichs 
schon zu genüge - Steht ja auch im Text.

Autor: vlad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8bit bei 5 volt, heißt, die genauigkeit ist 0,02V -> 2 nachkommastellen 
reichen.
max 5V -> eine Vorkommastelle reicht

--> 3 7-seganzeigen

sint16 dispVal = ((adcWert*100)*5)/255;  echter wert in 10mVschritten

wert % 10      -> linkeste 7seg anzeige
(wert/10)%10   -> mittlere 7seg anzeige
((wert/10)/10) -> rechte  7Seganzeige
und nicht vergessen den dezimalpunkt der ersten anzeige anzuschalten.

Wie du sieht wäre dass 4 Zeilen c-dode + der umkodierer für die 
7-segment anzeige

Bau dass mal in einem Grafischen modell ähnlich fix und übersichtlich.

Autor: vlad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die reihenfolge der anzeigen ist falsch, richtig ist natürlich umgedreht

wert % 10      -> rechte  7seg anzeige
(wert/10)%10   -> mittlere 7seg anzeige
((wert/10)/10) -> linke 7Seganzeige

Autor: vlad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ne anmerkung
hier muss mit 32bit gerechnet werden, und am besten noch mal ein halbes 
bit drauf addiert werden, damit echt gerundet und nicht abgerundet wird.
und ein uint statt sint wär sinnvoller
uint16 dispVal = ((((uint32)adcWert*100)+50)*5)/255; //  echter wert in 
10mV - Schritten

Für die dekodierung von einer 7-seg anzeige kann man ja ne lookup-table 
verwenden, die für die indices 0-9 (oder 0-F) das Bitmuster liefert, 
dass an den Port gelegt werden muss

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.