mikrocontroller.net

Forum: Compiler & IDEs Atmega128 Tasten Ansteuern


Autor: Saber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi all,

zu aller erst wünsche ich allen frohe Ostern.

Ich hab mir ein Graphik Display zugelegt und möchte über zwei tasten 
bilder auf dem display anzeigen. Die pics kann ich schon ausgeben am 
display nur weis ich nicht wie der code für die tasten ausschauen soll. 
Ich möchte das einfach nur so haben das wenn ich auf taste 1 auf port D1 
drücke das mir der atmega128 das gewünschte bild zeigt

daweil schaut der code so aus, vieleicht kann mir ja wer verraten was 
ich tun muss.

PS.: Das ist das display 
http://www.shop.display3000.com/pi12/pi2/pd43.html
nur im handbuch steht kein wort darüber wie mann die tasten ansteuert


#include <stdio.h>
#include <avr/io.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <math.h>
#include <avr/pgmspace.h>
#define LCD_DDR DDRB

void delay_ms(unsigned int period);
#include <glcd-Display3000-211.h>
extern const prog_uint8_t Font1[], Font2[];

//Include graphics files (if any)
#include "nasa256c.h"
#include "bild2.h"
#include "bild3.h"

extern const prog_uint16_t  *Bitmap;



int main(void)
{
  LCD_Init();
  delay_ms(1000);
  while(1)
  {



                  Orientation = Portrait;
    LCD_Bitmap_256high(0, 0, 131, 175, Nasa256c, Table_Nasa256c, true);
    delay_ms(4000);



#//Hier sollte das bild angezeigt werden wenn ich auf taste 1 PD1 drücke


                  Orientation = Portrait;
    LCD_Bitmap_256high(0, 0, 131, 175, Bild2, Table_Bild2,  true);
    delay_ms(4000);


#//Hier sollte das bild angezeigt werden wenn ich auf taste 2 PD6 drücke

    Orientation = Portrait;
    LCD_Bitmap_256high(0, 0, 131, 175, Bild3, Table_Bild3, true);
    delay_ms(4000);

    }
  return 0;
}


{
  for(unsigned int i=0; i<=period; i++)
    _delay_ms(1);
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Saber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi peda

danke für denn link aber ich begreif da null :(
achso ja ich benötige ja keinen short oder long tastendruck hab ja für 
jeden aufruf eine einzelne taste

wenn es dir möglich ist könntest du mir das idioten sicher beschreiben 
:)

mfg Saber

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaalso, weil heute Ostern ist...

1. Taster kann nicht ansteuern, sondern nur abfragen :-)
2. Muss man den Prozessor sagen wo die Taster dran hängen, dazu muss man
die entsprechenden Pins auf Eingang/Pullup konfigurieren.
DDRD = 0; // alle Pins an PortD auf Eingang, 
// diese Zeile kann man sich sparen, 
// sofern man DDRD nach dem Reset nicht angefasst hat

PORTD |= (1 << PD1) | (1 << PD6); // Pullup für PD1+PD6

...
while(1) 
{
   if (PIND & (1 <<PD1))
   {
       // Taster NICHT gedrückt
   } else {
       // Taster gedrückt
   }
}

3. Wirst du recht schnell fest stellen, dass obiger Code zwar 
funktioniert, aber nicht optimal ist, Stichwort Entprellung und 
Wiederholung. Bei gedrückter Taste wird das Bild z.B. immer wieder 
gezeichnet.

Evtl hilft dir obiges Beispiel, das Prinzip zu verstehen wie man einen 
Port abfragt und du dich somit besser in die Materie der Entprellung 
einzuarbeiten.
Such einfach mal nach "Entprellen", es gibt da verschiedene 
Codeschnipsel, manche evtl leichter verständlich wie Peda's aber dafür 
mit anderen Nachteilen.
Auch ein Blick ins GCC-Tut ist nicht verkehrt:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Wünsche noch allen Frohe Ostern
Roland

Autor: Saber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Danke Danke Roland

hast mir sehr geholfen damit ich dein einstieg in tasten entprellen 
verstehe.

Frohe Ostern

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.