AVR ganzer Port auslesen

OP #4365766
Lesenswert?
• ▲
▼
Hallo zusammen

Ich möchte in einem Interrupt einen ganzen Port, an dem Taster sind, 
auslesen und diesen Wert in einen Buffer schreiben. Ich benutze 
CodeBlocks und einen Attiny48.
Die Taster werden per Software entprellt. Der Grundzustand der Taster 
ist 0xFC(DEFAULT_VALUE_PORTD)

Hier ist der Code:
1
ISR(TIMER0_COMPA_vect)
2
{
3
    // stop the counter
4
    TCCR0A &= ((0<<CS02) & (0<<CS01) & (0<<CS00));
5

6
    uint8_t tmp_portd = 0;
7
    tmp_portd = DDRD;
8
    tmp_portd = ((tmp_portd ^ DEFAULT_VALUE_PORTD) & 0x93);
9
    // Write the active switch into the buffer
10
    bufferIn(tmp_portd);
11
    // clear interrupt flag
12
    PCIFR = 0x00;
13
    
14
    // enable interrupt at PORTD
15
    PCMSK2 |= 0xFF;
16
}

Ich möchte herausfinden, welcher Taster geändert. Wenn ich jedoch 
debugge, wird immer nur der selbe Wert(220) in den Buffer geschrieben.
Wie muss ich es ändern, dass nur das aktive Bit in den Buffer 
geschrieben wird?

MfG und danke im Voraus
Gast #4365796
Lesenswert?
• ▲
▼
TM F. schrieb:
> asdf schrieb:
>> Was mir da auf Anhieb auffällt, du liest nicht den Port aus, sondern das
>> Direction Register...
>
> Mit
>
> tmp_portd = PORTD;
>
> funktioniert es auch nicht.

Ist ja auch klar, dsa ist das AUSGABE-Register des Ports, welches du 
hier liest. Es gibt noch ein drittes Register :-)
Ich will mal nicht so sein. Es heißt PIND...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.