PIC 16F84A

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 3 2024  12:21:38      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC 16F84A
Suche nach: pic (2049)

    







BID = 92794

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37
 

  


Hi Leute,
ich bin neu auf diesem Forum und habe schon jetzt eine Frage.
In meinem Praktikum muss ich ein Signal Dekodieren.
Meine Infos die ich erhalten habe das die Signale über Zeit kodiert sind.

Also meine Frage lautet:
"Wie mach ich das, das ich meinen Timer abfrage, wie lang eine Bit-Reihenfolge ist?"

Ich habe bisher nur den Timer0 programmiert und der läuft recht gut.

Ich denkemal das Ihr mehr Ahnung habt davon als ich also DANKE ICH EUCH für die Hilfe.

Mit freundlichen Grüßen
U37

BID = 92799

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Sorry !
Die Sperrung wegen Doppelpostings war ein Fehler von mir.



[ Diese Nachricht wurde geändert von: perl am 19 Aug 2004 11:07 ]

BID = 92991

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

@Perl
das macht nichts kann immer wieder passieren solche verwechlungen

@ALL
hi also wie ich gehört habe kann der RA4 taktgeber nur bis max 0,5 ms zählen gibt es ne möglichkeit dies zu erweitern?


BID = 93719

baggerfan

Gerade angekommen


Beiträge: 12
Wohnort: bei Ulm
Zur Homepage von baggerfan

hi u37,
nun der RA4 des PIC's stellt keinenfalls einen Zähler dar, sondern ist lediglich die Möglichkeit den Timer0 von extern zu takten. Beim 16F84 hast Du nur den Timer0 zur Verfügung, dieser ist 8 Bit breit, also kann er 256 Zählungen machen bis ein Überlauf stattfindet. Welche Zeitspanne das ist, ist abhängig von der Taktung der CPU, bzw. des externen Takteingangs.
Aber prinzipiell mal gefragt. Welche Zeitspanne mußt Du mit der Messung denn abdecken? Bist Du auf den 16F84 fixiert oder wäre auch ein anderer PIC denkbar. z.B. 16F818 (verwende ich als Standardtype). Der hat 3 Timer, einen davon als 16-Bit-Timer. Eine Beschreibung des 16F84 hast Du? http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf

[ Diese Nachricht wurde geändert von: baggerfan am 22 Aug 2004  8:50 ]

BID = 94324

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

sorry für die späte antwort
ich muss diese zeiten rausfischen können
einmal 2ms, dann 1ms und 0,5ms.

ich habe versucht nen vorverteiler zu benutzen aber ich glaube den kann man nich richtig testen in mblab, deswegen setz ich mal den quelltext hier rein

; Takt
BSF OPTION_REG&0x7f, T0SE ; hier wird für RA4 die Low Flake gewählt
MOVF T0SE, F ; hier wird es unter der Speicherzelle gesichert

; Vorverteiler Aktivieren
BSF OPTION_REG&0x7f, T0CS ; T0SC wird auf 1 gesetzt damit der Vorverteiler mit benutzt werden kann
BSF OPTION_REG&0x7f, PSA ; hier mit wird der Vorverteiler auf 1 gesetzt und aktiviert
BCF OPTION_REG&0x7f, PS2 ; damit man den vorverteiler auf 16/1 einstellt
BSF OPTION_REG&0x7f, PS1 ; hier wird PS1 auf 1 gesetzt
BSF OPTION_REG&0x7f, PS0 ; hier wird PS0 auf 1 gesetzt

ich hoffe ihr könnt mir sagen ob das soweit richtig ist
den unter sprut stand nich ob ich ps2-0 zusammen oder alleine machen soll

danke im vorraus

BID = 94332

baggerfan

Gerade angekommen


Beiträge: 12
Wohnort: bei Ulm
Zur Homepage von baggerfan

hi u37,
um Dir eine fachlich richtige Antwort geben zu können solltest Du mir mal sagen mit Hintergrund was Du eigentlich machen willst. Du hast was erzählt mit Zeit messen für eine Bitreihe, aber kommt die von extern, denn du verwendest Deinen TMR0 als extern getriggerten Timer. Also mir fehlt da noch was um den Sinn und vor allem das was rauskommen soll zu verstehen.

als erstes setzt Du ein Bit im option_reg für die Triggerung des TMR0 auf negative Flanke. (hat überhaupt nichts mit RA4 zu tun!!!!)
als zweites versuchst Du ein einzelnes Bit mit einem movf-befehl in sich selbst zu kopieren. a)wozu machst du das? und b) wird wohl so nicht funktionieren. Wenn Du mit dem BSF-Befehl in einem Register ein Bit setzt dann brauchst Du es nicht abzuspeichern oder sowas.
Als nächstes setzt Du das Bit mit dem Du die Triggerquelle des TMR0 auswählst (hier setzt Du auf externen Trigger ,Pin RA4), hat nichts mit dem Vorteiler zu tun!
Um den Vorteiler deinem TMR0 zuzuweisen wird das Bit PSA mit einer 0 belegt.
Die Auswahl des Vorteilers auf 16 ist so korrekt.
Du mußt nicht jedes Bit einzeln setzen, sondern Du kannst auch den kompletten Wert für das Register übertragen.

Welchen Quarz verwendest Du? Also erzähl mir mal was genaueres dann kann ich Dir besser helfen.

bis die tage

BID = 94474

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

hi
ich verwende einen 4mhz quarz

also bei mir muss ich ein funksignal entschlüssel und es analog machen damit dann ein kasten mit einem analogen messwerk dieses signal zeigen kann.

