portb= porta

Gast #24855
Lesenswert?

ich habe folgenden in bascom code geschrieben:
'----------------------
Config Portb = Output
Config Porta = Input

Do
Portb = Porta
Loop
'----------------------

an port b befinden sich leds - die sich auch ansteuern lassen und 
leuchten! leider passiert nichts wenn ich die pins von portA einzeln 
gegen masse ziehe. also muß es wohl am PORTA liegen! was mache ich 
falsch!

sorry bin ein anfänger!
danke
Gast #24858
Lesenswert?

Ich kenne bascom zwar nicht das alles was irgendwie wie BASIC klingt in 
mir Krämpfe verursacht, aber irgendwie wird es wohl
so ähnlich aussehen:

Do
Portb = Pina
Loop

Reiner


Wenn Du von PORTx liest, siehst Du nur was Du vorher mal in das 
Ausgangslatch geschrieben hast, nicht was Außen anliegt. Dafür gibt es 
das PINx Register.

Reiner
Gast #24864
Lesenswert?

Hi Mark!

Momente mal. Du schreibst, Du ziehst die Eingänge an PortA nach Masse. 
Dazu brauchst Du ein Pull-Up (Widerstand an PortPins gegen +5V, etwa 10k 
bis 47k), entweder im AVR oder extern, sonst tut sich gar nix.

Das interne Pull-Up machst Du über das PortA-Register, das Du high 
setzt, während das DDRA-Register auf Eingang steht.

Ansonsten ist PortB=PinA schon richtig.

In Assembler etwa so:

ldi TEMP1,0x00
out DDRA,TEMP1  ;Port A => Eingang
ldi TEMP1,0xFF
out PORTA,TEMP1 ;Pull-Ups an
ldi TEMP1,0xFF
out DDRB,TEMP1  ;Port B => Ausgang
ldi TEMP1,0x00
out PORTB,TEMP1 ;Ausgänge low

main:
  in  TEMP1,PINA
  out PORTB,TEMP1
  rjmp main

In BASIC prinzipiell nicht anders, aber ich weiß nicht, wie dort die 
Ports angesprochen werden, Vielleicht so:

Config Portb = Output
Config Porta = Input
Porta = 0xFF           'Pull-Ups an

Do
  Pinb = Porta         'Ausgabe Port A auf Pin B
Loop

Ohne Pull-Ups solltest Du die LEDs flackern sehen, wenn Du mit dem 
Finger an den unbeschalteten Eingang gehst. Die Eingänge sind dann sehr 
hochohmig und die Brummspannung reicht aus, um sie anzusteuern.

Sven (aber ein anderer ;-)

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