Autor |
Mikrocontroller Spannung niedrig Suche nach: spannung (45524) |
|
|
|
|
BID = 778592
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
|
Hallo,
nachdem ich mit meinem Mikrocontroller von PIC (8-bit, pic 16f877) Probleme habe, erhoffe ich mir hier Hilfe.
Wenn ich einen digitalen Output schalte, ist der entsprechende Ausgnag auf High, aber nicht auf 5, sondern auf 2V.
Woran könnte das liegen?
Danke!
Daniel |
|
BID = 778593
Mr.Ed Moderator
Beiträge: 36187 Wohnort: Recklinghausen
|
|
Mist gemessen, zu stark belastet...
Wie sieht denn die Schaltung aus?
_________________
-=MR.ED=-
Anfragen bitte ins Forum, nicht per PM, Mail ICQ o.ä. So haben alle was davon und alle können helfen. Entsprechende Anfragen werden ignoriert.
Für Schäden und Folgeschäden an Geräten und/oder Personen übernehme ich keine Haftung.
Die Sicherheits- sowie die VDE Vorschriften sind zu beachten, im Zweifelsfalle grundsätzlich einen Fachmann fragen bzw. die Arbeiten von einer Fachfirma ausführen lassen. |
|
BID = 778594
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Der Ausgang ist unbelastet.
Die Schaltung ist nichts besonderes:
1. Spannungsversorgung mit Spannungsregler 7805 und Kondensatoren
2. Oszillatorschaltung mit Quarz
3. Programmierung mit Pickit
|
BID = 778614
Bartholomew Inventar
Beiträge: 4681
|
Willkommen im Forum
Zitat :
| (8-bit, pic 16f877) |
Der 877 hat 14-bit-Befehlswörter.
Und warum 877 und nicht gleich den Nachfolger 887?
Die Ausgänge sind alle digital :p
Du misst nicht zufälligerweise an einem Pin mit Open-Collector-Ausgang statt TTL-fähigem Ausgang?
Nicht benötigte Features (Komparator, i2c etc.) sind alle ausgeschaltet?
Im Zweifelsfall den Quelltext posten.
Gruß, Bartho
|
BID = 778619
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Sorry, ich hab den pic16f876 mit 16bit.
Quelltext:
list p=16f876
#include <p16f876.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_ON & _CPD_OFF
#define LED_3 PORTB, 4
w_temp EQU 0x70
status_temp EQU 0x71
_BANK_0 macro
BCF STATUS,RP0
BCF STATUS,RP1
endm
_BANK_1 macro
BSF STATUS,RP0
BCF STATUS,RP1
endm
_BANK_2 macro
BCF STATUS,RP0
BSF STATUS,RP1
endm
_BANK_3 macro
BSF STATUS,RP0
BSF STATUS,RP1
endm
----Hier kommt dann der Reset und Interrupt------
start
_BANK_0
clrf PORTA
clrf PORTB
clrf PORTC
_BANK_1
movlw b'00000000'
movwf TRISB
main
bsf LED_3
END
Der Text ist nicht lang, aber müsste doch die LED anschalten?
|
BID = 778825
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Habe jetzt auch festgestellt, dass an anderen Ausgängen Spannungsschwankungen von 0 bis 5V auftreten.
|
BID = 778834
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Möglicherweise ist das auch ein saublöder Einwand, da ich von PICs keine Ahnung habe und mit obigem Assembler-Code nichts anfangen kann, aber das Risiko gehe ich ein:
Bei den AVRs gibt es zu jedem Port ein 'data direction register', das bestimmt ob der der betreffende PIN Eingang und Ausgang ist. Wenn man vergisst dieses zu setzen bevor man den PORT beschreibt wird nur der Pullup aktiviert. Das reicht zwar aus um über einen Darlington-Transistor eine LED zu schalten, aber für mehr nicht
Das ist ein 'beliebter' Anfängerfehler bei den AVRs, vielleicht gibt es bei den PICs so was ähnliches.
mfg Fritz
_________________
|
BID = 778847
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Danke, aber ich habe im TRISB-Register alle Bits auf 0 gesetzt.
[ Diese Nachricht wurde geändert von: Bastler1010 am 1 Aug 2011 12:36 ]
|
BID = 778858
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Dein Programm hat kein Ende.
Dann saust der Prozessor durch den folgenden Müll, meist ist das Hex FF, und fängt am, Anfang wieder mit clrf an.
Dadurch bekommst du kein High, sondern eine Wechselspannung am Ausgang.
Schliesse das Programm mit einer Schleife ab:
forever: GOTO forever
|
BID = 778877
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Ja ich habe am Ende goto main eingefügt, aber keine Änderung messbar.
|
BID = 778879
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Möglicherweise liegt das Problem auch gar nicht am Controller sondern schon an der Spannungsversorgung. Ist die ordentlich gemacht? Hat der Spannungsregler auch 100n KERKOs hinten und vorne bekommen?
mfg Fritz
_________________
|
BID = 778880
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Optimierst du deine Programme nach dem Motto "Mehr Bugs als Bytes"?
Als Nächstes sehe ich, daß du keine ORG Anweisung hast, aber da rettet dich vielleicht eine Default Einstellung.
Eine Warnung sollte das aber schon geben.
Der folgende Fehler ist aber schwerwiegender:
Du schaltest auf Bank1, um das DDR zu initialisieren und anschliessend nicht wieder zurück auf den Port.
Als Ergebnis ist der LED_3 Anschluß als Eingang konfiguriert.
[ Diese Nachricht wurde geändert von: perl am 1 Aug 2011 15:14 ]
|
BID = 778883
Bastler1010 Gerade angekommen
Beiträge: 12 Wohnort: Leipzig
|
Danke!!
Die Sache funktioniert jetzt.
Lösung: An MCLR V+ mit 10K legen (als Pullup)
|
BID = 778892
Bartholomew Inventar
Beiträge: 4681
|
Zitat :
Bastler1010 hat am 31 Jul 2011 07:59 geschrieben :
|
Sorry, ich hab den pic16f876 mit 16bit. |
Nein. Bloß, weil da "16f" im Namen steht, heißt das nicht, dass da auch 16 bit drin sind.
Übersicht von Sprut:
http://www.sprut.de/electronic/pic/typen.htm
Gruß, Bartho
|