und dazu muss ich eine bitreihenfolge, des signals, rausfischen, damit ich dem prog sagen kann, wann der anfangen darf. er soll immer bei 2 ms anfangen und das was ich da geschrieben habe ist mit nem vorverteiler, wollte nur wissen ob das so richtig ist.

ich hoffe das bringt dich weiter
den ich will eigentlich nur wissen wie ich z.b. mit if abfragen kann ob nun der timer 2ms gezählt hat bei dem signal (bit).

mfg
u37

BID = 94644

baggerfan

Gerade angekommen


Beiträge: 12
Wohnort: bei Ulm
Zur Homepage von baggerfan

hi,
also wenn du wissen willst, ob dein Zähler auf 2ms ist, dann gibt es zwei Möglchkeiten:
A) du polls das TMR0-Register ständig an und vergleichst dessen Inhalt mit einer vorgegebenen Zahl ( in diesem Fall die 2ms --> als Hexzahl bei Vorteiler=16 gibt das 7D)
Wenn Deine Software dem µC genügend Zeit spendiert daß er sich kontinuierlich diesem pollen widmen kann, und wenn ein kleiner Zeitverzug von ein paar µs keine Rolle spielt, ist das eine durchaus brauchbare und einfache Methode.

b) Du lädst den Timer beim Starten der Zeitmessung mit dem "Restwert" bis er überlaufen würde. (FF - 7D = 82), und gibst den TMR0-Interrupt frei. Wenn die 2ms abgelaufen sind, läuft TMR0 über und löst einen Interrupt aus. Deine Interrupt-Service-Routine kann nun sehr schnell auf dieses Ereignis reagieren. Diese Möglichkeit ist schon etwas anspruchsvoller, da Du die ganze Interrupt-Geschichte programmieren mußt. Ist aber auch die genauere Lösung, und dein µC kann sich anderen Aufgaben widmen, als 2ms "herum zu stehen".

Ich hoffe ich konnt Dir das sagen was Dir noch gefehlt hat. Wenn nicht, dann melde Dich einfach nochmal.

mfg

andy

BID = 94776

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

ja das bringt mich weiter
ich werde die zweite version versuchen zu programmieren
da ich nich will das der microcontroller 2ms nur zeit misst
er soll schließlich nich nur das machen

danke :)
^_^

wenn ich weitere fragen habe poste ich die hier rein
danke nochmals

[ Diese Nachricht wurde geändert von: U37 am 25 Aug 2004  9:24 ]

BID = 101620

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

hi
da ich das mit den interrupt nich hinbekomme versuche ich nun die erste version

dazu hab ich nur eine frage
movwf OPTION_REG&0x7f
movlw D'131'
kann ich so den wert reinsetzten?
da ich durch ein programm von fernando heitor die werte bekommen hab:
Prescaller Ratio: 16
TMR0 Offset: 131
bei dem Oscillator 4MHz

denn da kommt der genau auf die 2ms und da dachte ich das ich den Vorteiler brauche.

und noch ne frage, normaler weisse kann der timer 0 nur bis 255 zählen und das ist bisschen zu kurz, kann ich das nich mit dem vorteiler, den ich da reingeschrieben hab, verwenden?

also ich freu mich schon auf eure antworten und wenn ich wieder zu ungenau geschrieben habe sagt es mir bitte!!
ich werde dann so schnell wie es mir möglich ist alles verbessern!!!

mit freundlichen grüßen
U37

[ Diese Nachricht wurde geändert von: U37 am 14 Sep 2004  9:44 ]

BID = 104673

baggerfan

Gerade angekommen


Beiträge: 12
Wohnort: bei Ulm
Zur Homepage von baggerfan

hi u37,
zu frage1: zuerst muß natürlich der zu übergebende wert in das w-register geschrieben werden, um danach ins file-register geschrieben zu werden -->> also 1. movlw d'131', 2. movwf OPTION... (ps. was stellt der wert 131 dar?)
zu frage2 und 3 (sehe da keinen unterschied): natürlich brauchst du den vorteiler für den TMR0. wie du bereits angiebst stellt du ihn auf 16 ein, lädst dein TMR0-register mit d'131' vor und bekommst nun nach 2000 us den überlauf. soweit müßte das funzen.

also noch weiter viel spaß

BID = 107021

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

die 131 ist das TMR0 Offset
damit bekomm ich 2ms hin die ich brauche um es leichter zu haben die eine signatur zu erkennen
den wie oben geschrieben muss er bei 2ms starten und dann muss ich nur machen das er schaut

BID = 121709

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

Hi alle zusammen,
habe da mal wieder eine Frage und die wäre:
Wie kann ich an einem PIN den wechsel zwischen den einzelnen Bits herausfinden??
Danke im Vorraus!!

Gruß
U37

BID = 122218

Goetz

Schreibmaschine

Beiträge: 1928
Wohnort: Dresden
Zur Homepage von Goetz

Hi, selbst habe ich keine Ahnung von PIC un Assembler und so, habe aber hier eine Anwendung, in der auch Signale zwischen 1,2 und 2 ms unterschieden werden müssen. Vielleicht kannst Du aus diesem Programm von Markus Beyer ja Teile verwenden .... http://home.arcor.de/goetzbirkner/e.....m#16- Kanal Erweiterung zur Fernsteuerung

im zip-Archiv ist auch der Programmcode zu finden ....

BID = 123825

U37

Gerade angekommen


Beiträge: 13
Wohnort: Delmenhorst
Zur Homepage von U37

danke das werde ich bestimmt nutzen können


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 180689901   Heute : 5799    Gestern : 12674    Online : 454        29.3.2024    12:21
17 Besucher in den letzten 60 Sekunden        alle 3.53 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0440680980682