- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 13

Thema: Kontrolle durch Kenner erbeten... C-Code

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1

    Kontrolle durch Kenner erbeten... C-Code

    Hallo Freunde von GCC !

    Duch langes Verwenden von ArduinoCode bin ich ein wenig vom C++ Weg abgekommen, ich meine muss mich langsam wieder umstellen. Nun habe ich
    einen Sorcecode erstellt für einen Alarmsender mit ATTiny2313 als µC.
    Ich habe zwar keine Fehlermeldungen beim Compilieren, aber bestimmt habe ich mich bei der Erstellung etwas hinten angestellt. Während es ja beim Arduino die Loopschleife als Hauptprogramm(-Funktion) gibt habe ich mir hier einen "abgebrochen" es mit 'ner while-Schleife und einigen Flags hinzubekommen.
    Die Kenner werden sich bestimmt über den Programmierstil die Bäuche kugellig lachen, ich nehms mit Humor , aber ich möchte gern lernen aus den kritischen Kennerblicken und -worten.

    Hier ist der Sourcecode zu finden.

    Ich danke schon mal für Eure Kritik und Anregung.
    Leider kann ich momentan auch nicht praktisch testen, das STK500 ist zZt woanders..

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    So ganz bin ich noch nicht dahintergekommen was du mit den Flags bezweckst, aber ein paar Dinge die mir aufgefallen sind:
    • in der main:
      Code:
      while (erg<1) // Dauerschleife bis Alarmmeldung
      Und dann? Der Mikrocontroller darf sein Programm nie verlassen, denn du weist ja nicht was danach noch so im Flash an Programmcode folgt, der µC kann also alles mögliche machen. Du musst immer eine Hauptschleife haben die unter keinen Umständen verlassen werden kann: while(1)
    • Beide Unterprogramme können zwar int-Werte zurückgeben, aber die einzigen Rücksprungbefehle sind: "return 0;". Wozu muss man dann Int-Werte zurückgeben können, wenn sowiso in jedem Fall nur ein 0er zurückgegeben wird?



    Was soll denn das Programm genau machen?


    1. Warten bis PB2 low ist
    2. für 3 Minuten Alarm geben
    3. Alarm abschalten
    4. warten bis PB2 wieder high ist (kein Alarmsignal mehr)
    5. wieder warten bis PB2 low ist (sprich ab Schriit 1 abwärts)

    Stimmt das so?

    <EDIT:>
    Falls die Liste so stimmt, sollte folgendes Programm funktionieren (nicht getestet, aber so falsch kanns nicht sein ):
    https://dl.dropboxusercontent.com/u/...ogramm2.c.html
    Geändert von -schumi- (24.04.2013 um 23:52 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo Schumi !
    habe recht herzlichen Dank für Deine Mühen und auch den Code !!! ich werde am Wochenende mein STK500 wieder haben und kann dann probieren...
    Ja was soll das Programm machen Du hast es fast richtig erfasst, den konkreten Ablauf wird die Praxis erst zeigen.
    Folgendes soll erst mal passieren:
    1. INPort.1 wartet auf LOW
    2. OUTPort.1 gibt 3Min. LOW (Kann event.auch HIGH werden je nach Anschluss, erst mal unwichtig)
    3. OUTPort.2 gibt dauerhaft LOW (Kann event.auch HIGH werden je nach Anschluss, erst mal unwichtig)
    4. INPort.2 wartet auf LOW oder auch Reset möglich... dann weiter bei 1.

    Dazu noch die Frage, wie verhält es sich mit boolschen Variablen, habe gelesen das das in C nicht vorhanden ist, im Boch über C,C++ finde ich aber den Datentyp
    bool bzw. _bool ???
    Na ja ich muss mich wieder Einarbeiten, möchte aber nicht nach ASM oder Bascom wechseln C/C++ soll es schon sein was ich auf meine "alten Tage " noch mals auffrischen möchte und auch anwenden.

    Danke und Gruss

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.656
    Zitat Zitat von oderlachs Beitrag anzeigen
    ... Dazu noch die Frage, wie verhält es sich mit boolschen Variablen ...
    Das ist ja ne häufig diskutierte Frage. Gibts im Prinzip nicht, macht ja nix:

    #define bool blafasel
    Denn per #define kann man alles so anlegen, wie man will
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Seit C99 gibt es einen entsprechenden Datentypen: http://stackoverflow.com/questions/1...-native-c-type

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Ja Markus, so stehts auch in meinen neueren C/C++ Handbüchern, aber ob GCC da so mit macht weiss ich eben nicht, der Versuch wirds zeigen.
    Danke
    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Arduino Kenner gefragt...
    Von oderlachs im Forum Arduino -Plattform
    Antworten: 18
    Letzter Beitrag: 30.11.2011, 15:30
  2. Hilfe beim Compilieren einer C-Quelldatei erbeten
    Von Vilem im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 15.04.2011, 17:46
  3. ATmega durch falschen Code kaputt machen
    Von quad im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 12.09.2008, 22:02
  4. LCD Kenner hier ?
    Von jar im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 13.03.2007, 22:54
  5. Durch inline kleinerer Code?
    Von luma im Forum C - Programmierung (GCC u.a.)
    Antworten: 31
    Letzter Beitrag: 20.06.2005, 14:22

Berechtigungen

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

Labornetzteil AliExpress