PIC Pin kaputt?

OP #1760693
Lesenswert?

Hmm, der PD.0 von meinem fabrineuen dsPIC zappelt beim Umschalten vom 
ganzen PortD auf ca. 4 Volt mit einer Amplitude von 3.8-4.2 Volt (0,4 
Volt) herum. Alle anderen tun was sie sollen. Der PD.0 sollte eigentlich 
eine LED schalten, tut er aber nicht. Ist das eine bekannte Fehlfunktion 
(Überspannung, Ausschuss, etc...)?
Gast #1760705
Lesenswert?

Tine Schwerzel schrieb:
> Hmm, der PD.0 von meinem fabrineuen dsPIC zappelt beim Umschalten vom
> ganzen PortD auf ca. 4 Volt mit einer Amplitude von 3.8-4.2 Volt (0,4
> Volt) herum. Alle anderen tun was sie sollen.

Das nennt man galvanische Kopplung. (bei den Frequenzen spielt die 
Induktivität des Masse-Pins bereits eine Rolle). Evtl läßt sich durch 
bessere Abblockung die Amplitude noch ein klein wenig verbessern.

Tine Schwerzel schrieb:
> Der PD.0 sollte eigentlich
> eine LED schalten, tut er aber nicht. Ist das eine bekannte Fehlfunktion
> (Überspannung, Ausschuss, etc...)?

Ich tippe auf Software-Bug in Zeile 42 (Verwendung von PORTD anstelle 
LATD).

Gruß Anja
Gast #1760905
Lesenswert?

>Hier ist mal der Programmcode. Bit 1 bis 7 alternieren zwischen 0 und 5
>Volt, nur eben Bit 0 bleibt bei 4 Volt +-2V

Was soll der auch schon machen wenn du ihn nicht
auf Ausgang schaltest.

>Du meist vermutlich TRISD = 0xFF.

Du meinst vermutlich TRISD = 0x00.
OP #1760997
Lesenswert?

Ah Mist. Ich dachte das Direction register würde den ganzen Port setzen. 
Mein Fehler. Das erklärt das hochohmige Verhalten. Danke! Ich habe einen 
Teil der Sachen aus dem Buch "Programming 16-bit Microcontrollers in C: 
Learning to fly the PIC24". Da wird LATx gar nicht verwendet und unter 
TRISA=1; steht, dass das den PORTA auf Ausgang setzen würde. Naja. 
Danke!
OP #1761018
Lesenswert?

Noch eine generelle Frage: ich habe bisher hauptsächlich AVRs mit Bascom 
(sehr einfach zu bedienen :-) und Assembler prorammiert. Da gibt es ja 
eine Compilerreferenz mit in der Hilfe. In MPLAB gibt es das aber nicht, 
oder? Wo findet man denn mal eine komplette Übersicht mit Beschreibung 
(englisch) der ganzen Befehle?
Gast #1761363
Lesenswert?

Meister Eder schrieb:
> Stellt sich die Frage warum der Rest der Welt mit 1 für Input und 0 für
> Output nicht warm werden wollte... ;)
>
Genau weil das ist genau das was ich erwarte wenn ich einen Open-Drain 
Pin mit dem Tris-Register simuliere. Das Latch bleibt dabei auf Low. Mit 
Tris = 0 schalte ich dann den Port-Pin auf Low mit Tris = 1 schalte ich 
den Port-Pin auf hohe Impedanz (oder High falls ein Pull-up dran hängt).

Gruß Anja
Gast #1761388
Lesenswert?

Anja schrieb:
>> Stellt sich die Frage warum der Rest der Welt mit 1 für Input und 0 für
>> Output nicht warm werden wollte... ;)
>>
> Genau weil das ist genau das was ich erwarte wenn ich einen Open-Drain
> Pin mit dem Tris-Register simuliere. Das Latch bleibt dabei auf Low. Mit
> Tris = 0 schalte ich dann den Port-Pin auf Low mit Tris = 1 schalte ich
> den Port-Pin auf hohe Impedanz (oder High falls ein Pull-up dran hängt)

Stellt sich die Frage, ob das nicht alles viel zu kompliziert
gedacht ist ;-)

Mit "TRIS" als Abkürzung für "tristate", "0" für "AUS" und
"1" für "AN", sieht das Ganze schon viel logischer aus, gell?

Die alten N-MOS Dinger, so auch der erste PIC,
General Instruments' PIC1650 (so Ende der 70er), hatten keine
push-pull Stufen und ebensowenig einen "dritten Zustand".
Um Pins als Eingänge nutzen zu können, mußte das latch
auf "1" gesetzt sein (nur ein weak-pull aktiv).

Als man wenig später, dank C-MOS Technologie einen
neuen, dritten Zustand "erfunden" (...) hat:
Gäbe es zur Aktivierung desselben eine geschicktere Variante
als "TRISTATE = 1"?

Vielleicht gibts aber auch bald ein neues config-bit:
"TRISREVERSE: 0=classic; 1=modern" ;-)
#1761396
Lesenswert?

AkkiSan schrieb:

> Als man wenig später, dank C-MOS Technologie einen
> neuen, dritten Zustand "erfunden" (...) hat:

NMOS Technik passt zwar recht gut zu einer bidirektionalen 
Portkonfiguration wie in 8051 und den ursprünglichen PICs, 
Push/Pull-Stufen und Tristate lassen sich aber auch in NMOS 
implementieren - immerhin arbeiten Datenbusse so. Die I/O-Bausteine der 
Prozessorkonkurrenz besassen auch bereits eine Richtungskontrolle (6820, 
8255), ebenso andere Mikrocontroller der NMOS-Ära (Z8).
Persönliche Seite #1761400
Lesenswert?

Hallo Tine,


hat sich Dein Problem also erledigt?

> oder? Wo findet man denn mal eine komplette Übersicht mit Beschreibung
> (englisch) der ganzen Befehle?

Eine kleine und gute Referenz der Befehle gibt es in den Datenblaetern 
der PICs.
Die Hilfe in MPLAB ist m.E. auch nicht schlecht.
Ausserdem gibt es ein seeeeeehr gutes Forum auf der 
Wicrochip-Webseite...wenn Du Englisch schreiben kannst.

Bei den PICs ist durch die hohe Peripheriedichte und Mehrfachverwendung 
der Portpins eine richtige Initialisierung der Ports wichtig, aner auch 
das steht in den Datenblaettern und wenn Du einen Peripheriebaustein 
einmal drauf hast, gibt es nichts problematisches mehr.


Gruss

Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren