Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit ATtiny15L und Bascom, es fehlt die tiny.lib
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
Vielleicht solltest du "as Eram" probieren, wenn du den EEprom benutzen möchtest ;)
... 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
@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
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
.... 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
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
......... 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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.