- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: atmega644 und bascom -- ADC_REFMODEL

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    23.10.2006
    Beiträge
    36
    Anzeige

    Powerstation Test
    hi
    habe gerade das gleiche problem: den attiny25 ad-wandler unter
    Bascom zum laufen zu bringen.
    er soll mit ref=2,56V an ADC1 einen wert einlesen.
    nach deiner anleitung wäre das Getadc(1 , &H90) bzw. Getadc(&H91)
    klappt aber nicht.... wo mache ich da den fehler ?????

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    was meckert ihr so , im index in der bascomhilfe einfach config adc eingeben und der himmel öffnet sich. ich weiss garnicht, was ihr da so kompliziert herumsucht.


    mfg

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    @roboterheld
    schau mal auf das Datum, seitdem hat sich schon einiges geändert !

    @hütti
    ein wenig mehr Infos könnten wir noch brauchen,
    zB. welche Bascom Version, denn ein paar Bugs sind schon behoben, dafür evtl. wieder andere mit dabei

    Aber Grundsätzlich sollte das mit Config ADC jetzt hinhauen,
    hab das heute aber noch nicht überprüft.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    wer eine gekaufte version von Bascom hat, aktualisiert immer auf den neuesten stand !
    wer eine raubkopie hat wird diese nicht aktualisieren können und wer die freeware-4kbyte hat , ist 2 monate im rückstand mit der info.

    mfg

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    23.10.2006
    Beiträge
    36
    @roboterheld
    wenn ich hier eine frage stelle, habe ich keinen bock angemacht zu werden,
    von wegen ich wäre ein raubkopierer oder so.
    komm mal runter!

    @linux
    also, meine bascom-version ist die 8.9beta, vollversion.

    ich möchte mit dem ad-wandler und einem attiny die spannung eines
    akku's messen und wenn die einen bestimmten wert unterschreitet,
    eine LED blinken lassen. habe schon diverse Projekte mit Bascom
    programmiert, mit einem mega8 geht der code. nur der attiny zickt.
    habe das normale config und alle erdenklichen variationen schon
    probiert. hier mal der code


    Code:
    '======================================================
    'System-Einstellungen
    '======================================================
    
    'Definition für ATtiny 25
    
    $regfile "attiny25.dat"
    
    $crystal = 8000000
    
    '======================================================
    'Konfigurationen
    '======================================================
    
    Dim X As Word
    
    Config Pinb.3 = Output
    
    
    'Konfiguration des AD-Wandlers
    Config Adc = Single , Prescaler = Auto , Reference = 6      'interne 2,56V ref
    Start Adc
    
    Wait 3
    
    
    'messen
    'X = Getadc(0 , &H80)
    X = Getadc(1)
    '0,5s warten
    Waitms 500
    
    
    'prüfen ob kleiner als
    
    If X < 10 Then Goto Akku_fail
    
    End
    
    
    '******************************************************
    ' Akku Fail
    '******************************************************
    
    Akku_fail:
    
    'Rote LED blinken lassen in Schleife
    
    Led:
    Portb.3 = 0
    Waitms 300
    Portb.3 = 1
    Waitms 300
    Goto Led
    
    Return
    so sollte es eigentlich gehen, wie gesagt, diese "hex-varianten" habe
    ich auch getestet. der AD-eingang ist pin 7.
    der AD-wandler scheint immer eine 0 auszugeben, da die LED ständig
    blinkt, d.h. keine werte über 10. die eingangsspannung ist aber
    hoch genug !

    danke für eure hilfe ![/code]

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Ich hab nur die .8.8 am laufen,
    und da gibts einen Bug in der Adresse des Registers zum starten des ADCs, deshalb funktioniert das auf den Tinys25/45/85/24/44/84 nicht, es kommt immer 0 raus, oder was grad im ADC-Register stand.

    Das hab ich aber hier schon mal irgendwo gepostet

    Hier war das:
    https://www.roboternetz.de/phpBB2/vi...=297035#297035

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    23.10.2006
    Beiträge
    36
    @linux

    das ist ja blöd, d.h. man bekommt den wandler nicht gestartet.
    könnte man das nicht unter assembler erledigen? ich bin da nicht
    so bewandert drinne, hättest du einen "tip" ?
    habe gerade gelesen, das man falsche register-einträge in den
    dat-files editieren kann. oder könnte man den wandler durchgehend
    laufen lassen und nur das register auslesen.
    wie ist mir wurst, hauptsache ich kann was messen

    für das gleiche projekt benötige ich noch einen timer.
    gehen die, oder gibt es da auch noch stolperfallen?

    ich frage, da ich mir am ad-wandler fast 6 stunden vergeblich einen
    abgebrochen habe

    ciao

    hütti =D> =D>

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    23.10.2006
    Beiträge
    36
    ich habe gerade diesen code ( laut rn wissen ) probiert: wieder nix.
    ich bin wohl zu blöde .......

    Code:
    '======================================================
    'System-Einstellungen
    '======================================================
    
    'Definition für ATtiny 25
    
    $regfile "attiny25.dat"
    
    $crystal = 8000000
    
    '======================================================
    'Konfigurationen
    '======================================================
    
    Dim X As Word
    
    Config Pinb.3 = Output
    
    Wait 2
    
    
    
    
    'CONFIG Adc = Single , Prescaler = Auto ( 64 )
    LDI r24,0x06
    !Out Adcsr , R24
    
    'START ADC
    SBI ADCSR,ADEN
    
    ' ADC-Kanal-Nummer & Ref.1,1V nach Register 24
    LDI r24,0x81
    
    ' in den ADC-Multiplexer
    !Out Admux , R24
    
    ' Aufruf der getadc-funktion
    !Call L_0x00f6
    
    ' laden der Ergebnisadresse  (DIM X AS WORD)
    LDI XL,0x63
    LDI XH,0x00
    
    ' Speichern ergebnis   (R24:r25) in "X"
    ST X+,r24
    ST X,r25
    
    
    
    
    If X < 100 Then Goto Akku_fail
    
    End
    
    
    '******************************************************
    ' Akku Fail
    '******************************************************
    
    Akku_fail:
    
    'Rote LED blinken lassen in Schleife
    
    Led:
    
    Portb.3 = 0
    Waitms 300
    Portb.3 = 1
    Waitms 300
    Goto Led
    
    '******************************************************
    
    
    
    L_0x00f6:
     SBI ADCSR,ADSC                                             ' Starten der 1. Konversion
    L_0x00f8:
     SBIC ADCSR,ADSC                                            ' Fertig ?
     RJMP L_0x00F8                                              ' nein, Loop1
     SBI ADCSR,ADSC                                             ' Starten der 2. Konversion
    L_0x00fe:
     SBIC ADCSR,ADSC                                            ' Fertig ?
     RJMP L_0x00FE                                              ' nein, Loop2
     IN r24,ADCL                                                ' Ergebnis auslesen r24:r25
     IN r25,ADCH
     RET                                                        ' fertig

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Das SRAM beginnt bei diesem AVR bei 0x60,
    die erste Variable wird warscheinlich auch dort hingelegt, im Assemblerteil wird aber der ADC-Wert bei 0x63 abgelegt, da finden sich die beiden nicht zusammen !

    Entweder die Variable fest anlegen mit "At &H63"
    oder die Adresse im Assemblerteil nach 0x60 ändern.

    Es gibt da aber auch die Möglichkeit, direkt die Adresse im SRAM zur Variable herauszufinden
    Steht auf dieser Seite:
    https://www.roboternetz.de/wissen/in...Cr_Bascom-User

    zB.:
    Code:
    lds   r24, {Meinfeld}
    ' bzw.
    STS   {Meinfeld}, R24
    Den Rest kannst du ja in Bascom schreiben, nur den GetAdc-aufruf mit ASM.

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    ich hätte noch einen Workaround, den Du probieren könntest,
    also,
    im Bascomverzeichnis ist das Lib-Unterverzeichnis,
    darin gibts eine mcs.lbx (das ist die vorkompilierte Version der ganzen Funktionen die es so gibt).

    Von dieser Datei erstmal einen Sicherungskopie machen, denn wir wollen das original etwas ändern

    Diese Datei mit einem Texteditor öffnen, und nach Getadc suchen.

    dann so ändern, und wieder speichern
    Code:
    [_GETADC]
    _GetADC:
    #IF _CHIP >30
    * In R24, ADCSR
    .OBJ 6C80
    * Out ADCSR , R24
    _GetADC_1:
    * In R24, ADCSR
    Dann im Project mit dem Tiny25 die ganz normalen ADC-Befehle verwenden, neu Kompilieren, und schauen ob das passt was ich erfunden habe

    Ich habs zwar kompiliert, und nach geschaut was draus geworden ist, aber kann es nicht am lebenden Objekt testen, da ich grad keine passende Umgebung da habe.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests