Hallo, ich möchte die Länge der Zeit messen, die eine Flanke an einem Eingang meines PICs verweilt. Kann mir da jemand einen Tipp geben? Ich programmiere in C (MPLAB) und komme mit meinen Experimenten nicht weiter. Danke, Basti
Bastian Brink schrieb: > Kann mir da jemand einen Tipp geben? Zeig mal, was Du schon geschrieben hast und beschreibe was daran nicht funktioniert
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
Bastian Brink schrieb: > ich möchte die Länge der Zeit messen, die eine Flanke an einem Eingang > meines PICs verweilt. Flanke = Veränderung. Verweilen = keine Veränderung. Öhm... Was also wolltest du wirklich ausdrücken?
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
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?
Bastian Brink schrieb: > Hierzu ist mein Ansatz die Länge des Startbits zu messen um beide µC zu > synchronisieren. Und wie weißt Du, daß das Starbit zuende ist? Nimm besser eine Code mit Bitsynchronisation, wie er bei Fernbedienungen angewendet wird. Peter
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.
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.
> p.s. Ihr habt's vielleicht gemerkt, aber ich bin totaler Anfänger. Dann wärs vielleicht vernünftig, erst mal im Web nach einer UART für deinen PIC zu suchen. Irgendwer wird doch sowas schon mal geschrieben haben.
Es gibt einen EUSART. Genau das richtige für einen Anfänger. Ich wälz dann mal das Datenblatt. Wenn jemand einen guten Link hat... Trotzdem Danke erstmal
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.