Eingang_Analog, Digitall Ausgang

OP #1131761
Lesenswert?
• ▲
▼
Hallo Mikrocontrollerprofis,
Noch mal kurz zur meinem vorherigen Beitrag.
Ich versuche einen ATmega 8 Mikrocontroller in C zu programmieren.
Von der Theorie des AVR-GCC-Tutorial bin ich leider nicht schlau genug 
geworden um mein Problem zu lösen.
Ich benutze die SiSy Software, habe leider wenig Erfahrung und benötige 
etwas Hilfe. Ich möchte folgendes: Wenn am Eingang C0 eine analoge 
Spannung, den Wert von ca. 2.5V unterschreitet (fallende Flanke), soll 
ein Ausgang B0 gesetzt werden. Und beim überschreiten des Wertes von ca. 
3V soll B0 rückgesetzt werden.
Dazu habe ich mir mit dem Assistenten Code-Vizard, folgendes Quellecode 
(siehe Anhang) erstellt. Im Code-Vizard habe ich einen Komparator mit 
Interrupt  und Wandler verwendet (ich weiß nicht ob überhaupt beide 
benötigt werden).
Zur Realisierung meines Programms muss man wahrscheinlich nur ein Paar 
Befähle (Zeilen) dazu schreiben.
Ich bitte um Tipps.
Danke im Voraus!
Angehängte Dateien:
#1131918
Lesenswert?
• ▲
▼
Erstens: Warum postest Du C-Code als .txt-Datei?

Zweitens: Lass den Code Wizard weg. Es bringt nichts, wenn da 
irgendwelcher Code erstellt wird, den Du gar nicht verstehst. Wenn das 
ganze mit AVR-GCC compiliert werden soll, geht das vermutlich eh in die 
Hose. Die sbi- und cbi-Makros sind z.B. afaik seit Jahren deprecated und 
werden von aktuellen Compiler-Versionen nicht mehr unterstützt. Schau am 
besten mal das AVR-GCC-Tutorial an. Da steht, wie es gemacht wird 
und auch, wie es funktioniert.

Drittens: Wenn Du nur einen Vergleich mit einem Schwellwert machen 
willst, brauchst Du keinen ADC. Da genügt der Komparator. Wenn Du den 
ADC gar nicht brauchst, dann kannst Du ihn übrigens abschalten und dann 
seinen Multiplexer für den Komparator nutzen (also den Port C als 
Eingänge für den Komparator). In Deinem Fall ist es aber wahrscheinlich 
unnötig, da Du eh nur einen Eingang abfragen willst. Da Du mit einer 
Referenz vergleichen willst, solltest Du dann aber als Eingang AIN1 
(PD7) nehmen. Die interne Bandgap-Referenz kann nämlich nur mit AIN0 
verbunden werden. Du brauchst dann extern noch einen Spannungsteiler, 
der die 2,5 V auf den Pegel der Bandgap-Referenz herunterteilt (also auf 
1,1 V).

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.