- LiFePO4 Speicher Test         
Ergebnis 1 bis 6 von 6

Thema: Probleme mit Timer1

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    24
    Hi Searcher,

    Danke für die Hinweise!
    Ja ich weiß, ich hätte mal noch ein paar mehr Kommentare in den Code schreiben sollen, damit klarer wird was da überhaupt passiert :-/

    Das Bild des FTS in dem verlinkten Post auf der 2. Seite ist zwar nicht mehr ganz aktuell da dort weder die Sensorik für die Lenkachse noch die Sensorik für die Spurführung eingebaut ist, aber für die Erklärung dürfte es aureichen.

    Also kurz zum Programm: Vorne am FTS ist ein IFR-Sensor. Der hängt am Port 0. Dann gibts für die Spurführung zwei nebeneinder befindliche Spulen, die sich unter dem Fahrzeug befinden und einen Kupferdraht abtasten, auf dem ein Impuls läuft. Sie hängen am Port 2 und 3 und heißen im Programm Links und Rechts, bzw werden die analogen Werte unter diesen Variablennamen abgespeichert. Sind beide Spulen direkt über dem Draht, wird eine bestimmte Spannung von jedem Sensor ausgegeben die einem analogen Wert von so 400 bis 600 entspricht. Ist ein Sensor auserhalb des Drahtes, wird ein analoger Wert von 777 ausgegeben. Also wenn z.b. der linke Sensor 600 und der rechte Sensor 777 zeigt, weiß das Programm, dass das FTS rechts von der Spur ist und lenkt entsprechend.

    Um dann wieder für die Geradeausfahrt die Mittelstellung der Lenkachse zu finden haben wir ne Lichtschranke an Port 4, die sich direkt über dem roten Zahnrad der Lenkachse befindet. Die zeigt eine Spannung an wenn das rote Zahnrad nicht in der Mitte ist und keine Spannung, wenn es in der Mitte ist. Deswegen das "Loop Until Sensor_lichtschranke < 800". Wir haben auch noch nen Poti an der Lenkachse, um nen bestimmten Lenkwinkel zu erreichen, aber der wird im Moment nicht benutzt. Die Spurfolgung hat auch so ganz gut geklappt.

    Zu 1.: Ah okay, ist mir gar nicht aufgefallen. Ich hatte das Programm ursprünglich aus dem RN-Control Testprogramm gebastelt. Kann ich die Zeile mit dem "Tccr1b" dann einfach weglassen? Oder braucht man das?
    Zu 2.: Den Quellcode für die Timevorgabe hab ich direkt vom Programm rnAVR von roboternetz.de übernommen, das mir auch die Werte für den Prescaler und die Timevorgabe gegeben hat. Ich weiß nicht wie alt das Programm ist und ob es fehlerfreien Quellcode erzeug, hab es über die Suchfunktion gefunden. Ich kenn mich mit Interrupts leider gar nicht aus und hab das am Wochenende mal in nem Buch bzw im RN-Wiki nachgelesen. Also ob es funktioniert kann ich nicht genau sagen, da sich mit dem Timer gar nichts mehr getan hat.

    Kann es vielleicht auch sein dass der Quellcode im ISR zu lang ist und der Prozessor es gar nicht schafft den 10 Mal pro Sekunde abzuarbeiten und es deswegen Probleme gibt, sprich er noch gar nicht fertig ist ihn abzuarbeiten, ihn aber erneut aufrufen will? Ich hab auch irgendwo mal gelesen dass man da eigentlich keine allzu langen Befehle reinschreiben sollte. Eigentlich würde es auch reichen wenn er nur ein Interrupt pro Sekunde hat.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo,

    Den Quellcode für die Timevorgabe hab ich direkt vom Programm rnAVR von roboternetz.de übernommen, das mir auch die Werte für den Prescaler und die Timevorgabe gegeben hat
    Hab ich nicht überprüft; wird aber OK sein.

    Denke, daß das eigentlich Problem ist, das Du den Timer1 für deinen Timerinterrupt benutzen willst. Ich hatte in meiner ersten Antwort noch ein EDIT hinzugefügt. Der Timer1 wird wohl auch noch für Motor PWM gebraucht.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    24
    Ah Danke!

    Oh, das ist natürlich blöd mit dem PWM. Daran will ich lieber nicht rumfummeln.
    Hm dann werd ich das am besten mal überarbeiten und einfach Timer0 für den Interrupt benutzen, auch wenn dort das niedrigste 61 Interrupts pro Sekunde sind.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hi,
    Kann es vielleicht auch sein dass der Quellcode im ISR zu lang ist und der Prozessor es gar nicht schafft den 10 Mal pro Sekunde abzuarbeiten
    Bin selbst (noch?) kein Bascom Freak und deshalb sollten meine Aussagen besser bestätigt werden:

    In der ISR wird wohl die meiste Zeit mit den GETADC verbraten werden. Der ADC ist mit Prescale=Auto konfiguriert. Hab das mal im Simulator nachgeschaut. Bascom macht daraus einen ADC Takt von 125000Hz. Für eine Single Conversion werden 13 ADC-Takte gebraucht also ca 104µs. Nun schätze ich ganz grob, daß die Abarbeitung der ISR sicher unter 1ms bleibt.

    Abgesehen davon bin ich selbst mit dem Bascom Kommando GETADC in einer ISR nicht glücklich geworden. Bin gespannt auf Deine Erfahrung.

    Wenn Dir 60 Mal pro Sekunde mit Timer0 zu schnell ist, könnte man einen Zähler in der ISR hochzählen lassen und nur jedes sechstes Mal die komplette Routine durchlaufen lassen. Dann hat man zwar auch 60 Interrupts, wobei aber nur bei 10 pro Sekunde viel Zeit verbraucht wird.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Probleme mit ATTiny25 und Timer1
    Von Henry im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 26.11.2009, 20:24
  2. Timer1- Probleme mit timer Startwert
    Von C2H6O im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 13.11.2009, 23:07
  3. Timer1 bei ATTiny45 Probleme
    Von ScorpionXIII im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 08.11.2007, 15:53
  4. Timer1 Uhr
    Von orph im Forum PIC Controller
    Antworten: 9
    Letzter Beitrag: 16.09.2006, 15:44
  5. Probleme Mega16 Timer1 Interrupt
    Von skyrider im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 16.04.2005, 14:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen