closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

beim ATtiny841 geht "SysTimer" nicht



Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 20.09.2019 - 17:29   -  
Hallo,

im Simulator kann man es nachvollziehen.
Hier ein Demo:
Code

program ATtiny841_Test_1;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

// Device = Tiny44A, VCC=3.3;
Device = Tiny841, VCC=3.3;

Define_Fuses
  Override_Fuses;
  COMport    = USB;
  LockBits0  = [LockBit1];                       // Leseschutz ein.
  FuseBits0  = [CKSEL0, CKSEL2, CKSEL3, SUT0];   // Oszillator=intern 8MHz.
  FuseBits1  = [BODLEVEL1];                      // Reset bei 2,5-2,9V.
  FuseBits2  = [];
  ProgMode   = SPI;
  ProgFuses  = true;
  ProgLock   = true;
  ProgFlash  = true;
  ProgEEprom = true;

Import SysTick;

Define
  ProcClock      = 4000000;       {Hertz}
  SysTick        = 1;             {msec}
  StackSize      = $0010, iData;
  FrameSize      = $0010, iData;
//--------------------------------------------------------------;
implementation
//--------------------------------------------------------------;
{$IDATA}
var
  Timer_1    : SysTimer;
//--------------------------------------------------------------;
procedure pTimer_1;
begin
  If IsSysTimerZero(Timer_1) Then
    SetSysTimer(Timer_1, 100);
  EndIf;
end pTimer_1;
//--------------------------------------------------------------;
{ Main Program }
{$IDATA}
begin
  mDelay(100);          // 100 msec warten.
  CLKPR:=  %1000 0000;  // Clock Prescaler Change Enable.
  CLKPR:=  %0000 0001;  // Clock Prescale = 4MHz.
  EnableInts;
  loop
    pTimer_1;
  endloop;
end ATtiny841_Test_1.


Weiß jemand sonst noch etwas was nicht geht?
Habe vom ATtiny44A auf den ATtiny841 gewechselt.

Gruß
Mathias
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 20.09.2019 - 17:50   -  
Nachtrag:
Compiler Rev: 5.09.51
Date: 190517
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5472
Registered: 03 / 2002
Homepage Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 20.09.2019 - 18:02   -  
Hallo Mathias,

da gab es dieses Jahr mal ein AVRco update bez. der Tiny Timer.
Glaube ich wenigstens.
Mal ins release Info schauen.

rolf
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 20.09.2019 - 18:25   -  
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 23.09.2019 - 20:38   -  
Habe die SysTimer umgestrickt auf OnSysTick.
OnSysTick geht auch nicht.
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 24.09.2019 - 03:08   -  
Habe probiert den Timer0 zu einem Interrupt zu bewegen.
Leider vergebens.
Mit dem ATtiny44A geht's wiederum.
Kann mir da jemand erklären?

Danke

Code

program ATtiny841_Test_2;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

// Device = Tiny44A, VCC=3.3;
 Device = Tiny841, VCC=3.3;

Define_Fuses
  Override_Fuses;
  COMport    = USB;
  LockBits0  = [LockBit1];                       // Leseschutz ein.
  FuseBits0  = [CKSEL0, CKSEL2, CKSEL3, SUT0];   // Oszillator=intern 8MHz.
  FuseBits1  = [BODLEVEL1];                      // Reset bei 2,5-2,9V.
  FuseBits2  = [];
  ProgMode   = SPI;
  ProgFuses  = true;
  ProgLock   = true;
  ProgFlash  = true;
  ProgEEprom = true;

Import ;

Define
  ProcClock      = 4000000;       {Hertz}
  StackSize      = $0010, iData;
  FrameSize      = $0010, iData;
//--------------------------------------------------------------;
implementation
//--------------------------------------------------------------;
{$IDATA}
var
  Timer0_OVF        : byte;
//--------------------------------------------------------------;
Interrupt Timer0;           // TIM0_OVF
begin
  inc (Timer0_OVF);
end;
//--------------------------------------------------------------;
procedure pInitTimer0;
begin
  TCCR0A:= %0000 0000;      // Sonderfunktion der Portpins ausschalten.
  TIMSK0:= %0000 0001;      // Timer/Counter0 Overflow Interrupt Enable.
  TCCR0 := %0000 0011;      // clk IO/64, Timer0 START.
end pInitTimer0;
//--------------------------------------------------------------;
{ Main Program }
{$IDATA}
begin
  CLKPR:=  %1000 0000;  // Clock Prescaler Change Enable.
  CLKPR:=  %0000 0001;  // Clock Prescale = 4MHz.
  pInitTimer0;
  EnableInts;
  loop
    nop;
  endloop;
end ATtiny841_Test_2.

go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 24.09.2019 - 18:38   -  
Hat jemand eine Idee wie man hier eine Art "SysTick" mit ca. 1 ms erzeugen kann?
go down go up
golf offline
Benutzer
Avatar
Gender: male
Location: GERMANY  Donauwörth
Age: 66
Posts: 156
Registered: 11 / 2009
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 25.09.2019 - 17:01   -  
Hallo Mathias,
sieht so aus als wenn keiner hier den Tiny841 nutzt, ich auch nicht. Vielleicht gehts ja mit einem normalen Timerinterrupt, was Du willst. Kann hier mangels dieser Hardware leider nichts testen.

golf
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 25.09.2019 - 17:27   -  
Der Tiny841 war nur ein schneller Notbehelf.
RS hatte ihn. Nun ist er leider schon auf allen Platinen drauf.

@alle
Man kann meine Beispielprogramme direkt bequem im Simulator testen.

Gruß
go down go up
Mathias offline
Benutzer
Avatar
Gender: n/a
Location: n/a  Stutensee
Age:
Posts: 230
Registered: 07 / 2003
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 08.10.2019 - 20:44   -  
Hallo,
gibt's neue Erkenntnisse den ATtiny841gangbar zu machen?

Die neuen Tinys mit Umschaltung auf 32,x kHz, DAC, UART, min. 2x 16bit Timer, guter Preis, ...
Habe Projektanfragen von Kunden, da würden die genau reinpasssen.
Gibt's Hoffnung?
go down go up
Merlin offline
Schreiberling
Avatar
Gender: male
Location: UNITED KINGDOM 
Age:
Posts: 878
Registered: 03 / 2005
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 09.10.2019 - 11:45   -  
@Mathias

I don't know if my crude timers idea would work for you. Obviously it may need tweaking...

https://forum.e-lab.de/topic.php?t=3686
Merlin.

:magic:

Software is a black art.
go down go up
Lschreyer offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age:
Posts: 471
Registered: 02 / 2007
Private message
Subject: Re: beim ATtiny841 geht "SysTimer" nicht  -  Posted: 12.10.2019 - 10:03   -  
Ich würde mir mal das .dsc file anschauen ob da alles korrekt ist.

Louis
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 14.10.2019 - 13:38