-
-
Neuer Benutzer
Öfters hier
AD, rn-control mit tasten und c
Hallo Leute,
ich bin fröhlicher(noch ) Anfänger und versuche auf basis des RNControl boards (mega32@16mhz) einen robby zu bauen.
ich habe es hingekriegt mittels pwm die kiste zum fahren zu kriegen.
jetzt würde ich gerne die tasten (am analogport) auslesen.
leider kriege ich es nicht hin.
ich habe versucht die iobiblothek im downloadbereich zu benutzen.
diese bietet einige nette defines, funktioniert aber so nicht.
bits die gesetzt werden vom nächsten komando wieder gelöscht.
könnte mir vielleicht einer von euch erklären, wie ich die taster auslese und sagen wir auf die leds ausgebe? (nachmöglichkeit ohne zusätzliche biblothek)
Wäre nett, wenn mir jemand weiterhelfen könnte
Ursulor
-
Solche trivialen Sachen sollte man zuerst machen. Fertige Bibliotheken sind auf PC-Ebene was feines, bei MC sollte man schon sehr genau wissen, was sie wie machen. Also bleibt einem eine Einarbeitung nie erspart.
Zu deiner Frage:
http://mc-project.de/Pages/programmierung.html
Da du nicht geschrieben hast, mit was du programmierst, setze ich C voraus. Das Bits prüfen und setzen was auf der verlinkten Seite beschrieben wird, entspricht ja dem Taster auslesen bzw. LED ansteuern.
-
Gast, die Tasten werden bei der RN-Control über analogen port abgefragt! Der Link ist daher nicht ganz optimal
-
Neuer Benutzer
Öfters hier
hallo, danke für den link, aber das habe ich schon hingekriegt.
also: ich versuchs in c
die leds hängen an PORTC, die kann ich wie ich will an und ausknipsen
mein problem ist der ad.
-
Neuer Benutzer
Öfters hier
ach ja, die tasten hängen an kanal A7 und liefern 0,35 0,7 1,05 1,4 und 1,75V an den port (sagt mein multimeter und stimmt mit beschreibung überein)
ich hab fleißig tutorials und threads gelesen, aber ich bin anscheinend zu blöd um die richtigen bits zu setzen
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo
Dann wollen wir mal schauen
ADMUX = _BV(REFS0 ) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); //einstellen auf externe Referenz 2,5 Volt und Channel 7 einstellen
ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS0);
//AD Wandler einschalten und Vorteiler setzen, hier 32 kommt auf deine Taktfrequenz an. AD Wandler sollte zwischen 50 und 200 KHz laufen
Wenn du jetzt wandeln willst kommt
ADCSRA |= _BV(ADSC); //und starten
while ( ADCSRA & _BV(ADSC) ); //Warten bis fertig
Danach steht in ADCW der Wert der Wandlung, oder halt in ADCL und ADCH.
MFG
DIeter
-
Neuer Benutzer
Öfters hier
Danke Dino,
das war die sorte hilfe die ich gesucht habe.
scheint zu funktionieren.
allerdings nur direkt nach einem reset.
kann ich die beiden letzten anweisungen in eine while schleife packen?
while(1) {
ADCSRA |= _BV(ADSC); //und starten
while ( ADCSRA & _BV(ADSC) ); //Warten bis fertig
.../ADC auslesen, etwas schlaues damit tun, port ausgeben
}
oder muss ich zwischendurch irgendetwas zurücksetzen?
-
Neuer Benutzer
Öfters hier
jetzt klappts auch damit, hab ein falsches register erwischt
-
Hallo
Schön das es klappt. Womit schreibst du deinen C Code.
Ich habe jetzt von Notepad auf MED gewechselt. Ist ganz gut.
Verwaltet schön Projekte und viele weitere nützliche Sachen.
Einbindung von WINAVR usw
http://www.med-editor.com/
MFG
Dieter
-
Nur mal ne Frage: Ich kenne die RN-Control nicht, aber wer fragt Tasten über einen AD-Wandler ab?
Hätte er auf der verlinkten Seite mehr als 2 min. verbracht, hätte er vielleicht auch festgestellt, dass dort diverses zum AD-Wandler steht sowie Bibliotheken verfügbar sind. Man muss nur auf die Startseite gehen.
Als Oberfläche finde ich beispielsweise die von Visual C++ sehr geeignet, mehr Features als diese bietet denke ich kein anderes Programm. Wer jedoch nicht weiter PC-Programmierung betreibt, für den ist sicherlich das aktuelle PN auch nicht schlecht.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen