Forum: Mikrocontroller und Digitale Elektronik PIC I/O eingang abfragen ausgang schalten


von julia (Gast)


Lesenswert?

habe zum ersten Mal mit PIC-Controllern zu tun. Hier meine Frage: Wie
liest man einen Eingang ein? Ich möchte z.B. RA0 einlesen und RB0 
schalten. Aber es funktuniert nicht.

Hier mein code:
1
#include "pic.h"
2
3
void main()
4
{
5
TRISA = 0x01;
6
TRISB = 0x00;
7
8
while(1){
9
10
if(PORTAbits.RA0){
11
PORTBbits.RB0 = 1;
12
}
13
else {PORTBbits.RB0 = 0;}
14
}
15
}

von Martin (Gast)


Lesenswert?

Läuft der PIC +überhaupt?
Sind die config-bits richtig gesetzt?
Ist der PIC richtig programmiert?
Wie ist der Taster angeschlossen (pullup/pulldown)?
Was ist es für ein PIC? Bei PIC18F schreibt man in LATx und liest in 
PORTx

von Chris B. (dekatz)


Lesenswert?

Unabhängig davon welcher PIC genau: nach einem RESET sind alle auch mit 
Analogfunktionen belegten Ports auf Analogbetrieb gestellt.
Das betrifft immer PORTA und teilweise PORTB.

von julia (Gast)


Lesenswert?

ich habe mit multisim simuliert aber noch nicht programmiert. es ist 
pic16f84. Fehlt im code noch was?

von Sebastian H. (technik_freak)


Lesenswert?

Hallo,

Es wäre interessant zu wissen, welcher Compiler verwendet wird und 
welche Konfiguration vorgenommen wurde.

Der Grund dafür ist, dass es sein kann, dass der Compiler (HTC,CCS oder 
XC8) einen Default-Wert übergibt, wodurch der PIC nicht laufen kann.

Weiterhin wäre interessant, wie dein Aufbau/deine Simulation aussieht. 
Ist beispielsweise eine externe Taktquelle nicht angeschlossen, aber der 
Compiler glaubt, dass dieser vorhanden ist, so wird der PIC nicht 
laufen(Fehler von Mir war einmal, dass der Quarz angeschlossen war, aber 
GND der Quarz-Kondensatoren fehlte, lief dann auch nicht). Auch fehlende 
Versorgung kann dann als Ursache ausgeschlossen werden.

von Chris B. (dekatz)


Lesenswert?

<multisim> kenne ich nicht.
Aber auf dem MPLAB Simulator und auf dem SourceBoost-C Simulator tut das 
Programm was es soll(te).
Beim prähistorischen F84 gibt es ohnehin kaum was zu konfigurieren, 
keine Analogfunktionen, wenn ich mich recht erinnere nicht mal einen 
internen Oscillator....
Also würde ich mir mal <multisim> und dessen Einstellungen vornehmen

von julia (Gast)


Angehängte Dateien:

Lesenswert?

Chris B. schrieb:
> SourceBoost-C

wenn ich RA0 in ausgabemodus schalte, dann tut das programm was es soll. 
Das ist aber theoretisch nicht richtig oder?

code:
#include "pic.h"

void main()
{
TRISA = 0x00;
TRISB = 0x00;

while(1){

if(PORTAbits.RA0){
PORTBbits.RB0 = 1;
}
else {PORTBbits.RB0 = 0;}
}
}

von Sebastian H. (technik_freak)


Lesenswert?

Hallo,

Bei Dir fehlt die Taktquelle. Diese kann entweder ein RC-Glied, ein 
Quart/Resonator oder ein Taktgenerator sein. Die angeschlossene 
Taktquelle muss als Konfigurationswort im Programm eingetragen werden.

Des weiteren muss der Pin zur Abfrage (wegen dem Taster/Schalter) als 
Eingang definiert werden und einen PullUP oder PullDOWN besitzen.

von ich (Gast)


Lesenswert?

Sebastian H. schrieb:
> und einen PullUP oder PullDOWN besitzen.

ein Pull-Up würde dir hier wenig bringen. Ein Pull-Down Widerstand zieht 
bei offenen Taster den Pin auf GND und beim Tastendruck liegt direkt Vdd 
an.

von Sebastian H. (technik_freak)


Lesenswert?

Hallo,

es stimmt, dass hier ein PullDown benötigt wird (der PullUp ist beim 
vertauschen der Zustände nötig => Drücken = 0), trotzdem ist am PIC kein 
Quarz,RC-Glied oder ein Taktgenerator angeschlossen, wodurch der PIC 
nicht läuft.

von bingoo (Gast)


Lesenswert?

Warum nimmst Du denn den Steinzeit-PIC 16F84??? Mit C kommst Du da nicht 
zum Zuge. Ein PIC16F18.. oder noch besser ein PIC18F.... ist da viel 
besser geeignet.

von W.S. (Gast)


Lesenswert?

bingoo schrieb:
> Warum nimmst Du denn den Steinzeit-PIC 16F84???

Weil der offenbar im Multisimulator grad drin ist. Es gibt hier wohl 
noch keine reale Hardware: "ich habe mit multisim simuliert aber noch 
nicht programmiert"

OK?

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.