- LiFePO4 Speicher Test         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Programmierproblem

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44

    Programmierproblem

    Anzeige

    Praxistest und DIY Projekte
    hallo! kann mir jemand vielleciht weiterhelfen und sagen weshalb das nicht funktioniert: möchte über die serielle schnittstelle ein zeichen schicken, das dann eine LED einschaltet!

    // Hauptprogramm
    int main(void) {
    Init();
    unsigned char *buffer;

    while(1){
    SerRead(buffer,1,0);
    if (buffer[0]=='1') {StatusLED(RED);}
    else{BackLED(ON,ON);}
    }

    while(1);
    return 0;
    }

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.07.2004
    Ort
    Nürnberg
    Alter
    43
    Beiträge
    186
    Hi,
    ich glaub die Anführungszeichen müssen weg also:
    Code:
    if (buffer[0]==[highlight=red]1[/highlight])
    anstatt
    if (buffer[0]==[highlight=red]'1'[/highlight])
    Ich bin keine Signatur ich mach hier nur sauber

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44

    geht immer noch nicht

    danke für die schnelle antwort, aber das wars leider nicht!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    17.06.2007
    Ort
    Geretsried
    Alter
    34
    Beiträge
    43
    Code:
    // Hauptprogramm
    #include "asuro.h"
    
    int main(void)
    {
     Init();
     unsigned char buffer [1];
    
     while(1)
     {
      SerRead(buffer,1,0);
      if (buffer[0]==1) {StatusLED(RED);}
      else{BackLED(ON,ON);}
     }
    
     return 0;
    }
    Hi taylor22,

    bin auch grad erst am anfangen,
    wenn das wirklich alles ist, hast du vergessen die asuro.h bibliothek zu includieren.
    ich würde die anführungszeichen auch weglassen, die brauchst du nur bei text würd ich sagen.
    die buffer variable würd ich so wie oben (in meinem code) definieren das mim stern brauchst du glaub ich nur bei funktionen definieren.
    des 2. while(1) kannst du dier sparen des erste is ja schon die endlosschleife.

    kanns leider nich ausprobieren, bei meinem asuro hab ich irgendwie die batteriehalterung gekillt/geschmolzen

    gruß tobi

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    asuro.h habe ich schon inkludiert! die anführungszeichen habe ich weg genommen, und das zweite while(1) stört eigentlich nicht!
    geht leider immer noch nicht!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    17.06.2007
    Ort
    Geretsried
    Alter
    34
    Beiträge
    43
    also so wie der code oben bei mir drinne steht muckt der compiler nicht,
    muss genau auf die deklaration von den variablen achten klammern semikolon etc.

    leider kann ichs immer noch nicht testen asuro geht wieder, aber es flashen tut nicht...

    mfg

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Nicht getestet - aber probiers mal so:

    Code:
    unsigned char buffer[16]; // mit dem * deklarierst Du nur nen Pointer - Du 
                                         // brauchst aber nen Array! Hier mit 16 Zeichen...
    
    // Hauptprogramm
    int main(void) {
    Init();
    
    while(1){
    SerRead(buffer,1,0);
    if (buffer[0]=='1') {StatusLED(RED);}
    else{BackLED(ON,ON);}
    }
    
    while(1);
    return 0;
    }
    Ach und die Anführungszeichen müssen da hin - Du willst ja das Zeichen '1' empfangen ...

    MfG,
    SlyD

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    super danke, so klappts! prima!

  9. #9

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    nächste Frage: weiss jemand, was hier noch fehlt oder was falsch ist? Sobald ich eine Taste auf der Tastatur drücke, sollte die StatusLED rot leuchten- eigentlich! Vielen Dank für Eure Hilfe!

    ISR(USART_RXC_vect){
    StatusLED(RED);
    }

    // Hauptprogramm
    int main(void) {
    Init();
    StatusLED(OFF);
    unsigned char buffer [16];
    sei();
    UCSRB|=(1<<RXCIE);
    while(1)
    {
    SerRead(buffer,1,0);
    }

    return 0;
    }

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress