Forum: Compiler & IDEs Taste abfragen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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 Flattr this


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 Flattr this


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 Flattr this


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.