ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

Heinz
Benutzer
Avatar
Gender:
Age: 71
Homepage: brotz.ch
Posts: 42
Registered: 04 / 2018
Subject:

ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

 · 
Posted: 04.05.2022 - 20:22  ·  #1
hallo
Beschäftige mich mit der ATtinyXX17 Serie. Konkret mit dem ATtiny3217.
Das ganze scheint recht gut zu funktionieren. Compiler..Programmer...
Möchte nun den Scheduler aktivieren.
Da sind offenbar noch keine der aktuellen Timer... implementiert.
Wollte die allgemeine Form verwenden. Das sperrt aber der Compiler:
SysTick = 1,user; // gibt den Error: Timer0 or Timer2 expected
Merlin könntest Du das möglichst rasch beheben? Sollte unbedingt was machen können.

Nach dem vielen Probieren habe ich nun das Problem, dass ich nicht mehr assemblieren kann.
Bis vor diesen Versuchen hat das so funktioniert.
Define
//ProcClock = 20000000; {Hertz}
SysTick = 10;
StackSize = 100, iData;
FrameSize = 100, iData;
Nach dem Probieren erhalte ich im Assembler den Error:
Und ich kann nichts mehr machen !!!
Wird da irgendwo was im *.ppro oderen anderen Files abgelegt ???
.LINE 159
CLI
CLR _ACCA
LDS _ACCA, SysTickTime
OUT TCNT0, _ACCA
IN _ACCA, tifr
ANDI _ACCA, FFFFFFFFh
OUT tifr, _ACCA
LDI _ACCA, 1 SHLB IntFlag
OR Flags, _ACCA
SEI
.LINE 160
LDI _ACCA, 1 SHLB IntFlag
OR Flags, _ACCA
SEI

Allgemeines Problem:
Jeder uP hat ja in gewissen Bereichen seine Besonderheiten wie z.B der SystemClock...
Ideal wäre natürlich man hätte pro uP eine kleine Zusammenstellung
z.B welche Timer...sind für den SysTick vorgesehen...
Eine einfache Lösung könnte doch sein: das *.dsc File dazu verwenden.
Habe mal das *.dsc File genauer angeschaut.
Offenbar stören Kommentarzeilen nicht:
; PORTB
; evt. mit 'alter' Notation
DDRB=$420
DIRSETB=$421
Frage an Rolf: gibt es noch weitere Möglichkeiten um noch etwas besser zu Kommentieren ?

Habe gesehen, dass beim uTiny3217.. weitgehend die alten Mnemonics verwendet werden.
D.h diese Begriffe weichen immer mehr vom Manual ab, was sehr mühsam ist.
Mein Vorschlag wäre auch hier, das ganze den Manuals anzupassen.
Habe mal einen Teil für mich so umgeschrieben...
Ich bin zwar auch kein Freund von Underline....Underline...
Aber eine gewisse optische Trennung wäre, so glaube ich, auch nicht schlecht.
Habe gesehen, dass man beides zusammen verwenden kann: alt und neu.
Der Compiler frisst beides. Man kann auch beide Begriffe gleichzeitig verwenden.
alt: DDRB=$420
neu: PORTB_DIR = $420
Wenn man weiss, welche Mnemonics vom Gesamtsystem nicht verändert werden dürfen,
wäre ein solcher Wechsel ohne weiteres möglich.
Oder noch schöner wäre ein Erweiterung, falls alt und neu verwendet werden muss:
DDRB= PORTB_DIR = $420 ; oder // für weiteren Kommentar :)

N.B habe noch ein paar Fehler entdeckt...

; neue Notation gemäss Manual
; PORTB_DIR = $420 ; Kommentar hier geht nicht => Fehler
;
PORTB_DIR = $420
PORTB_DIRSET = $421
PORTB_DIRCLR = $422
PORTB_DIRTGL = $423
PORTB_OUT = $424
PORTB_OUTSET = $425
PORTB_OUTCLR = $426
PORTB_OUTTGL = $427
PORTB_IN = $428
PORTB_INTFLAGS = $429
PORTB_PIN0CTRL = $430
PORTB_PIN1CTRL = $431
PORTB_PIN2CTRL = $432
PORTB_PIN3CTRL = $433
PORTB_PIN4CTRL = $434
PORTB_PIN5CTRL = $435
PORTB_PIN6CTRL = $436
PORTB_PIN7CTRL = $437

; PORTC
DDRC=$440
DIRSETC=$441
DIRCLRC=$442
DIRTGLC=$443
PORTC=$444
OUTSETC=$445
OUTCLRC=$446
OUTTGLC=$447
PINC=$448
INTFLAGSC=$449
PIN0CTRLC=$450
PIN1CTRLC=$451
PIN2CTRLC=$452
PIN3CTRLC=$453
PIN4CTRLC=$454
PIN5CTRLC=$455
PIN6CTRLC=$456
PIN7CTRLC=$457
; gemäss Manual
PORTC_DIR = $440
PORTC_DIRSET = $441
PORTC_DIRCLR = $442
PORTC_DIRTGL = $443
PORTC_OUT = $444
PORTC_OUTSET = $445
PORTC_OUTCLR = $446
PORTC_OUTTGL = $447
PORTC_IN = $448
PORTC_INTFLAGS= $449
PORTC_PIN0CTRL= $450
PORTC_PIN1CTRL= $451
PORTC_PIN2CTRL= $452
PORTC_PIN3CTRL= $453
PORTC_PIN4CTRL= $454
PORTC_PIN5CTRL= $455
PORTC_PIN6CTRL= $456
PORTC_PIN7CTRL= $457
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 59
Posts: 956
Registered: 09 / 2007
Subject:

Re: ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

 · 
Posted: 04.05.2022 - 20:34  ·  #2
Hi Heinz,
wer mit Xmega oder Samdxx ARM gearbeitet hat kennt die neuen mächtigeren Befehle !
DDRB=$420
DIRSETB=$421 <<<<<<

Die gehören zum 1x1 der jeweiligen MCU Generation.
Solltest einfach lernen, statt was drüber zu basteln :)

miparo
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1373
Registered: 03 / 2005
Subject:

Re: ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

 · 
Posted: 04.05.2022 - 22:25  ·  #3
Hi Heinz.

You will find that a lot of the tiny devices are not yet working.

Send me your project and I will look at it and comment on it further.

Regards
Avra
Schreiberling
Avatar
Gender:
Location: Belgrade, Serbia
Age: 53
Homepage: rs.linkedin.com/in…
Posts: 653
Registered: 07 / 2002
Subject:

Re: ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

 · 
Posted: 05.05.2022 - 10:08  ·  #4
Quote by Heinz

SysTick = 1,user; // gibt den Error: Timer0 or Timer2 expected

Have you tried something like
Code
SysTick = 1, Timer0;

or
Code
SysTick = 1, Timer2;
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1373
Registered: 03 / 2005
Subject:

Re: ATtiny3217...Serie *.dsc, SysTick=10,user geht nicht...

 · 
Posted: 05.05.2022 - 15:43  ·  #5
Hi Avra.

For UPDI devices (Tiny and Mega) Systick has only been implemented with RTC, so Timer0 and Timer2 will not work. The error message is wrong.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   89   103 · Page-Gen-Time: 0.026481s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI