- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 11

Thema: Spannung regeln mit ADuc7026

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Das klingt doch von der Herangehensweise schon mal sehr gut. Deine Einschätzung zu der Verwendung von Interrupts und des nicht Vorhandenseins eines Pin-Interruptes stimme ich zu.
    Wie du nun selber gesagt hast, gibt es am dem Pin keinen Interrupt. Auch das PLA (siehe Datenblatt) scheidet aus, da P2.0 da nur aus Ausgang vorgesehen ist. Ergo muss da ein anderer Weg gefunden werden, die Pegelveränderung am Pin mitzubekommen. Hier kommt der Timer ins Spiel.
    Wie der Timer konfiguriert werden muss, ergibt sich aus der Anwendug des Timers. Aber soweit ist das Konzept ja noch nicht, das wird aber, der Weg ist richtig.

    Wie kommt man in den Interrupt?
    Deine Beschreibung zum Pin ist natürlich absolut korrekt. Beim Timer ist der Sachverhalt zwar etwas komplexer aber an sich analog dazu. Der Timer ist nichts anderes, als ein Zähler, der ein Ende hat (2^16=65535). Ist dieser Punkt erreicht, läuft der Timer über und es wird ein Interrupt erzeugt, sofern dieser aktiviert ist.
    Allgemein ist so, dass die Interrupts von der Hardware generiert werden und dann in den entsprechenden Handler gesprungen wird.

    Hilft dir das insbesondere zu b) weiter?

    Gruß Jannis

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    22.03.2014
    Beiträge
    5
    Zitat Zitat von durchgebrannt Beitrag anzeigen
    Wie kommt man in den Interrupt?
    Deine Beschreibung zum Pin ist natürlich absolut korrekt. Beim Timer ist der Sachverhalt zwar etwas komplexer aber an sich analog dazu. Der Timer ist nichts anderes, als ein Zähler, der ein Ende hat (2^16=65535). Ist dieser Punkt erreicht, läuft der Timer über und es wird ein Interrupt erzeugt, sofern dieser aktiviert ist.
    Allgemein ist so, dass die Interrupts von der Hardware generiert werden und dann in den entsprechenden Handler gesprungen wird.

    Hilft dir das insbesondere zu b) weiter?

    Gruß Jannis
    Das verwirrt mich etwas ;D. Im Grunde gesehen muss ich doch eine if-Abfrage machen und nach dem Zustand des Ports fragen. Wenn dieser den Zustand ändert, muss ich den Zählerstand auf Null setzen, bei der nächsten Zustandsänderung muss ich den Zählerstand speichern, bei erneuter Änderung des Eingangs erneut Zählerstand speichern (eine Periode durchlaufen) und zurück setzen, damit ich die nächste Periode erfassen kann.

    In diesem Fall würde ich doch nie ein Interrupt auslösen, wenn dieser nur bei Überlauf ausgelöst wird, da es sehr wahrscheinlich nicht so hoch zählen wird? Oder irre ich mich da?

    Ich meine ein Interrupt wird mir in diesem Fall nichts bringen. Ich will ja den Zählerstand immer bei Zustandsänderung ermitteln und bei Ende der Periode wieder zurück setzen.
    Ist meine Herangehensweise falsch? Müsste ich das anders lösen?

  3. #3
    Bei dem von dir vorgeschlagenen Verfahren, das sicher funktionieren würde, gibt es einen Haken.
    Pollst (dauerhaftes immer sich wiederholende Abfrage) auf den Pegel des Pins, hast du keine Prozessortakte mehr frei, um noch das CAN unterzubringen oder andere Aufgaben zu erledigen. Jetzt könnte man die Abfrage natürlich auch in eine große Schleife mit rein tun, die dann die anderen Aufgaben mit abarbeitet, dann ist aber der Zeitpunkt, wann der Pin überprüft wird, nicht mehr eindeutig.

    ----> in dieser Anwendung taugt das Konzept nicht.
    Anhaltspunkte, was dein Konzept können sollte:
    -Timerfunktion kommt drin vor
    -Der Überlaufinterrupt kommt drin vor
    -Die ISR(Interrupt Service Routine) enthält kein Polling

    Gruß Jannis

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    Das muss ich zustimmen, weil das einzige was paralell läuft, sind Timer und CPU. Paralelles Laufen von mehreren Tasks ist nur auf CPUs mit mehreren Kernen möglich. Sonst muss man Prioritäten setzen und in CPU alles nacheinander verarbeiten.

    Ich würde empfehlen vor echten Projekten mit einfachen 8- bzw. 16-bittigen µC die Grundlagen der Programmierung üben, weil mit 32-bittigen µCs es schweriger zu anfangen ist ._.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Der µC hat durchaus viele Module zu bieten, wie das PLA(Programmable Logic Array),die sind nur alle an dem Pin (P2.0) nicht verfügbar. Dem Designer des Boards könnte man in mancher Hinsicht gerne mal die Hand geben. Kein Capture-Mode möglich, PLA nicht einsetzbar, kein externer Interrupt auf dem Pin, das macht es nicht leichter
    Dazu stand der Chip nicht zur Auswahl, was das nicht unbedingt leichter macht^^. An sich ist ein 32-Bitter nicht anders als ein 8-Bitter, man muss nur deutlich genauer lesen, um nicht von der Menge an Möglichkeiten erschlagen zu werden.

    Gruß Jannis

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    22.03.2014
    Beiträge
    5
    Ich schaue mal wieweit mit dem von dir genannten Konzept komme. Komme die Tage auf jedenfall drauf zurück.

    - - - Aktualisiert - - -

    Ich stelle mir das ganze, grob, so vor.

    In der while() Schleife wird das CAN abgearbeitet, worauf ich jetzt nicht weiter eingehe, weil ich erstmal nur die Regelung (nach dem IU-Ladeverfahren) realisieren möchte.

    Per Interrupt gelange ich aus der while() Schleife in den Handler und führe dort eine Funktion aus, dessen Aufgabe die Erfassung des Tastgrades und die Regelung des Ausgangs ist.
    Danach Timer zurück setzen und weiter mit der while() Schleife.

    Muss nur noch in Erfahrung bringen, wie ich in dem Interrupt (in den ich per Timerüberlauf gelang) den Tastgrad bestimme.

  7. #7
    Der Ansatz geht in die richtige Richtung, hat aber noch einen wesentlichen Haken: Die Frequenz deines Trägersignals, dessen Tastgrad zu bestimmen möchtest, liegt nach deiner Angabe bei 133Hz. Dein Prozessor läuft mit einer Frequenz im Bereich von mehreren Megahertz. Dementsprechend kannst du das nicht mit den vorher genannten Punkten vereinigen, wenn du in einer ISR das Tastverhätnis bestimmen möchtest.

    Weiterhin halte ich es für nicht sinnvoll, die Aufgaben so strikt zu trennen. Nur mit der Erfassung bist du ja lange noch nicht fertig, die gemessenen Werte müssen noch in die Regelung mit eingerechnet werden. Dafür braucht es auch noch etwas Software, was sich aber an sich in Grenzen halten sollte, solange die Spannung nur konstant gehalten werden soll. Stichwort PID-Regler.

    So langsam sollten alle Bausteine für ein brauchbares Konzept hier im Thread aufgetaucht sein. Nun muss mal das Studentenhirn angestrengt werden und daraus etwas passendes gestrickt werden. Auf deine Lösung bin ich gespannt

    Gruß Jannis

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 29.06.2012, 17:20
  2. Mit PWM Spannung regeln von 0V bis 15V
    Von Ferdinand im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 03.12.2009, 07:54
  3. Antworten: 11
    Letzter Beitrag: 01.12.2008, 21:25
  4. Kleine Spannung nach oben regeln...
    Von rIdd3r im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 14.03.2007, 08:20
  5. Antworten: 13
    Letzter Beitrag: 01.02.2007, 09:34

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests