mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik at mega8 port einlesen - brett vorm kopf?


Autor: H. R. (tido)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe vor, eine kleine Funkuhr mit einem ATMega8 aufzubauen und muss 
dazu ein Signal vom DCF Empfaenger einlesen. Nach vielen erfolglosen 
Versuchen habe ich dann mal das ganze Teil auf ein Minimum 
zusammengeschrumpft und statt Empfaenger und Display mal einen Taster 
und eine Status-LED angeschlossen.

PortD7 => Statusled mit Vorwiderstand gegen Masse.
PortC5 => Taster gegen Masse

Bisher ist es so, dass der Taster-Pin high ist (mit Oszilloskop 
gemessen) solange der Button nicht gedrueckt ist und low wird, wenn er 
gedrueckt ist. Trotzdem blinkt die LED weiter und erreicht niemals den 
"else"-Zweig.

Vielleicht hat ja einer von Euch eine Idee woran das liegen koennte...

Gruss Tido

#include <avr/io.h>
#include <util/delay.h>

#define x_PORTD         (*(unsigned char*) 0x32)
#define x_PORTC         (*(unsigned char*) 0x35)
#define x_DDRD          (*(unsigned char*) 0x31)
#define x_DDRC          (*(unsigned char*) 0x34)


int main( void ) {                  
        
    DDRD |= 0x80;                       // set led-port to output
    DDRC &= ~0x20;                      // set button port as input
    PORTC |= 0x20;                      // enable pull-up on button port
    
    while( 1 ) {                        // forever
        
        if( PORTC & 0x20 )              // if button-port == high ...
            PORTD ^= 0x80;              // ...toggle led
        else                            // if button-port pulled to ground ...
            while( 1 );                 // ...stop blinking

        _delay_ms( 100 );
        
    }
    
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>        if( PORTC & 0x20 )

         if( PINC & 0x20 )

Du fragst im Moment ab, ob der Pullup Widerstand eingeschaltet ist :-)

Autor: H. R. (tido)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autsch ... ;)

Habe alles moegliche kreuz und quer ueberprueft... aber das ist mir 
mindestens 10h nicht aufgefallen. Danke !

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.