PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom BeispielCODE - Timer auslesen - Fehlermeldung?!?



0tes_Gesetz
26.09.2005, 09:52
Hi.

Hab ein neues Problem und seh keine Möglichkeit das selber gelöst zu bekommen.

Ziel: den aktuellen Wert des Timers auslesen..

BASCOM Ver. 1.11.7.9 (Compiler auch 1.11.7.9) - die DEMO.


$regfile = "At26def.dat" 'ATtiny26 für Compiler auswählen
$crystal = 11059200 'Frequenz des externen Quarz-Oszilators in Hz

Ddra = &B00000000 'PortA -> Pins als Input(=0) oder Output(=1)
Ddrb = &B00000000 'PortB -> Pins als Input(=0) oder Output(=1)

'----- ab hier eingefügter CODE aus BASCOM-Hilfe zu Timer1 (Kommentare gelöscht) ------

Dim W As Word
Config Timer1 = Timer , Prescale = 1024

'You can read or write to the timer with the COUNTER1 or TIMER1 variable
W = Timer1
Timer1 = W


Wenn ich das nun testen lasse (Syntax Check) kommt folgende Fehlermeldung für die beiden letzten Zeilen:
Error : 242 Line : 33 Source variable does not match the target variable [ 0|TIMER1] , in File : C:\...\Test.bas
Error : 46 Line : 34 Assignment error [TIMER1: 0 W: 6] , in File : C:\...\Test.bas

Hat da jemand ein Workaround?

Eher nebensächlich: beim Test kommt auch immer eine Meldung, dass ein File nicht gefunden wird.. gibts da auch ne Idee oder ein Workaround?

Gruß und vielen Dank
Nico

PicNick
26.09.2005, 10:26
Bis du sicher, daß der Tiny auch einer Timer1 hat ?

0tes_Gesetz
26.09.2005, 11:03
Laut Atmel Datenblatt schon...

S. 3:
"two 8Bit Timers/Counters.."

In den Features wird einmal 1 normaler Timer erwähnt und dann noch ein High-Speed Timer..

Im weiteren werden die dann Timer0 und Timer1 genannt..

Was mich jetzt stutzig macht - wo du es gerade ansprichst - dass in den Pinouts nur INT0/T0 verzeichnet ist und INT1/T1 nicht?!?..

Lustig..
Habs jetzt mal mit Timer0 durch laufen lassen und es geht!..

Und wenn ich nun aber noch einen weiteren Counter brauch, wo nehm ich den her?..

Mist, muß ich jetzt den Timer0 universell auslegen und alles da dran hängen?!... :-(

Danke erstmal.
Wobei mich schon wundert, dass es eigentlich 2 Timer geben sollte - laut Datenblatt - und wohl doch nur einer da ist. >:-(

Wie bekomm ich den anderen inklusive interner Interrupts (Overflow)?

Gruß
Nico

26.09.2005, 11:06
Hallo

Beide TIMER im Tiny 26 sind 8 Bit breit.

MFG
Dieter

0tes_Gesetz
26.09.2005, 11:09
Ach so, den 2ten Timer inklusive Overflow bräuchte ich für die SW-UART, da ich das Ding über USI nicht selber zum laufen krieg und wohl auch kein ASM-Code dafür existiert, sondern nur C-CODE.

Gruß
Nico

0tes_Gesetz
26.09.2005, 11:17
Beide TIMER im Tiny 26 sind 8 Bit breit.

Hi.

Kann ich den 2ten - also Timer1 - dann auch genau so mit Interrupt für SW-UART verwenden wie den Timer0?
Das auslesen des Wertes des Timers bräuchte ich ja nicht, Hauptsache der leifert mir ein Interrupt für UART..

Gruß
Nico

26.09.2005, 18:02
Hallo

Ja, auch mit Timer1 kannst du einen Overflow Int bekommen. Schöner geht das aber in deiner Anwendung bestimmt mit dem Compare Match Int des Timer1.


MFG
Dieter

0tes_Gesetz
26.09.2005, 21:37
Danke, werde mich damit auseinandersetzen und sehen, dass ich das hinbekomme..

Ist schon viel Wert, wenn man ne Richtung bekommt in der man laufen soll, wenn man den Wald vor lauter Bäumen nicht sieht ;-)

Danke und Gruß
Nico