-         

Ergebnis 1 bis 9 von 9

Thema: Verwirrung.....Timer von Mega16 mit Bascom

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Alter
    38
    Beiträge
    188

    Verwirrung.....Timer von Mega16 mit Bascom

    Anzeige

    Hallo, habe einen ATMEGA16 und wollte mit diesem relativ zeitgenau eine Messung abwickeln. Leider mag der Compiler die Zeile Enable Timer1 nicht und antwortet mit einem Error 85: Unknown interrupt source COUNT<>3.

    Die Konfig habe ich nach RN Wissen vorgenommen (Timer im 1 Sek. Takt).Bascom ist 1.11.8.7
    Gibt es hier irgendwelche erkenntnisse?
    Anmerkung: So genau habe ich das Datenblatt vom Mega noch nicht studiert, ich mache ein paar Analogwerterfassungen damit, nicht daß der Timer irgendwie in Konflikt mit den ADs steht.......?

    Gruß

    Jens

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Schreib mal den kompletten Code hier rein.
    Ein vom Compiler angegebener Fehler muss nicht immer in der bemeckerten Zeile sein. Kann sich auch um nen Folgefehler von weiter oben handeln.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Alter
    38
    Beiträge
    188
    Hallo Jaecko,

    hier der Code.....

    Code:
    $regfile = "m16def.dat"
    $crystal = 8000000
    
    'Konfigurieren von Timer 1
    Config Timer1 = Timer , Prescale = 256
    On Timer1 Timer_irq
    Timer1 = 34286
    Enable Timer1
    Enable Interrupts
    
    Gruß
    
    Jens
    
    
    'Konfiguration der Displayports
    
    
    
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    Config Lcdbus = 4
    Config Adc = Single , Prescaler = , Reference = Avcc
    Start Adc
    Config Portb.0 = Output
    
    
    
    Dim Anain1 As Integer                                       'Variablendefinition Analog In als Integer (0-1023)
    Dim Anain2 As Integer                                       ' generated. Take care that the chip supports all fuse bytes.$PROG &HFF,&HE1,&H99,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &HFF,&HE1,&H99,&H00' generated. Take care that the chip supports all fuse bytes.Dim Anain2 As Integer
    Dim Anain3 As Integer
    Dim Anain4 As Integer
    Dim Anain5 As Integer
    Dim Zeit As Integer
    
    
    Dim Multipli5 As Single
    Dim Stunde As Single
    
    Dim Strom As Single
    Dim Ladung As Single
    Dim Ladunggesamt As Single
    Dim Amperesekunden As Single
    
    Dim Ergebnis As String * 10                                 'Definition der Ausgabevariable als 10 stelliger String
    Dim Ergebnis2 As String * 10
    Dim Ergebnis3 As String * 10
    Dim Ergebnis4 As String * 10
    Dim Ergebnis5 As String * 10
    Dim Stromfluss As String * 10
    
    
    Cursor Off
    Cls
    
    'Konstanten
    Zeit = 0
    Ladung = 0
    Ladunggesamt = 0
    Stunde = 3600
    
    Do
    Portb.0 = 1
    Waitms 50
    Portb.0 = 0
    Waitms 50
    Zeit = 1
    Cursor Off
    Loop
    
    End
                                                     'Endlosschleife
    
                'Abfrage der ADC´s und Parametrierung des Wertebereichs
    
    Timer_irq:
    Timer1 = 34286
    Anain5 = Getadc(4)
    Multipli5 = 152 / 1023
    Multipli5 = Multipli5 * Anain5
    Strom = Multipli5
    Ladung = Strom * Zeit
    Ladung = Ladung - 1.0399
    Ladung = Ladung
    Ladunggesamt = Ladunggesamt + Ladung
    Amperesekunden = Ladunggesamt / Zeit
    Amperesekunden = Amperesekunden / 3600
    Amperesekunden = Amperesekunden
    Ergebnis5 = Str(amperesekunden , 5)
    Ergebnis5 = Left(ergebnis5 , 5)
    Stromfluss = Str(ladung , 5)
    Stromfluss = Left(stromfluss , 5)
    Locate 1 , 6
    Lcd Ergebnis5
    Locate 2 , 6
    Lcd Stromfluss
    Return
    
                                                              'Ende der Endlosschleife

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Schau dir mal diese Zeile an:
    Code:
    Config Adc = Single , Prescaler = , Reference = Avcc
    Da fehlt die Zuweisung, welchen Wert der Prescaler haben soll.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Alter
    38
    Beiträge
    188
    Ja, sorry, der ist aber 256, habe ich vergessen zu schreiben, der Fehler bleibt aber.....

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Wenn ich deinen Code kompiliere, kommt nur eine Fehlermeldung, dass der Prescaler mit 256 nicht geht. Max für ADC ist 128.
    Du meinst glaube ich den Timer Prescaler, Jaecko spricht vom ADC.
    Den kannst du übrigens auch auf Auto stellen.

    Gruß

    Rolf

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Alter
    38
    Beiträge
    188
    Also der ADC Prescaler steht auf Auto, der prescaler für den timer auf 256. Das sollte gehen, aber ich habe mir sagen lassen, daß solche Meldungen typisch für Bascom sind. Die Version 1.11.7.4 will den Code auch nicht, allerdings habe ich da noch ganz andere Fehlermeldungen.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Der Prescaler des Timers ist hier nicht wichtig.
    Wenn in der von mir angegebenen Zeile (Config Adc = Single , Prescaler = , Reference = Avcc) hinter dem = von Prescaler auch was eingetragen ist (z.B. Auto), dann geht der Code bei mir ohne Fehler.
    #ifndef MfG
    #define MfG

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    1.11.90 kompiliert ohne Fehler, wenn ADC Prescaler auf Auto steht.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Berechtigungen

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