-
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
-
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
-
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
-
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
-
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
-
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.