Forum: Compiler & IDEs Taste abfragen


von Michael (Gast)


Lesenswert?

Hallo Leute,
vielleicht liegt es daran das es schon so spaet ist aber kann
mir einer erkaleren warum das nicht klappt ?

#include <io.h>
#include <progmem.h>
#include <iomacros.h>
unsigned int wert=0;

int main (void)
{
  outp(0x00, DDRD);
  for(;;)
  wert=(inp(PORTD));
}


Vielen Dank im voraus

Michael

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Was genau klappt da nicht?

von MarkusB (Gast)


Lesenswert?

Vielleicht solltest Du den Wert auch wieder irgendwo ausgeben?

Gruß
Markus
http://www.elektronik-projekt.de/

von Michael (Gast)


Lesenswert?

War doch ein bisschen spaet.

Wenn ich dieses Programm im AVR Studio simuliere muesste
eine gedrueckte Taste von PORTD als Hex-Wert in meiner Variablen Wert
erscheinen. Tut es aber nicht.


Gruss

Michael

von MarkusB (Gast)


Lesenswert?

Ja, war bei mir auch spät :).
Du darft nicht PortD einlesen sondern PinD. Ein häufig gemachter Fehler 
den ich selber übersehen hab :).

Gruß
Markus
http://www.elektronik-projekt.de/

von Michael (Gast)


Lesenswert?

Geht aber leider immer noch nicht PIND hatte ich schon ausprobiert.
Liegt es vielleicht an meinem AVR-Studio ???
Vielleicht werden die variablen nicht richtig ausgegeben?

Loesung waere super.

Gruss

Michael

von Michael (Gast)


Lesenswert?

Hat sich erledigt,
der Compeiler hat meine Variablen wegoptimiert.
Mit Volatile ging es sofort.

Gruss

Michael

von gast (Gast)


Lesenswert?

Hallo erstma' ... ich (als neuling ) sas gerade am gleichen problem ... 
wenn ich von PINn lese gets tatsechlich ... aber wiso muss ich das ? ich 
blicke durch das Datenblatt wohl nicht so ganz durch...

von Bernhard (Gast)


Lesenswert?

Pro Port gibt es 3 Register:
DDRn  Richtung ( Ein- Ausgang ) einstellen
Portn Schreib- und lesbares Register in dem der "Sollwert" der Portpins 
geschrieben wird.
Pinn  Tatsächlicher Zustand am Portpin.

von gast2 (Gast)


Lesenswert?

wie kann ich abfragen ob ein bestimmter pin des ports h oder l is?? laso 
so... if(porta.pin3==masse)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

if(bit_is_set(PINA,3)) {
  bla();
}

von Retro (Gast)


Lesenswert?

Nabend, bit_is_set ist mir garnicht bekannt... ich denke da eher an:

if (inp(PINA) == 0b00000100)
{
  ...
}

oder (da avrgcc ja von hausaus keine binärzahlen akzeptiert):

if (inp(PINA) == 0x04)
{
  ...
}

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Und wenn die anderen Bits nicht alle 0 sind?

if((inp(PINA)&0x04)==0x04) {
...
}

von Markus B (nicht der von oben) (Gast)


Lesenswert?

bit_is_set(PINA,3)

ist ein Makro welches in der io.h Headerdatei definiert ist wenn das 3. 
Bit an PINA gesetzt ist wird eine 1 weitergegeben  wenn nicht eine 0


bei
bit_is_clear(PINA,3)
ist es genau anderstherum

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.