Forum: Mikrocontroller und Digitale Elektronik Fehler im Programm zum steuern von ATmega 328p Microcontroller


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Pimi (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Liebe User,
Ich hoffe, dass mir da jemand helfen kann.
Ich benutze die Sisy-Software. Mit dem Code Wizard habe ich 
entsprechende Analogfunktion (Analog Wandler, Eingang C1) generiert.
Ich habe ein einfaches Programm zum Steuern von ATmega 328p in C 
geschrieben. Dass Programm sollte im Unterprogramm in Abhängigkeit das 
analogen Eingangs C1 mir die Intvariable „dämmerungStatus“ auf 0 oder 1 
setzen.
Im Main Programm sollen dann in Abhängigkeit von dämmerungStatus drei 
Ausgänge entsprechend geschalten werden. Das Programm funktioniert 
nicht. Ich bitte euch um Hilfe.
Im Anhang befindet sich dass Programm als Textdatei.
Danke im Voraus für Eure Bemühung.
Schöne Grüße
Peter

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Davon abgesehen, das die Funktion dieses Programms locker von einem 
einzigen Komparator übernommen werden könnte, wird wohl die 
Kommunikation zwischen ADC ISR und Hauptprogramm nicht funktionieren.
Schreib da mal
1
volatile int daemmerungStatus = 0;
und probier das aus.

von Frank L. (Firma: Flk Consulting UG) (flk)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> Davon abgesehen, das die Funktion dieses Programms locker von einem
> einzigen Komparator übernommen werden könnte, wird wohl die
> Kommunikation zwischen ADC ISR und Hauptprogramm nicht funktionieren.
> Schreib da mal
>
1
> volatile int daemmerungStatus = 0;
2
>
> und probier das aus.

Besser ist sogar noch
1
 volatile uint8_t daemmerungStatus = 0;

Gruß
Frank

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Pimi schrieb:
> Im Anhang befindet sich dass Programm als Textdatei.

Welchen Sinn hat es, das Programm nicht als c-Datei zu posten?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Thomas E. schrieb:
> Welchen Sinn hat es, das Programm nicht als c-Datei zu posten?

Anscheinend wissen viele Newcomer nicht, das das hier geht.

Frank L. schrieb:
> Besser ist sogar noch
>  volatile uint8_t daemmerungStatus = 0;

Das kann man nicht wissen. Da der TE so antiquierte Ausdrücke wie 
'unsigned char' benutzt, kann es gut sein, das uint8_t nicht klappt. Ist 
auch in dem Fall wurscht, ob das nun 2 bytes oder 1 byte belegt. Das 
Programm füllt ja nicht mal ein Zehntel des MC und kann, wie gesagt, 
stromsparend durch einen LM393/339 ersetzt werden.

von Frank L. (Firma: Flk Consulting UG) (flk)


Bewertung
0 lesenswert
nicht lesenswert
Hi Matthias,

technisch gesehen hast Du vollkommen Recht.

Aber: In einer ISR ist der Zugriff auf eine int Variable nicht atomar. 
Was in einigen Threads bereits hinreichend und ausgiebig diskutiert 
wurde.

Deshalb, habe ich mir den Hinweis erlaubt. Hinzu kommt die 
Speicherverschwendung von immerhin 1 Byte :-).

Gruß
Frank

von Pimi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen dank das funktioniert mit volatile int.
Schöne Grüße

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]
  • [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.