Fehler im Programm zum steuern von ATmega 328p Microcontroller

Gast #5087172
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
Angehängte Dateien:
(Firma: Flk Consulting UG) #5087206
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
(Firma: matzetronics) #5087423
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.
(Firma: Flk Consulting UG) #5087470
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.