PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Programmieren der Ports



Geimel
07.08.2006, 08:46
Hallo,
ich habe mal eine Frage zu den Ports des ATMEGA. Und zwar kann ich die ja mit den vorgegebenen Funktionen aus der Asuro lib ansprechen.Da ist man aber etwas eingeschränkt.

Meine Frage ist jetzt, wie kann ich das direkt tun, also z.B.
möchte ich PORT PB0 als Ausgang nutzen und ein bzw. ausschalten. Gibt es da auch die möglichkeit, ihn mit VCC, oder Masse zu belegen?
Es wäre echt prima wenn mit jemand mal ein Beispiel mit Erklärung schicken könnte.
Vielen Dank
Geimel

franzl
07.08.2006, 09:03
hallo,
du kannst die pins einzeln deklarieren das schaut dann in etwa so aus
portb.0 = output
portb.0 = 1 5VPegel am Ausgang
portb.0 = 0 0VPegel am Ausgang
wenn du es nicht verstanden hast ich helfe gern nochmal
mfg franzl

Arexx-Henk
07.08.2006, 19:29
Hallo,

//schaltet nur PB0 wie Ausgang (bit 0 in DDRB hoch)
DDRB|=(1<<PB0);

//schaltet nur PB0 wie Eingang (bit 0 in DDRB niedrich)
DDRB&=~(1<<PB0);

//schaltet nur PB0 hoch
PORTB|=(1<<PB0);

//schaltet nur PB0 niedrich
PORTB&=~(1<<PB0);

//tested ob port PB0 hoch ist
if ( PINB & (1<<PB0) ) { //mach etwas }

//tested ob port PB0 niedrich ist
if ( ! ( PINB & (1<<PB0) ) ) { //mach etwas }

Die ports liefern maximal 20mA damit kann mann keine Motoren gerade ansteurn. Aber LED's ansteuern geht prima.

Mann kann ports an VCC oder GND anschliessen aber bitte nur
wenn der port wie EINGANG geschaltet ist. Denn wenn ein Port wie Ausgang geschaltet ist wahrend er auch an VCC oder GND angeschlossen ist, dann geht die Ausgang/Treiber kaput.

Wenn ein Port wie Eingang geschaltet ist (mittels 'DDRB') und hoch gemacht wird (mittels 'PORTB') dann wird ein eingebautes pull-up Widerstand van zirka 20-50KOhm zum VCC eingeschaltet.


Gruss

Henk