Forum: Mikrocontroller und Digitale Elektronik Tasterabfrage mit mega16


von Chris B. (chriswob)


Lesenswert?

Hallo Zusammen,

ich möchte einer einfache Tasterabfrage (3x4 Matrixtastatur) mit dem 
mega16 realisieren. Am PC0 gebe ich ein Signal aus und am PC3/PC4 möchte 
ich den Zustand abfragen und daraufhin eine LED ein bzw. ausschalten 
(PD7).

Mein Problem, er macht es nicht. Am PC3 liegen 5V an und an PC4 0V 
(beides dauerhaft). Wenn ich die entsprechenden Tasten drücke ändern 
sich auch die Signale an PC3/4 dementsprechend, er verarbeitet es aber 
nicht.

Kann mir da jemand helfen? Gibt es bei dem mega16 noch irgendwas zu 
beachten, denn mit einem mega8 habe ich fast die gleiche Schaltung schon 
zum laufen gebracht?!
1
#include <avr/io.h>
2
3
#define Zeile1 PINC & (1 << 3)
4
#define Zeile2 PINC & (1 << 4)
5
6
int main(void)
7
{
8
  DDRC = (1 << DDC0)|(1 << DDC1)|(1 << DDC2);          // PC0,PC1,PC2 als Ausgang
9
  DDRD = (1 << DDD7);                      // PD7 als Ausgang
10
  DDRC &= ~ (1 << DDC3)|(1 << DDC4)|(1 << DDC4)|(1 << DDC4);  // PC3,PC4,PC5,PC6 als Eingang
11
  
12
    while(1)
13
    {
14
    PORTC |= (1 << 0);      //Spalte 1 on
15
        if ( Zeile1 )
16
        {
17
          PORTD |= (1 << 7);    //LED ein      
18
        }
19
        if ( Zeile2 )
20
        {
21
          PORTD &= ~(1 << 7);    //LED aus
22
    } 
23
    }
24
}

von Michael (Gast)


Lesenswert?

Chris B. schrieb:
> ich möchte einer einfache Tasterabfrage (3x4 Matrixtastatur) mit dem
> mega16 realisieren. Am PC0 gebe ich ein Signal aus und am PC3/PC4 möchte
> ich den Zustand abfragen

Abfrage eine 3x4 Matrix mit 3 Pins? Auf den Schaltplan bin ich gespannt.

von Chris B. (chriswob)


Lesenswert?

Damit sind natürlich nicht alle Tasten abgefragt. ich habe erstmal zu 
Testzwecken zwei Tasten benutzt, wobei aber auch schon die Problem 
aufgetaucht sind. Das habe ich auch nur erwähnt damit der code 
verständlich wird.

von Esoteriker (Gast)


Lesenswert?

“Port C“ jtag abgeschaltet ?

von Chris B. (chriswob)


Lesenswert?

ne, muss man das bzw. wie mache ich das?

von Esoteriker (Gast)


Lesenswert?

jtag fuse ,siehe Datenblatt

von Chris B. (chriswob)


Lesenswert?

Super , scheint funktioniert zu haben. Danke für die schnelle Hilfe :)

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.