- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: problem mit interrupt timer!!!

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    27.06.2006
    Beiträge
    79
    Anzeige

    E-Bike
    bitte benutz für die zukunft die code-tags. beim lesen von so unformatiertem code bekomm ich augenkrebs

    wieso benutzt du weiterhin SIGNAL statt ISR?
    außerdem versteh ich nicht warum du die register mit konkreten werten füllst und dann noch eine order-verknüpfung reinmachst, das bringt überhaupt nichts. und benutz bitte keine magic numbers auch wenn ein kommentar dahinter steht.

    Code:
    TCCR0 |= (1 << CS01) | (1 << CS02);
    TIMSK |= (1 << TOIE0);
    wenn du den code nicht versteht frag nach oder schau im Wiki https://www.roboternetz.de/wissen/index.php/Avr-gcc

    ob der code so funktioniert kann ich nicht sagen. außerdem weiss ich nichteinmal mit welcher frequenz dein takt läuft.

    wie meinst du das mit den zeigern für register? ich benutz zum ansprechen meiner register nie ein zeiger. pointer werden z.B. benutzt um zeichenketten zu realisieren weil man unter C keine strings kennt.

    mfg blan

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    18.06.2007
    Beiträge
    8
    sie müssen verstehen, dass ich am freitag matura habe und mein lehrer diesen code so formuliert hat! jetzt will ich nicht großartig viel daran ändern!
    und mein takt ist 16MHz! und er hat auch gesagt das man pointer zum ansprechen von pins und registern benützt! also weis ich nicht genau!

    mfg

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    27.06.2006
    Beiträge
    79
    was ist denn nun die frage wie man den overflow alle 4096ms auslösen lässt oder warum er alle 4096ms auslöst?

    beim ersten sollte sich das doch mit ein wenig mathe ausrechnen lassen...

    mfg blan

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    18.06.2007
    Beiträge
    8
    wenn das stimmt wie ich den tccr gesetzt habe ist mir klar warum er alle 4096ms auslöst da dann alle 4096ms ein overflow stattfindet und somit die isr auslöst!

    denn 16000000/256=62500

    256/62500=4096ms!

    aber ich bin mir nicht sicher ob das programm so richtig ist wie ich es hier gepostet habe!

    mfg

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    27.06.2006
    Beiträge
    79
    du kannst doch eine zählroutine machen und sobald bis zu einem bestimmten wert gezählt wurde wird der entsprechende code ausgeführt und die zählveriable wieder auf null gesetzt. leider versteh ich den code nicht ganz.

    mfg blan

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    40
    Beiträge
    165
    Zitat Zitat von humma6
    am freitag matura
    Ich sehe schwarz (nicht zu ernst nehmen)

    Der Punkt zwischen 4 und 096 ist KEIN Tausendertrennzeichen, sondern so wie in allen Programmiersprachen ueblich ein Komma das wie ein Punkt aussieht. Das kann man auch am Code im Signalhandler erkennen!
    Also schmeiss deinen Vorteiler wieder raus, bzw aender den auf den richtigen Wert.


    Edit: Achja der Code ist trotzdem scheisse. Wenn man alle 10ms was ausfuehren will dann braucht man bei einem Interrupt alle 4.096ms ja minimum 3 Durchlaeufe, was dann schon wieder 12ms sind. Dann merkt man sich die 2ms und dann kommt der naechste Interrupt schon nach 2 Durchlaeufen also 8ms, der naechste dann wieder nach 12ms usw.

    Und ich ahne schlimmstes was noch an die Stelle "// user code here" kommen soll.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests