-
atmega16 Füllstand
Hallo:-)
also ich beschäftige mich gerade mit dem atmega16. Bin auf dem Gebiet noch ein blutiger Anfänger und wäre überglücklich wenn mir jemand bei meinem Problem helfen könnte:-)
Ich habe einen Schwimmer in einem Behälter und 2 Sensoren.(Hoher und tiefer Füllstand) Ist es möglich mit dem Atmega die Zeit zu "stoppen" die mein Schwimmer braucht um vom hohem Füllstand auf den niedrigen zu gelangen!? Wenn das geht würde ich mich über jeden Quelltext freuen:-)
schonmal vielen Dank
-
Wilkommen im RN Netz.
Wie willst du die gestoppte Zeit anzeigen?
Wenn Endschalter oben gedrückt
Starte Timer
Wenn Endschalter unten gedrückt
Stoppe Timer
Timer auslesen und umrechnen (je nach Zeitformat)
Zeit anzeigen
Timer zurücksetzen
Den Timer musst du vorher noch einstellen.
Vielleicht hilft es weiter.
MfG Hannes
-
Hallo Hannes vielen Dank für deine antwort!
also prinzipiell hab ich das verstanden, wollte mir die Zeit irgendwie am PC ausgeben lassen und bräucht vielleicht nen Quellcode an dem ich mich orientieren kann. Wie gesagt noch bin ich ein Anfänger :-)
Vielen Dank nochmal
-
Willst du nur dieses Projekt machen oder willst du generell in die Programmierung einsteigen? Hast du schon Vorkentnisse mit µC? Ich würde mich nacheinander in die einzelnen Themen einarbeiten (Eingabe, Interrupt, Timer, Datenübertragung,...).
Ein fertiges Beipsiel habe ich leider nicht. Wenn du nur dieses Projekt machen willst würde ich auf einen anderen, kleineren AVR umsteigen, da der Atmega viele IOs hat, die frei bleiben. Wie willst du die Verbindung mit dem PC herstellen? Wenn du mit Funk arbeiten willst würde ich SPI als Verbindung mit dem Funksender empfehlen. Dann könntest du mit dem Attiny 25, 45 bzw 85 arbeiten. Der hat 8 Anschlüsse.
MfG Hannes
-
Hallo,
ich glaube du brauchst dann auch einen Timerquarz damit es genau wird... eine der besten anlaufstellen ist für Anfänger wohl das AVR-GCC-Tutorial hier der Link zum Timer.
http://www.mikrocontroller.net/artic...A4hler_des_AVR
Und die Kommunikation zum PC
http://www.mikrocontroller.net/artic...orial/Der_UART
-
@teh_muck
Du hast Recht, wenn es aber nicht so genau sein muss geht auch der interne Oszillator.
MfG Hannes
-
Ich bin auch der Meinung, dass der interne Oscilator reichen sollte, da es ja hier wohl eher um Sekunden und nicht um nanosekunden geht, oder?
Generell musst du deine Frage aber präziser stellen, Jimmy, da ich keine Ahnung hätte, was du haben willst.
Wie hast du die Sensoren angeschlossen? Welches Board nutzt du? Wie willst du die Daten ausgeben?
Generell solltest du dir mal das AVR-GCC-Tutorial ansehen, wie oben auch schon empfohlen.
-
Hallo!
Vielen Dank für die Antworten!
Also als Board hab ich das STK 500. Da evtl. noch eine Regelung über eine Pumpe geplant ist. Meine Vorkenntnisse sind eher bescheiden, aber was nicht ist, kann ja noch werden:-)
Bei dieser Kombi wirds wohl auch bleiben.
Zu dem Prescaler: Kann ich da für jeden Timer nen andren Takt vorgeben...oder ist der wenn ich einmal einen bestimmten Wert vorgeben hab gleich!?
Die Verbindung zum PC ist Uart und da hätte ich gern ein Fenster in dem meine benötigte Zeit steht, die der Schwimmer vom oberen Sensor zum unteren benötigt. Ich les mir erstmal dieses Tutorial durch und werd dann bei Fragen nochmal schreiben. Aber schonmal vielen vielen Dank für eure Antworten.
Gruß jimmy
-
Hallo nochmal!
Also wie es jetzt laufen soll weiss ich. Wenn ein Endschalter gedrueckt ist, starte Timer. Bei jedem Ueberlauf loese ISR aus. Setze hier Zaehlvariable eins hoeher. Gib Wert der Variable aus wenn Schalter 2 gedrueckt ist. Zeit berechenbar.
Stimmt das vom Ablauf so? Und wenn ja wie schaffe ich es den Timer mit einem externen Signal zu starten???Finde dazu nirgends was :-(
Wuerde mich ueber eine Antwort sehr freuen:
-
Der Ablauf stimmt so. Mit "sei();" kannst du die Interrupts freigeben (alle). Mit "cli();" kannst du die Interrupts sperren (alle). Da du nur den Timerinterrupt brauchst kannst du es so machen. Die Interrupt.h musst du includen.
Hier ist etwas zum Interrupt für den Mega32, du kannst es aber auch beim Mega16 anwenden http://www.tschallener.net/AVR/Inter...ikATmega32.pdf
MfG Hannes