PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pinausgang festlegen



tobiasrie
03.12.2005, 15:11
Hallo,

wie gebe ich einem Ausgangspin ein fetsten Zustand?

Ich habe es mit "Pinb.0 = 0" versucht und bekomme nur eine Fehlermeldung.
Wie muss ich es richtig machen?

Tobias

linux_80
03.12.2005, 15:12
Hi,

Pin wie P in, also Eingang,

Ausgang ist PortB.

Edit:
und nicht vergessen vorher mit

Config PortB.0 = Output
die Richtung festlegen

tobiasrie
03.12.2005, 16:18
Danke, das hat mir fürs erste schion mal geholfen.
Aber ich habe gleich noch eine Frage.

Ich nutze einen ATMEGA 8.
Wie kann ich die Pins 2 (TXD), 5 (XCk/T0), 6 (T1) und 8 (AIN1) als normalen Ausgang nutzen?
Die programmierung der anderen Port's klappt problemlos.
Kann es durch die Doppeltbelegung kommen?

Der befehl "Portd.5 = 0 " am Pin 2(TXD) bring beispielsweise gar nichts. Eine angeschlossene LED leutet immer!?

Tobias

linux_80
03.12.2005, 16:41
Das TXD nicht geht könnte sein wenn die Baudrate einstgestellt ist, und damit die UART, damit wird das Pin anders verwendet, kann man evtl. wieder per Hand deaktivieren, wenn man UART nicht braucht, oder einfach mal die Baudrate am Anfang nicht angeben.

Die anderen sollte eigentlich auch so gehen,
AIN1 ist auf Pin 13 nicht auf 8 denn da ist GND

Hast Du die Ports auch immer mit Config auf output gestellt, ansonsten rührt sich da nix ?

tobiasrie
03.12.2005, 17:00
o.k. das erste Problem lag wirklich an der Baudrate.
leider habe ich mit den anderen Ports noch immer ein Problem.

ich weiss leider nicht wie man hier den Code richtig einfügt, Sorry


$regfile = "m8def.dat"
'$crystal = 3690000
'$baud = 19200

Const Keys = 8

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input

Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Dim I As Byte
Dim Key As Byte

Do


For I = 1 To Keys
Key = I
Select Case Key
Case 1 : Debounce Pinb.0 , 0 , Key_o1 , Sub 'o.k.
Case 2 : Debounce Pinb.1 , 0 , Key_o2 , Sub 'o.k. (lag an der Baudrate)
Case 3 : Debounce Pinb.2 , 0 , Key_o3 , Sub 'o.k.
Case 4 : Debounce Pinc.0 , 0 , Key_o4 , Sub 'Schaltet PD.3 und PD.4
Case 5 : Debounce Pinc.1 , 0 , Key_o5 , Sub 'o.k.
Case 6 : Debounce Pinc.2 , 0 , Key_o6 , Sub 'passiert nicht
Case 7 : Debounce Pinc.3 , 0 , Key_o7 , Sub 'o.k.
Case 8 : Debounce Pinc.4 , 0 , Key_o8 , Sub 'passiert nichts


End Select
Next

Loop

Key_o1:
Toggle Portd.0
Return

Key_o2:
Toggle Portd.1
Return

Key_o3:
Toggle Portd.2
Return

Key_o4:
Toggle Portd.3
Return

Key_o5:
Toggle Portd.4
Return

Key_o6:
Toggle Portd.5
Return

Key_o7:
Toggle Portd.6
Return

Key_o8:
Toggle Portd.7
Return


End

linux_80
03.12.2005, 17:13
erst ein tipp,
Wenn Du alle 8 Bit eines Port auf Ausgang stellst kannst Du auch gleich Config PortD = Output angeben, spart etwas Platz und verweirrt nicht so.

Ansonsten hab ich irgendwie das Gefühl, das Du den falschen AVR hast, denn deine Pinbeschreibungen passen nicht zu denen die sie wirklich haben !

Ist das wirklich ein Mega 8 ?

tobiasrie
03.12.2005, 17:46
Die Belegung habe ich aus der Beschreibung von Atmel.

Wo vermutest du den Fehler?

linux_80
03.12.2005, 17:49
Das passt schon,
aber du hast oben immer andere Pinnummern angegeben, deshalb der anflug von Verwirrtheit !

tobiasrie
03.12.2005, 17:51
Sorry,

habe gerade gesehen was du meinst.
Ich bin schinbar in den Pins verrutscht.
Die Beldgung ist natürlich so wie in der Beschreibung des Chips.

Ist das Programm so o.k.?

tobiasrie
03.12.2005, 18:08
herzlichen Dank für die Unterstützung.
Der Fehler lag nicht im Programm oder dem Chip sondern war die Folge einer falschen Beldgung auf der Platine. Doofe Lochraster...

linux_80
03.12.2005, 18:08
das sollte soweit laufen,
evtl. könnte man die Pullups der Eingänge aktivieren, damit die Signale etwas stabiler werden,
also nach dem configurieren als input die Pins mit zB. Portb.0 = 1 den Pullup anmachen.
Das kommt aber drauf an wie Du das alles angeschlossen und verkabelt hast. (Schalter nach GND)