Vielleicht solltest du "as Eram" probieren, wenn du den EEprom benutzen möchtest![]()
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
Hallo Gerhard,
Dir ist aber schon klar, daß der Flash um rund den Faktor 10 eher aufgibt als das EEProm?... nein, wollte nicht den EEprom nutzen. Habe irgendwo in der Help gelesen
das Iram bedeutet den Stack nicht im SRam unterzubringen sondern im Flash.
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
mfg GerhardCode:'=============================================================================== $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
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
.. also, mit inline-Assembler und Simulator habe ich keine Erfahrung.Zitat von Anonymous
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
Lesezeichen