Zeitmessung der Flanke am Eingang mit C

#2429652
Lesenswert?
• ▲
▼
Bastian Brink schrieb:
> ich möchte die Länge der Zeit messen, die eine Flanke an einem Eingang
> meines PICs verweilt.

Eine Flanke hat idealer Weise die Dauer 0.
Praktisch wird sie kürzer als ein CPU-Takt sein, also mit dem MC nicht 
meßbar.

Man muß also erstmal technisch richtig beschreiben, was man messen will.
Und dann sollten die benötigten Meßparamter (Bereich, Auflösung, 
Genauigkeit) angegeben sein.


Peter
OP #2429710
Lesenswert?
• ▲
▼
Hi!

Danke erstmal.

Mein Ziel ist es, eine serielle Datenübertragung auf zu bauen.

Ich möchte einfach ein paar Bits von einem µC zu einem Anderen mit nur 
einer Leitung übertragen.

Hierzu ist mein Ansatz die Länge des Startbits zu messen um beide µC zu 
synchronisieren.

Ich vermute aber, dass es nicht ganz sinnig ist wie ich bisher 
vorgegangen bin, aber hier ein Teil des Sender-Programms:
1
  //Ausgabe des Arrays
2
  //Startbit
3
  OUT1=1;
4
  Delay10KTCYx(cyclus);
5
  OUT1=0;
6
  Delay10KTCYx(cyclus);
7
  for (j=1; j<=7; j++)
8
  {
9
    if (ein[j]==1)
10
          {
11
                OUT1=1;
12
                pari=pari+1;
13
                Delay10KTCYx(cyclus);
14
          }
15
    else
16
    {
17
      OUT1=0;
18
      Delay10KTCYx(cyclus);
19
    }
20
  }
21
  //Parity    
22
  pari=pari%2;
23
  OUT1=pari;
24
  Delay10KTCYx(cyclus);
25
  //Stoppbit
26
  OUT1=1;
27
  Delay10KTCYx(cyclus);
28
  OUT1=0;

Jetzt gerade lese ich mich in das TIMER0 Module ein. Ist es sinnvoll in 
die Richtung zu gehen um die Bits zu empfangen?

Vielen Dank,

Basti
Moderator (Firma: Titel) Persönliche Seite #2429724
Lesenswert?
• ▲
▼
Bastian Brink schrieb:
> ich möchte die Länge der Zeit messen, die eine Flanke an einem Eingang
> meines PICs verweilt.

Bastian Brink schrieb:
> Mein Ziel ist es, eine serielle Datenübertragung auf zu bauen.
> Ich möchte einfach ein paar Bits von einem µC zu einem Anderen mit nur
> einer Leitung übertragen.
Immer diese Salamitaktik... Zum Ko/4§~...

Warum schreibst du nicht gleich, was du willst und DANN wie du dir das 
vorstellen könntest...
So bleiben immer noch Fragen:
Willst du auf der 1 Leitung in BEIDE Richtungen übertragen oder nur von 
einem uC ZUM Anderen? Warum nimmst du nicht eine "übliche" serielle 
Schnittstelle? Und vor allem: warum brauchst du 2 uCs?

Bastian Brink schrieb:
> Hierzu ist mein Ansatz die Länge des Startbits zu messen um beide µC zu
> synchronisieren.
Und weiter?
OP #2429867
Lesenswert?
• ▲
▼
Hey!

Ich fang nochmal von vorne an.

Ich möchte einen binären Code
- 7 Bit
- eine Leitung
- Einweg
übertragen.

Die Programmiersprache ist C.

Mein Ansatz ist:

Sender: Startbit - Pause (Startbitlänge) - 7 Bit - Paritybit - Stoppbit

Empfänger: Messung der Länge des Startbits - Pause - 7 Bits speichern - 
Paritybitvergleich - Stoppbit abwarten - ok

Die Übertragung läuft über einen gewöhnliche I/O der µC (muss aber 
nicht)

Kann man das grundsätzlich so machen oder gibt es da vielleicht einen 
besseren Ansatz.

Vielen Dank

p.s. Ihr habt's vielleicht gemerkt, aber ich bin totaler Anfänger.
#2429898
Lesenswert?
• ▲
▼
Du erzeugst dir doch hier senderseitig einen Puls

  //Ausgabe des Arrays
  //Startbit
  OUT1=1;
  Delay10KTCYx(cyclus);
  OUT1=0;
  Delay10KTCYx(cyclus);

wo liegt das Problem?

Der Empfänger wartet bis die Leitung von 0 auf 1 wechselt.
Danach startet er eine Uhr
und wenn die Leitung wieder von 1 auf 0 wechselt, wird die Uhr gestoppt.

Damit weißt du, wie lange das Startbit in Einheiten des Empfängers 
gedauert hat.

Inwieweit dir da jetzt die PIC Hardware unter die Arme greifen kann, 
kann ich nicht sagen. Dazu versteh och zuwenig von PICs. Aber Timer 
klingt ja erst mal nicht so schlecht.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.