Hi,
ich habe derzeit ein merkwürdiges Problem mit dem 16F877A.
Und zwar habe ich ein Programm für die Ansteuerung von vier 8x8
Dot-Matrix LED Displays geschrieben. Das Programm funktioniert soweit
tadellos, allerdings gibt es Probleme mit den beiden Zeilen, die von RB6
und RB7 angesteuert werden. Ich habe es auch mit einem einfachen
Programm getestet, bei dem einfach nur zwei LEDs leuchten sollen, nunja,
sie leuchteten nicht. Das Problem fällt mir erst jetzt auf, da ich die
Pins bei anderen Programmen immer nur als Eingänge genutzt habe und sie
da problemlos ihren Dienst verrichteten.
Ich hatte den Verdacht dass es möglicherweise mit dem Debug Modus
zusammenhängen könnte, aber das habe ich in der Konfiguration schon
explizit deaktiviert, das sollte das Problem also nicht hervorrufen.
Einen anderen PIC habe ich auch schon getestet, das brachte keine
Änderung.
Was habe ich also übersehen? Ich habe das Datenblatt schon ewig lang
gewälzt und nichts brauchbares finden können, das Internet bot auch
keinen Rat. Als Brenner verwende ich den Brenner8p von Sprut.
Selbstverständlich ist im USBurner die hex Datei als Quelle des
Konfigurationswortes markiert.
Hat jemand einen Rat für mich parat, der des Rätsels Lösung sein könnte?
Unten ist die Initialisierung zu sehen, alle Ports werden als ausgänge
konfiguriert.
Hallo,
Es könnte doch an der Konfigurationseinstellung liegen...
Ich arbeite geraden an einem Programm mit dem PIC 16F876A. Dort verwende
ich diese Configuration:
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC &
_WRT_OFF & _LVP_OFF & _CPD_OFF
und alle Ausgänge an PORTB (auch RB6, RB7) arbeiten wie sie sollen.
Evtl. sollte auch bei Dir der Powerup-Timer mit " _PWRTE_ON" (72ms
Verzögerung des PIC-Start nach Einschalten der Versogrungsspannung)
aktiviert sein. Schaden kann dies nicht, nur nützen. Es könnte ja sein,
dass der PIC schneller hpchfährt als Vdd ansteigt!
Probier es einfach mal
mfG Ottmar
Hallo
Direkt dazu fällt mir nichts ein, allerdings hatte ich ein ähnliches
Problem. Wie ich es genau gelösst habe weiss ich leider nichtmehr,
allerdings bin ich mir ziemlich sicher das es etwas mit dem ICSP zutun
hatte. Data & CLK sind ja auf RB6 & RB7...
Auch wenn dir meine Antwort möglicherweise keine grosse hilfe ist, hier
mal meine Initialisierung für meinen PIC16F887... auf meinem Board
funktioniert's perfekt:
Mit dieser Initialisation, habe ich für dich eben folgendes Code
geschrieben um ihn zu testen: (PORTA,0 = Schalter auf meinem Board!)
1
Loop
2
3
btfsc PORTA,0 ; Teste PORTA Schalter 0 (Low Aktiv)
4
goto Nicht_gedrückt
5
goto Gedrückt
6
7
Nicht_gedrückt
8
bcf PORTB,6 ; Reset RB6 & RB7
9
bcf PORTB,7
10
goto Loop ; Zurück zum Anfang
11
12
Gedrückt
13
bsf PORTB,6 ; Set RB6 & RB7
14
bsf PORTB,7
15
goto Loop ; Zurück zum Anfang
Hab den Code dann direkt mal Kompiliert und mit einem Multimeter die
Spannung an RB6 & RB7 gemessen. Bei mir schalten die Ausgänge problemlos
von 0V auf 4,75V! Vielleicht kannst du versuchen, deinen Code auf meinem
zu basieren... wo das dein Fehler genau liegt, weiss ich nicht. Evtl.
reicht es auch schon, wenn du nur meine CONFIG Einstellungen übernimmst.
Hoffe ich konnte dir helfen.
Danke für die Tipps, leider haben die mir nicht weitergeholfen :(
Ich verwende übrigens die aktuellste Version von MPLAB. Ich wollte mal
Testweise das Programm mit MPLAB-X Assemblieren, allerdings muss man da
ja den Assembler manuell installieren und ich finde mich auf der
Microchip Seite etwas schlecht zurecht. Prinzipiell könnte ich ja auch
MPASM verwenden, der im alten MPLAB enthalten ist, oder?