-         

Ergebnis 1 bis 10 von 10

Thema: Problem mit ATtiny15L und Bascom, es fehlt die tiny.lib

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    68
    Beiträge
    81

    Problem mit ATtiny15L und Bascom, es fehlt die tiny.lib

    Anzeige

    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

  2. #2
    Gast
    Vielleicht solltest du "as Eram" probieren, wenn du den EEprom benutzen möchtest

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    68
    Beiträge
    81
    ... 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

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    68
    Beiträge
    81
    @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

  6. #6
    benzini
    Gast
    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

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    68
    Beiträge
    81
    .... so sollte es gehen.
    Einlesen über ADC3
    Code:
    '===============================================================================
    
    $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

  8. #8
    Gast
    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

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    68
    Beiträge
    81
    Zitat Zitat von Anonymous
    ......... 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

  10. #10
    Gast
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •