-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: BASCOM Timer1: error 46: assignment error

  1. #1
    Heiner Schmitz
    Gast

    BASCOM Timer1: error 46: assignment error

    Hallo zusammen,
    das ist möglicherweise eine Anfängerfrage, ich kann aber leider selbst
    keine Lösung finden.
    Hier als erstes das Problem-Programm aus einem BASCOM-Beispiel, daß ich
    auf das nötigste gekürzt habe:

    '################################################# #############
    ' Dieses Demo läßtz eine LED in dem von ihnen gewählten
    ' Timer-Rhytmus blinken
    '################################################# #############

    $regfile = "m16def.dat"
    '$regfile = "at26def.dat"
    $crystal = 8000000

    'Hier wird der Timer und der Teiler festgelegt
    Config Timer1 = Timer , Prescale = 64

    Config Pina.2 = Output 'dritte LED auf als Ausgang programmiert
    Led3 Alias Porta.2

    On Timer1 Timer_irq

    Const Timervorgabe = 49911 'Einstellung für ca. 1 Sekunde

    Enable Timer1
    Enable Interrupts

    Do

    'Hier könnte Ihr Hauptprogramm stehen
    Loop

    Timer_irq:
    Timer1 = Timervorgabe
    Toggle Led3
    Return

    '################################################# #############

    nun das Problem: Wenn ich
    $regfile = "m16def.dat"
    ersetze durch:
    $regfile = "at26def.dat"
    ,was meinem Controller entsprechen soll, dann erhalte ich beim Syntax-Check in der Zeile:
    Timer1 = Timervorgabe
    den Fehler: error 46: assignment error (Timer1: 0 49911: 112)
    ?????????????????????????????????????????????????? ???????????
    Der Fehler tritt nicht auf, wenn ich das Regfile für den
    Tiny26 nehme und Timer1 durch Timer0 ersetze. Was ist beim Tiny26
    und timer1 anders als bei anderen Controllern oder mache ich etwas
    grundsätzliches falsch?
    Danke für Eure Hilfe,
    Heiner

  2. #2
    Gast
    Kann zwar kein Basic aber ist bei dem Ding überhaupt ein 16 Bit Timer eingebaut? Sonst wäre es logisch, dass das Schreiben von 49911 auf ein Byte unmöglich ist.

  3. #3
    Gast
    Und ich hasse diesselben Postings in zig Foren ...
    http://www.mikrocontroller.net/forum...12590.html#new

  4. #4
    Gast
    na gut, die Sache mit dem 16Bit-Timer ist erledigt. Kann es vielleicht sein, daß ich Bascom erst einmal beibringen muß, daß es sich bei Timer1 um einen 8-Bit-Timer handelt? Denn auch wenn ich einen 8-Bit-Wert lade, ist immer noch das gleiche Prob vorhanden. Normalerweise sollte das doch in der def.dat definiert sein oder?
    Hallo "Gast", kann ich was dafür, daß Du in allen möglichen Foren rumtobst?

  5. #5
    Gast
    Was hast du denn für einen Controller? at26def.dat sagt mir nix

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Und ich hasse diesselben Postings in zig Foren ...
    http://www.mikrocontroller.net/forum...12590.html#new
    Und warum? Ist doch dein persönliches Problem, wenn du in mehreren Foren mitliest.
    Ich habe nicht die Zeit regelmässig zig Foren zu lesen und zu vergleichen und bin deswegen froh, wenn möglichst viele Fragen hier gestellt und beantwortet werden.
    Könnte mir vorstellen, dass es einige Leute auf mikrocontroller.net ähnlich sehen.

    Davon mal abgesehen kann es eigentlich nie Schaden sich zu einer Frage oder einem Problem möglichst viele verschiedenen Meinungen einzuholen - im Prinzip machst du das ja wohl selber, wenn du verschiedene Foren parallel liest.
    Wenn du zwei Zeitungen liest oder zwei unterschiedliche Nachrichtensendungen ansiehst, wärs wohl auch etwas viel verlangt, dass die sich untereinander absprechen und dir keine Doubletten zumuten.

  7. #7
    Gast
    es handelt sich um einen Atmel Tiny26. Kann es vielleicht sein, daß ich bei diesem Tiny ein anderes Register setzen muß um Timer1 voreinzustellen? Ich hab mich schon im Manual schummrig gelesen. Auch kannn ich zum Tiny26 leider keine Programmbeispiele finden, die mir zeigen können wie es richtig gemacht wird...

  8. #8
    Gast
    Ich denke der Tiny26 hat vermutlich keinen 16 Bit Timer. Somit kannst du den Source so nicht verwenden. So wie es aussieht hast du das Programm mit dem Tool RN-AVR generiert. Wähle da mal 8 Bit Timer und generiere Code neu, dann sollte es auch auf Controllern ohne 16 Bit Timern gehen.

  9. #9
    Gast
    Der Mega16 besitzt einen 16 Bit Timer!
    Nach Deinen Konstanten und meinen Berechnungen zu urteilen wird der Interrupt aber alle 0,12 Sekunden ausgelöst.
    Probiers mal mit:
    "Prescale = 256"
    und
    "Timer1 = 34285" (als ersten Befehl in die Interruptroutine schreiben!!!)

    ..der Tiny26 hat..keinen 16 Bit Timer
    Jepp! Er hat zwar zwei aber (leider) nur mit je 8 Bit.

  10. #10
    Heiner Schmitz
    Gast
    Nach Deinen Konstanten und meinen Berechnungen zu urteilen wird der Interrupt aber alle 0,12 Sekunden ausgelöst.
    stimmt, so hatte ich das beabsichtigt, genauer gesagt sollten es 0,125 Sekunden sein und damit gleichzeitig der kürzeste Interrupt-Zyklus um den Programmablauf möglichst wenig aufzuhalten.
    "Prescale = 256"
    und
    "Timer1 = 34285"
    Hab ich getestet, bringt leider auch keinen Erfolg. Ich denke fast Timer1 funktioniert nur im Zusammenhang mit 16-Bit-Timern. Also werde ich wohl mit 8 Bit leben müssen (0,033 Sekunden). Kann es sein, dass TCNT1 das Register ist über daß ich 8-Bit-Timer1 auslesen und einstellen kann?
    Damit Danke an alle, die sich sehr bemüht haben, vielleicht bin ich auch irgendwann mal so weit hier helfen zu können.

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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