das waitms 30 weglassen.
W direkt versenden, die Umrechung im Empfänger (PC?) erledigen lassen. Divisionen mit 16bit-Zahlen ziehen viel Rechenzeit.
hi leute ich schreib mal den quellcode....hab nen atmega8 und passendes board mit RN-Funk ...hab allerdings ein problem mit der anzahl der messwerte pro sekunde.. nun meine frage geht das irgendwie schneller?
Code:$regfile = "m8def.dat" $hwstack = 82 $framesize = 68 $swstack = 68 $crystal = 16000000 'Quarzfrequenz $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Avcc Timsk = &B00100101 Mcucr = &B00001010 Gicr = &B11000000 Sreg = &B10000000 Tccr1b = &B11000010 Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Config Pind.0 = Input Config Pind.2 = Input Config Pind.3 = Input Const Ref = 4950 / 1023 Const Zei = 1 / 0.0156 Dim A As Integer Dim I As Integer Dim Volt As Long Dim D As Long Dim W As Long Config Single = Scientific , Digits = 1 On Timer0 Aus On Int0 Ir0 'Portd pin3 Config Timer1 = Timer , Capture Edge = Rising , Noise Cancel = 0 , Prescale = 1024 Config Timer0 = Timer , Prescale = 1024 Stop Timer1 Stop Timer0 Dim Test As Integer Do For I = 0 To 3 Start Adc W = Getadc(i) Volt = W * Ref Print ; I ; " " ; Volt Waitms 30 Next I 'D = D * Zei Loop End Aus: A = A + 1 Return Ir0: Stop Timer1 D = Timer1 Timer1 = 0 Print "4 " ; D Start Timer1 Return
das waitms 30 weglassen.
W direkt versenden, die Umrechung im Empfänger (PC?) erledigen lassen. Divisionen mit 16bit-Zahlen ziehen viel Rechenzeit.
die wartezeit von 30ms sind (ausgetestet) mit meiner progammvariante mindestens nötig, damit keine daten veschluckt werden bei der übermittlung via rn funk. wenn jemand da noch ne variante als alternative hat oder ne variante die ad wandlung zu beschleunigen dann wäre das super.
Muss man startadc vor jeder Wandlung aufrufen, oder reicht auch einmal am Anfang?
Am meisten dürfte es aber bringen, möglichst viele Aufgaben auszulagern. Also Umrechung in Volt extern, Daten nicht als Ascii senden, sondern als einfache Bytes.
Wie schnell muss es werden?
Um das letzte aus dem AVR herauszuholen, käme eventuell noch Assembler in Betracht.
Mann kann auch auf nen Mega88 umsatteln, der ist Layoutgleich und geht bis 20MHz.
hi,
entschuldigt die zwischenfrage, ist reichlich offtopic, aber wollte nicht extra einen thread aufmachen:
ich habe hier eine schaltung mit nem a8, und jetzt wird mir der speicher (flash) langsam knapp. gibt es einen annähernd pin-gleichen µC, den ich stattdessen verwenden kann? der a168 könnte ja gehen, da müsste ich nur die PWM ausgänge woanders hinverlegen, oder?
gruesse
Den M168 kannst du nehmen. An den PWM-Ausgängen müsstest du auch nur die Software etwas anpassen. Der m168 hat an allen Pins PWM, wo der M8 sie auch hat.Zitat von robocat
hi nochmal
wie issn das mit dem waitms ? funktionieren während der wartezeit die interupts oder wäre es besser einfach statt wartezeit ne entschprechend lange leere for schleife rumrasseln zu lassen?
Während der Wartezeit funzen die Interrupts da der Atmel ja nichts anderes macht als sinnlos Register raufzuzälen um die Zeit rumzubekommen. Die Zeit die der Interrupt zur Abarbeitung braucht kommt zur Wartezeit mit dazu, also Gesammtzeit = Waitms + Interruptzeit
MfG
Lesezeichen