-         

Ergebnis 1 bis 9 von 9

Thema: hallo geht das schneller?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.03.2007
    Beiträge
    57

    hallo geht das schneller?

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    das waitms 30 weglassen.
    W direkt versenden, die Umrechung im Empfänger (PC?) erledigen lassen. Divisionen mit 16bit-Zahlen ziehen viel Rechenzeit.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.03.2007
    Beiträge
    57
    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.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    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.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Mann kann auch auf nen Mega88 umsatteln, der ist Layoutgleich und geht bis 20MHz.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    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

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von robocat
    der a168 könnte ja gehen, da müsste ich nur die PWM ausgänge woanders hinverlegen, oder?
    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.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.03.2007
    Beiträge
    57
    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?

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    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

Berechtigungen

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