Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit rn control PORTA
florian1991
30.12.2008, 11:48
Hallo zusammen
hab ein kleines Problem mit dem Porta. meines RN-Controls. Bei diesem Programm zum Beispiel:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
config Porta.0 = Input
config Portc.0 = Input
do
If Pina.0 = 1 Then
Pinc.0 = 0
End If
loop
leuchtet die LED dauernd, sowohl wenn ich Spannung an PA0 anlege als auch wenn gar nichts dranhängt. Weiss jemand weiter? Mikrocontroller austauschen?
Gruss flo
Hallo,
da du die LED wohl an PORTC.0 angeschlossen hast, musst du diesen auch als Output konfigurieren.
Setzen musst du den Ausgang dann mit
PORTC.0=0
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
config Porta.0 = Input
config Portc.0 = Output
do
If Pina.0 = 1 Then
PORTC.0 = 0
Else
PORTC.0=1
End If
loop
End
Gruß
Rolf
florian1991
30.12.2008, 20:13
guten abend rolf
ich danke dir für deine schnelle antwort. hab das oben verstanden. hat im endeffekt auch funktioniert, dieses LED problem war eigentlich eine vereinfachung folgenden problems:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Pina.0 = Input
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinc.6 = Output
Config Pinc.7 = Output
Config Pind.4 = Output
Config Pind.5 = Output
Do
If Pina.0 = 1 Then
Pinb.0 = 1
Pinb.1 = 0
Pinc.6 = 1
Pinc.7 = 0
Pind.4 = 1
Pind.5 = 1
Else
Pinb.0 = 1
Pinb.1 = 0
Pinc.6 = 1
Pinc.7 = 0
Pind.4 = 0
Pind.5 = 0
End If
Loop
ist ja im grunde genommen dasselbe. Motoren reagieren aber bei einem anlegen einer spannung überhaupt nicht...
gruss flo
Mega32 kann ein paar mA , keine Amper für Motoren.
Gento
Hallo flo,
du hast hier aber wieder
Pinb.0=1 anstelle von
Portb.0=1 geschrieben.
Hast du die Motoren evtl. direkt an den Pins angeschlossen? Die ziehen doch bestimmt mehr Strom, als der Pin abkann (30 mA). Bei LEDs ist das noch ok.
Gruß
Rolf
florian1991
01.01.2009, 22:30
naanaaa, da hängt schon noch ein µC dazwischen. das problem hat sich nun aber ausgeweitet, und zwar hab ich zur fehlererkennung anstatt motoren print-befehle eingefügt. ausschauen tut das dann so:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Pina.1 = Input
Do
If Pina.1 = 0 Then
Print "spannung liegt an"
Waitms 400
Else
Print "spannung liegt nicht an"
Waitms 400
End If
Loop
End
wenn ich nun ein kabel einstecke (nicht mit einer spannungsquelle und GND verbunden, beginnt das terminal schon teilweise "spannung liegt an" print-befehle auszuspucken, was für mich überhaupt nicht logisch klingt?
gruss flo
Sieht aus, als hättest du keinen externen PullUp angeschlossen.
Dann solltest du nach dem Config PinA.1 = Input den internen PullUp einschalten:
PORTA.1=1
Gruß
Rolf
florian1991
01.01.2009, 22:51
hab ich auch schon versucht. rs 232 sagt dann jedoch nur noch "spannung liegt nicht an", ob ich jetzt spannung an PORTA.1 anlege, ein draht alleine, oder gart nichts anschliesse. könnte es sein, dass ich den PORTA kaputt gemacht habe?
gruss flo
Den Pin A.1 musst du übrigens mit GND verbinden, damit "Spannung liegt an"
ausgegeben wird, du fragst ja auf PINA.1=0 ab.
Wenn du wie oben beschrieben den PullUp eingeschaltet hast und dann A.1 mit GND verbindest, sollte schon der andere Text kommen. Ansonsten könnte der Pin hinüber sein.
Ganz oben hast du übrigens PINA.0 geschrieben, hast du jetzt gewechselt?
Gruß
Rolf
florian1991
02.01.2009, 11:07
Ich tippe mal darauf, dass der PIN kaputt ist. Code sieht folgendermassen aus:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Pina.5 = Input
Do
If Porta.5 = 0
Then
Print "spannung liegt an"
Waitms 400
Else
Print "spannung liegt nicht an"
Waitms 400
End If
Loop
End
Angeschlossen hab ich den Minus-Pol einer Batterie (1.5V) an GND, den Plus-Pol der Batterie an PINA.5. Zwischen Pluspol und PINA.5 liegt noch ein Taster. RS 232 gibt jedoch nur "spannung liegt nicht an" heraus. ich tippe auf Mikrocontroller austauschen?
gruss flo
Hi,
teste das doch bitte nochmal ohne Batterie, indem du entweder +5V oder GND an den Pin legst.
Hi,
ich hatte dasselbe problem auch einmal dann hab ich einfach den pin den ich abfrage auf 255 hoch gesetzt dannach war alles störungs unempfindlich vorher gin das lo als ich die Leiterplatte angefasst hatte.
mfg thomas
florian1991
02.01.2009, 12:09
danke thomas$,
genau dieses problem habe ich auch mit dem anfassen, dachte aber das komme irgendwie zufällig. port auf 255 setzen? hat das was mit den fusebits zu tun? sorry, bin noch nicht so lange auf diesem gebiet tätig =)
gruss flo
... dann hab ich einfach den pin den ich abfrage auf 255 hoch gesetzt
Was meinst du damit, den Pin auf 255 setzen?
@florian
Du hast wieder keinen PullUp eingeschaltet. Wenn du das nicht machst, dann führt die jede kleine elektrostatische Aufladung dazu, dass die Spannung hoch genug wird.
Deine 1,5V Batterie wird bei einem 5V versorgten µC nie zu einem High-Pegel führen.
Gruß
Rolf
florian1991
02.01.2009, 15:39
hallo alle zusammen
also, hab den dreh jetzt draussen. bei config schreibe ich porta.1=input, und bei if schreibe ich pina.1=1 then...
stecke ich nun eine litze ein beim pina.1 dann kommt bei berührung von gnd: spannung liegt nicht an, bei berührung mit 5v kommt jedoch spannung liegt an.
ich danke euch für eure hilfe
gruss flo
edit:
wenn ich nur ein draht bei pina.1 einstecke das andere ende aber nirgends einstecke kommt sowohl spannung liegt an, als auch spannung liegt nicht an.
wenn ich nur ein draht bei pina.1 einstecke das andere ende aber nirgends einstecke kommt sowohl spannung liegt an, als auch spannung liegt nicht an.
Um Störungen dieser Art zu vermeiden verwendet man Pullup- bzw. Pulldown--Widerstände. Damit liegt der Pin immer auf einem def. Potential.
In deinem Fall würde ich einen (ca.) 10K-Ohm vom Pin nach GND legen.
florian1991
02.01.2009, 19:21
@ tido: habs jetzt nochmal so gemacht wie du erklärt hast und zwar mitder erklärung aus dem wiki. config hab ich pina.1=input und if auch pina.1=1. funktioniert so aber ned.
gruss flo und danke für deine bemühungen
florian1991
22.01.2009, 18:50
jetzt gings mal kurzzeitig. nun überhaupt nicht mehr.
ich gebe bei config PINA.0=input ein
und bei if geb ich Porta.=1 then ... ein
kann mir jemand sagen was ich falsch mache? ich scheine dafür einfach zu dumm zu sein.
gruss flo
jetzt gings mal kurzzeitig. nun überhaupt nicht mehr.
ich gebe bei config PINA.0=input ein
und bei if geb ich Porta.=1 then ... ein
kann mir jemand sagen was ich falsch mache? ich scheine dafür einfach zu dumm zu sein.
Du bist schon ein schwieriger Fall ;-)
Schreib mal so:
Config PINA.0 = Input 'hiermit konfigurierst du den Pin A.0 als Eingang
PORTA.0 = 1 'dies schaltet den internen PullUp ein
If PINA.0 = 0 Then 'hier fragst du den Eingang A.0 ab
Print "spannung liegt an"
Else
Print "spannung liegt nicht an"
End If
Gruß
Rolf
florian1991
22.01.2009, 22:38
ich danke dir rolf =)
habs jetzt so gemacht :
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
config PINA.0 = Input
PORTA.0=1
Do
If PINA.0=0 Then
print " spannung liegt an"
else
print " spannung liegt nicht an"
end if
loop
end
dann hab ich eine litze bei PINA.0 in die Klemme gesteckt RS232 angeschlossen und dann mit dem Ende der Litze sowohl an GND als auch +5V gegangen. Beide Male hiess es im Terminal "spannung liegt nicht an". WAS MACHE ICH FALSCH??? Das Ganze treibt mich früher oder später noch zur Weissglut =)
Danke für deine Bemühungen,
Grüsse Flo
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.