-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Fehler im Programm..!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67

    Fehler im Programm..!

    Anzeige

    Hallo zusamen!

    ich bin ein neuling in der AVR C-programierung,kann mir jemandem vielleicht sagen was ich hier falsch habe

    #include <avr/io.h>
    #include <avr/iom16.h>

    int main()
    {

    DDRD |= 0x60;//PD5 und PD6 als Ausgänge setzen
    DDRD &=~(0x0c);//PD2 und PD3 als Eingänge
    PORTD |= 0x0c;//die Eingänge auf high

    while(1)
    {
    switch(PIND & 0x0c)
    {
    case 0x08://wenn Taster1 gedrückt wird..
    {
    PORTD |= 0x40;//dann LED1 geht an
    break;
    }
    case 0x04://wenn Taster2 gedrückt wird..
    {
    PORTD |= 0x20;//dann LED2 geht an
    break;
    }
    default:
    {
    PORTD &= ~(0x60);//sonst LED1 und LED2 gehen aus
    }
    }
    };
    return 0;
    }

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    und was genau tut nicht?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    normalerweise sollen die Led1 bzw. Led2 leuchten wenn ich die Taster1 bzw Taster2 drücke.
    es tut sich aber gar nichts am Board (ATmega16)!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    Wie sieht denn Deine Schaltung aus. Die Taster müssen nach GND schalten, sonst passiert mit Deinem Programm nichts.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    und woher soll ich denn das wissen, im Montageanleitung ist jedenfalls nichts darüber!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    du hast recht die Taster sind auf High geschaltet, ich habe mein Programm folgendermaßen geändert es passiert trotzdem nichts!

    #include <avr/io.h>
    #include <avr/iom16.h>

    int main()
    {

    DDRD |= 0x60;//PD5 und PD6 als Ausgänge setzen
    DDRD &= 0xf3;//PD2 und PD3 als Eingänge
    PORTD &= 0xf3;//die Eingänge auf low

    while(1)
    {
    switch(PIND | 0x0c)
    {
    case 0x04://wenn Taster1 gedrückt wird..
    {
    PORTD |= 0x20;//dann leuchtet die LED1
    break;
    }
    case 0x08://wenn Taster2 gedrückt wird..
    {
    PORTD |= 0x40;//dann leuchtet die LED2
    break;
    }
    default:
    {
    PORTD &= 0x9f;//sonst LED1 und LED2 bleiben ausgeschaltet
    }
    }
    }
    return 0;
    }
    kann jemanden bitte mal sagen woran es liegen kann!
    wie gesagt, das ist eine Evaluation Board mit Atmega16-Processor.
    Danke

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Wenn du auf ein Port eine 1 schreibst das vorher als Eingang definiert wurde, setzt du nur den Internen PullUp sonst ändert sich nichts.
    http://www.mikrocontroller.net/artic...f_auf_Register
    www.roboternetz.de/wissen/index.php/Avr-gcc

    Das sind zwei sehr gute Tutorials, ich würde dir raten die mal durchzuarbeiten.
    Hubert

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Wenn du auf ein Port eine 1 schreibst das vorher als Eingang definiert wurde, setzt du nur den Internen PullUp sonst ändert sich nichts.
    ich verstehe nicht was du damit meinst, kannst du mal bitte weitereklären!

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Du definierst ein Port als Eingang indem du z.B. DDRD=0x00 für alle 8 Ports schreibst. Schreibst du nun PORTD=0xff sind für alle Eingänge des Port D die internen PullUp aktiv.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    03.04.2007
    Ort
    Frankfurt/M
    Beiträge
    67
    Danke für deine erklärung, aber wo habe Fehler gemacht was Port Definition angeht ?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •