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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren