-
-
Erfahrener Benutzer
Robotik Visionär
Mit polling könnte man in C wohl auf einen Vorteiler von 2 runterkommen. In ASM wäre auch eine 1 möglich, aber da wird der AD wohl kaum noch was brauchbares geben.
Den zweiten Vorteil den der Compiler ohne ISR hat, ist das mehr daten in den Registern gehalten werden können. Außer dem Pufferspeicher sollte der Rest in den Registesrn bleiben können.
-
Erfahrener Benutzer
Robotik Einstein
tatsache, mit polling bekomm cih echt mehr werte ... ich dachte das interrupthandling wäre irgendwie hardwareseitiig etwas optimiert sodass das registersichern scheller geht oder so .... jaja optimismus und leichtglaube ... leider hab ich ein problem, mit der abfrage
if ((convert > 0) && (ADCSRA & (1<<ADIF)) )
scheint er mir trotz sofortigen
ADCSRA &= ~(1<<ADIF);
dennoch mehrmals dasselbe ergebnis aus dem register zu lesen, obwohl scheinbar kein neues hinterlegt wurde
EDIT: kann das was mit dem sample and hold zu tun haben ? ich habs mehrfach gelesen aber nciht gefressen was es damit auf sich hat
PS: immernoch freerunning mode PS 8
PPS: PS4 hat ganz hässliche ausrutscher drinne, PS2 sieht OK aus aber das ergebnis ist eher unzufreidenstellend .... PS 8 reicht für meine zwecke aber auch aus, nur hatte ich gehofft die schwebung zu eliminieren, bei PS 2 ist die quasi nicht vorhanden !!!
kann cih eigentlich die ISR Assemblermäßig optimieren ? wenn ja, wie ?
-
Erfahrener Benutzer
Roboter Genie
Die ISR kostet dich mindestens acht Zyklen für Stackpointer+SREG sichern. Du hast bei PS2 13*2 Takte für ALLES was du zu tun hast zur Verfügung.
Tatsächlich wirst du um Polling nicht herum kommen.
Hast du mal das Datenblatt gelesen? Du löschst das ADIF-Bit, indem du eine EINS drauf schreibst.
ADCSRA |= (1 << ADIF)
mfG
Markus
-
Erfahrener Benutzer
Robotik Einstein
scheiii.... ja stimmt das war ja immer das hinundhergedrehe mit 1 und 0 mein fehler danke
-
Erfahrener Benutzer
Robotik Visionär
Für ein reines ASM programm könnte das noch per ISR gehen. Da kann man extra Register reservieren, braucht also das RAM nur noch für die Daten. Die meiste Rechenzeit wird zwar für den ISR overhead draufgehen, aber das eigentliche kopieren der daten braucht auch nur ganz wenige Zyklen. Allerdings wird da wirklichnicht mehr viel Rechenzeit übrigbleiben und man kann besser polling nehmen.
-
Erfahrener Benutzer
Robotik Einstein
polling brachte 1 a ergebnisse, PS 4 ... naaaaaja .... PS 2 ...... ganz ok, wenn man extremwerte mal rausfiltert
PS 8 ist echt die schmerzgrenze für den ADC, gott ehy (sry für die unchristliche bemerkung) die schwebung nervt echt tierisch, aber ES GEHT! ^_^
wieder so ne "fixe idee" die ich abhaken kann, bleiben nur noch 3 auf der liste (die software für die grafische auswertung ödet mich grad an zu schreiben, ich bleib erstmal bei meiner excel lösung XD)
ich freu mich dass es dieses forum gibt
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen