PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit ATtiny15L und Bascom, es fehlt die tiny.lib



Gerhard
20.04.2005, 10:54
Moin, Moin,
Ich bin z.Zt. dabei mich mit dem ATtiny15L und Bascom-Demo zu befassen.
Da der Tiny15 keinen SRam hat, habe ich jetzt Probleme Variablen zu definieren.

Definition mit "AS Iram" wird vom Compiler zwar akzeptiert,
jedoch sind die Var. nicht verwendbar.

Unter der Bascom-Hilfe zum Schlüsselwort "$Tiny" wird auf eine Library "tiny.lib" verwiesen.

Wo bekomme ich diese lib, in meiner (aktuellen)Demo ist sie nicht enthalten, oder gibt es sie nur zur Vollversion??

Auf der MCS Electronic Seite habe ich auch schon gesucht aber
keinen Hinweis gefunden.

mfg Gerhard

20.04.2005, 11:53
Vielleicht solltest du "as Eram" probieren, wenn du den EEprom benutzen möchtest ;)

Gerhard
20.04.2005, 12:17
... nein, wollte nicht den EEprom nutzen. Habe irgendwo in der Help gelesen
das Iram bedeutet den Stack nicht im SRam unterzubringen sondern im Flash.

Das EEprom überlebt ja leider nur eine endliche Anzahl von Schreibvorgängen.

mfg Gerhard

Werner_Just
20.04.2005, 19:52
Hallo Gerhard,



... nein, wollte nicht den EEprom nutzen. Habe irgendwo in der Help gelesen
das Iram bedeutet den Stack nicht im SRam unterzubringen sondern im Flash.
Dir ist aber schon klar, daß der Flash um rund den Faktor 10 eher aufgibt als das EEProm?

Ich hab keine Ahnung ob das überhaupt geht, aber unabhängig davon eine gute Idee ist das sicher nicht.

Zu IRAM finde ich in der BACOM Help nur was unter Fehlercodes und eben das $TINY. Imo interprtierst Du das was zu $Tiny in der Hilfe steht, aber auch falsch.
- Mit $Tiny wird überhaupt kein Stack verwendet.
- Variablen werden direkt in den Registern gespeicher.

Note that the generated code is not yet optimized for the tiny parts. The $tiny directive is just a start of the tiny parts implementation!
No support is available for this feature until the tiny.lib is implemented.

Heiß soviel $tiny existiert bereits, zu benutzen ist es aber erst wenn die tiny.lib fertig ist, was zur Zeit (noch) nicht der Fall ist. (BASCON 1.11.7.7)

Lange Rede kurzer Sinn, vergess BASCOM für die kleinen Tinys zum jetzigen Zeitpunkt.

Ggf. kann Dir Mark Alberts sagen ab wann das vollständig implementiert ist.

Guß Werner

Gerhard
20.04.2005, 20:21
@Werner:
Danke für die Erleuterungen.
Das mit der 10-fach geringeren Lebensdauer vom Flash ist mir hinterher aufgefallen. Also macht es eh' keinen Sinn auf die tiny.lib zu warten.

Ich habe den Progr.Code jetzt so geändert das ich mit den Hardwareregistern arbeite. Läuft soweit, allerdings hätte ich gern noch 2 bis 3 'echte' Variable, z.B. als Schleifenzähler oder um einen Bytewert zwischenzuspeichern

Werde jetzt den ATtiny13 nehmen, der hat 64 Byte SRam.

Schönen Gruß
Gerhard

benzini
12.05.2005, 07:43
hallo,

habe hier auch nen tiny15. läuft auch soweit mit dem bascom.

aber ich schaffs nicht aus dem adc irgendwas rauszulesen.

gibts da nen trick?

wolfi

Gerhard
12.05.2005, 08:48
.... so sollte es gehen.
Einlesen über ADC3

'================================================= ==============================

$regfile = "AT15DEF.DAT" 'ATtiny15L-Deklarationen
$crystal = 1600000 'Quarz: 1,6 MHz intern
$tiny 'nur bei Tiny15 erforderlich


'für A/D-Wandler
Ddrb = &B00001110 'PB1...PB3=1: PortB-Pins auf Ausgang
'Rest Eingang

'Einstellungen zur Verwendung ADC3
'Admux = &B01100011 'Bits7+6=01: dann Aref EXTERN versorgen
Admux = &B00100011 'Bits7+6=00: Aref nc, VCC=Ref

'Bit5=1: LeftAdjust, nur 8 Bit in ADCH
'Bits3...0=0000: Pin ADCx wählen
'ADC3 =011

Adcsr = &B11100010 'Bit7=1:AdcOn,Bit6=1:Start,Bit5=1:Frei
'Bits2+1+0=010: AdcClock=AvrClock/4


'................................................. ..............................

'A/D-Schwellwerte als Konstante
Const Grenzwert_1 = 40
Const Grenzwert_2 = 50
Const Grenzwert_3 = 60
Const Grenzwert_4 = 70
Const Grenzwert_5 = 80
Const Grenzwert_6 = 90
Const Grenzwert_0 = 100

' --- Ende Definitionen und Konstanten -----------------------------------------

'******** Beginn Hauptprogramm *************************************************
Do
If Adch > Grenzwert_1 Then Portb = &B00001001 'Led_1 Bit0 High Pullup
If Adch > Grenzwert_2 Then Portb = &B00000101 'Led_2
If Adch > Grenzwert_3 Then Portb = &B00001101 'Led_3
If Adch > Grenzwert_4 Then Portb = &B00000011 'Led_4
If Adch > Grenzwert_5 Then Portb = &B00001011 'Led_5
If Adch > Grenzwert_6 Then Portb = &B00000111 'Led_6
If Adch > Grenzwert_0 Then Portb = &B00000001

Waitms 5
Loop

End 'end program



mfg Gerhard

12.05.2005, 11:09
hallo Gerhard,

danke für die info. aber irgendwie fehlt mir da der zugang...

hab die register adcsr und admux wie beschrieben gesetzt.

aber irgendwie geht da nichts. dann hab ich folgende sub geschrieben:

Sub Adin

in r17 , adch
ret
End Sub

das r 17 wird von einer delayschleife weiterverwendet. aber egal was ich für ne spannung anlege, die schleife dauert immer gleich lang. wenn ich das pgm im simulator des bascom laufen lass und irgendwas ins adch reinschreib, wirds auch nicht in r17 übernommen. was mach ich falsch?

benzini

Gerhard
13.05.2005, 09:26
......... das r 17 wird von einer delayschleife weiterverwendet. aber egal was ich für ne spannung anlege, die schleife dauert immer gleich lang. wenn ich das pgm im simulator des bascom laufen lass und irgendwas ins adch reinschreib, wirds auch nicht in r17 übernommen. was mach ich falsch?

benzini

.. also, mit inline-Assembler und Simulator habe ich keine Erfahrung.
Ich habe meinen Progr.-Code auf einem kleinen Testboard mit LED's an PB0-PB3 ausprobiert.
Es funzt.

mfg Gerhard

13.05.2005, 12:36
hallo Gerhard,

hast das pgm wirklich auf nem tiny 15 laufen lassen?

irgendwie klappt da was nicht mit dem tiny15. ich bekomm nicht mal den befehl Waitms 5 zum laufen....

das mach ich mit ner delayschleife die ebenfalls in assembler geschrieben ist. die meisten bascom befehle kann der compiler für den tiny 15 nicht übersetzen. aber das beste - da kommt keine fehlermeldung. alles o.k. und man kann das pgm auch runterladen - nur tut sich nix.
schon lustig......

na dann werd ich noch ein bischen forschen.

benzini