mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Eingang_Analog, Digitall Ausgang


Autor: P. Imhof (pimi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.