Hi,
Ich möchte mit einem PIC die L-H-Übergänge zählen.
Mache hier schon Stunden rum.
Das Zählergebnis soll einfach in einem Register stehen und anschließend
nach PortB ausgegeben werden.
Danke
Micha wrote:
> Hi,> Ich möchte mit einem PIC die L-H-Übergänge zählen.> Mache hier schon Stunden rum.
Und was ise das Resultat dieser Stunden? Konkrete Fragen?
> Das Zählergebnis soll einfach in einem Register stehen und anschließend> nach PortB ausgegeben werden.
Was heisst anschliessend? Nach jedem L-H Übergang?
Wie schnell erfolgen die Übergänge?
TK wrote:
> ABER der PORTA liegt> meines Wissens immer noch an Adr 0x05 und nicht an 0x25.
Stimmt.
Ich würde halt immer die Definitions-Datei von Microchip includen, statt
solch Zeugs selber schreiben/kopieren.
OK - Versuch der Zweite:
Selbst, wenn die Interrupts deaktiviert sind, würde ich trotzdem an
ORG 0x04 einen RETFIE einbauen.
Das bedeutet aber an ORG 0x00 ein GOTO init (z.B. ab ORG 0x10).
Weiterhin ist es "gute Praxis" vor dem eigentlichen Hauptablauf
erst einmal alle benutzten GPR zu löschen (man kann sich nach eigener
Erfahrung nicht immer darauf verlassen, dass nach einem Reset alle
Register eine 0x00 aufweisen).
Bis dann
TK
Danke habs gefunden.
Reicht für include #include <P16f627A.INC>?
in der INC-Datei steht TRISA 0x85 / TRISB 0x86
Wenn ich das in meinem Progr. schreibe geht nichts! Wenn ich aber 05 und
0x06 nehm gehts wunderbar! Wieso"
Mal blöd gefragt:
Was geht nicht? Die Simulation oder der richtige Hardwaretest?
Wenn TRISA/TRISB nicht an den angegebenen Adressen 0x85/0x86 liegen,
dann schaltest Du mit den Befehlen den PORTA/PORTB.
Das bedeutet aber dann, daß nach einem Reset die PORTs als INPUT
geschaltet sind. Damnach darf nichts ausgegeben werden!
Wie sieht eigentlich die HW aus?
ext. 4MHz Quarz? MCLR-Pin über 10k an VCC? Oszi zum messen am PORTB-Pin?
Gruß
TK
HW geht nicht, zeigt nichts an. Mit TRISA equ 5 und TRISB equ 6 gehts
merkwürdiger weise. Eingang PORTA.0 , 4,096Mhz, soll anschließend auf
nem Display angezeigt werden (Bin2Dec-kodiert)....
>HW geht nicht, zeigt nichts an.
Das suggeriert mir, daß das nicht der gesamte SourceCode ist, da ja
nichts zum Anzeigen da ist. Momentan wird nur ein inkrementierter
Binärwert auf PORTB ausgegeben. Und das sollte eigentlich funktionieren
(allerdings mit TRISA/B an 0x85/0x86).
Vielleicht noch eine Kleinigkeit:
Wie schnell kann denn eine Flankenänderung an PORTA.0 ankommen? Hier
würde sich auch eine kleine Entprellroutine positiv auswirken. Momentan
läuft die Abfrage in einer sehr schnellen LOOP (einige us). Und so
schnell können Daten überhaupt nicht an eine Anzeige transferiert werden
- geschweige denn, daß man dann noch was sehen würde.
Aber wie gesagt - der gezeigte Codeausschnitt müßte wie beschrieben
funktionieren.
Gruß
TK
Die Routine funktioniert so weit. Entprellt wird HW-mäßig. TRISA ist ja
im Standart nach einem RESET immer Eingang (laut HB)
Bin gerade dabei das ergenis auf einem LCD zu zeigen. Komisch ist nur,
dass die Zähl-Routine klappt, das display nach dem Initialisieren auch
was anzeigt, beides zusammen aber nicht.