- Akku Tests und Balkonkraftwerk Speicher         
Seite 16 von 51 ErsteErste ... 6141516171826 ... LetzteLetzte
Ergebnis 151 bis 160 von 503

Thema: Gameboy Camera, Probleme bei dem Auslesen des Bildes

  1. #151
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi pebisoft

    Warum C-Programm?
    Ich will versuchen das mit Bascom hinzukriegen.

    Mein Code habe ich ober schonmal gepostet, der ist aber nicht mehr aktuell:
    Code:
    'Gameboy Kamera
    
    $regfile = "m8515.dat"                                      'ATmega8515-Deklarationen
    $crystal = 4000000                                          'Quarz: 4 MHz
    $baud = 9600
    
    Declare Sub Register_laden(addr As Byte , Wert As Byte)
    
    Dim Regaddr(8) As Byte
    Dim Regwert(8) As Byte
    Dim I As Byte
    
    Dim Bild(16384) As Xram Byte
    Dim Z As Word
    
    'Register festlegen:
    Regaddr(1) = 1
    Regaddr(2) = 2
    Regaddr(3) = 3
    Regaddr(4) = 4
    Regaddr(5) = 5
    Regaddr(6) = 6
    Regaddr(7) = 7
    Regaddr(8) = 0
    
    Regwert(1) = 128
    Regwert(2) = 14
    Regwert(3) = 6
    Regwert(4) = 0
    Regwert(5) = 1
    Regwert(6) = 0
    Regwert(7) = 1
    Regwert(8) = 7
    
    Config Scl = Portb.2
    Config Sda = Portb.3
    Config I2cdelay = 10
    
    'A/D-Wandler einstellen:
    I2cinit
    I2cstart
    I2cwbyte &B10010000
    I2cwbyte &B00000000
    I2cstop
    
    
    Config Portb.0 = Output                                     'XCK
    Config Portb.1 = Output                                     'Reset
    Config Portb.4 = Output                                     'Sin
    Config Portd.3 = Input                                      'read
    Config Portd.4 = Output                                     'Load
    Config Portd.5 = Output                                     'Start
    
    Config Portd.2 = Output
    Portd.2 = 1
    Waitms 1000
    Portd.2 = 0
    Waitms 1000
    Portd.2 = 1
    
    Xckpin Alias Portb.0
    Resetpin Alias Portb.1
    Sinpin Alias Portb.4
    Loadpin Alias Portd.4
    Startpin Alias Portd.5
    Readpin Alias Pind.3
    
    Resetpin = 1                                                'Reset High
    Xckpin = 1                                                  'XCK High
    Loadpin = 0                                                 'Load Low
    Startpin = 0                                                'Start Low
    
    'Reset:
    Waitus 5
    Xckpin = 0                                                  'XCK Low
    Waitus 2
    Resetpin = 0                                                'Reset Low
    Waitus 2
    Xckpin = 1                                                  'XCK High
    Waitus 2
    Resetpin = 1                                                'Reset High
    Waitus 2
    
    'Register Laden
    Call Register_laden(regaddr(1) , Regwert(1))
    Call Register_laden(regaddr(2) , Regwert(2))
    Call Register_laden(regaddr(3) , Regwert(3))
    Call Register_laden(regaddr(4) , Regwert(4))
    Call Register_laden(regaddr(5) , Regwert(5))
    Call Register_laden(regaddr(6) , Regwert(6))
    Call Register_laden(regaddr(7) , Regwert(7))
    Call Register_laden(regaddr(8) , Regwert(8))
    
    'Start:
    Waitus 2
    Startpin = 1
    Waitus 2
    Xckpin = 1
    Waitus 2
    Startpin = 0
    
    'Do
       'Warten bis Bild fertig:
       Do
          Waitus 3
          Xckpin = 0
          Waitus 5
          Xckpin = 1
          Waitus 2
       Loop Until Readpin = 1
    
    '   'Bild lesen;
    
       For Z = 1 To 16383
          I2cstart
          I2cwbyte &B10010001
          I2crbyte Bild(z) , 9
          I2cstop
          Xckpin = 0
          Waitus 4
          Xckpin = 1
       Next
       Xckpin = 0
       Waitus 1
       For Z = 1 To 16384
          Printbin Bild(z)
       Next
    
    Do
    Loop
    
    End                                                         'end program
    
    Sub Register_laden(addr As Byte , Wert As Byte)
       'Registeraddr übertragen:
       For I = 1 To 3
          Xckpin = 0
          Sinpin = Addr.i
          Waitus 3
          Xckpin = 1
          Waitus 3
       Next
    
       'Registerwert übertragen:
       For I = 1 To 8
          Xckpin = 0
          Sinpin = Wert.i
          Waitus = 3
          Xckpin = 1
          Waitus = 3
       Next
    
       Loadpin = 1
       Waitus 2
       Xckpin = 0
       Waitus 4
       Loadpin = 0
       Sinpin = 0
    End Sub
    Diesen Code habe ich jetzt auf dem Controller.
    Die Schleife mit dem Printbin liefert mir im Terminalprogramm die Werte von oben.

  2. #152
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi!

    Also! Mein Anzeigeprogramm ist jetzt 'entbuggt'.
    Funktioniert recht gut, denk ich.

    Hier eine kleine Beschreibung:

    Das Programm erstellt 2 Logfiles:
    C:\log1.txt (Enthält alle gezeichneten Bytes)
    und
    C:\log2.txt (Enthält ALLE EMPFANGENEN Bytes.)

    Die Bytes des Bildes (ADC-Werte) müssen ohne Vorankündigung gesendet werden. Hierbei gilt: 9600 Baud, 8Bits, Keine Parity, 1Stopbit (8N1).
    Die Bytes müssen alle exakt 8Bit haben (ADC-Werte mit 8Bit!),
    Sie müssen alle beim Senden durch einen Semikolon (ASCII 59) getrennt werden, also so:
    <ADC-Wert-1>;<ADC-Wert-2>; usw.
    z.B:
    213;214;13;

    Eine Aufnahme macht man so:
    (Reset des sendenden AVRs gedrückt halten)
    - Connect anklicken (Connecten zum COM-Port)
    - GO! anklicken (Lese-Sequenz wird gestertet)
    In dieser Phase ist das Programm nichtmehr ansprechbar, und wenn der Bildschirmschoner oder sonstwas kommt, ist das Bild WEG!!
    - RESET loslassen, sodass der AVR die Werte ausgibt.
    - Ausgabe abwarten
    - wenn Ausgabe fertig, Disconnect anklicken (disconnecten vom COM-Port)

    Sollte sich trotzdem noch ein Bug eingeschlichen haben (meine Kammera sendet z.Zt. nur Weis... ) bitte hier posten, PN oder EMAIL!

    Uff, das war viel...

    _Wäre nett, wenn ihr eure Meinung über das Tool sagen würdet!_

    Viele liebe Grüße,
    Tobi

    - Für Rechtschreibung keine Haftung
    Angehängte Dateien Angehängte Dateien
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #153
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo tobi, wie wäre es , wenn man die ganzen 16000 bytes zum pc überträgt in eine textdatei und dann von deinem programm in aller ruhe aufrufen lässt.
    das wäre für die testphase einfacher. weil man evtl bytes von hand einmal ändern kann um auch zu prüfen, wie dein programm die einzelnen unterschiedlichen werte darstellt.
    mfg pebisoft

  4. #154
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Zitat Zitat von tobimc
    Wäre nett, wenn ihr eure Meinung über das Tool sagen würdet!
    Das erste was mir aufgefallen ist, das man keinen COM Port einstellen kann ( mein USB<>Seriell Wandler liegt auf COM Port 7 zum Beispiel ). Von daher ists schwierig mit dem testen

    MfG Kjion

  5. #155
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi!

    @pebisoft:
    Tut das Programm doch! C:\log2.txt . Dahinein werden die ankommenden Werte geschrieben.

    @Kjion: Hm. Das ist halt mit den Textfeldern so ne Sache von wegen malloc und so. Ich schau mal, was sich machen lässt...

    Schon jemand was brauchbares herausbekommen? pebisoft?

    Viele liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  6. #156
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Ich habe meinen Fehler nun etwas eingekreist.
    Der Readpin geht ja normalerweise von LOW auf HIGH wenn ein Bild fertig ist.
    Nach 16384 Takten ist das Bild ja normalerweise fertig an dem Voutpin ausgegeben worden und der Readpin sollte wieder auf LOW gehen.

    Tut er bei mir aber nicht.

    Habe, nachdem der Readpin von LOW auf HIGH geht, mal folgenden Code probiert:
    Code:
       Do
          Waitus 4
          Xckpin = 0
          Waitus 4
          Xckpin = 1
       Loop Until Readpin = 0
       Print "Readpin wieder auf LOW";
    Ich kann jetzt warten solange ich will, mein Readpin geht nicht mehr auf LOW. Weiß einer woran das liegen könnte?

  7. #157
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi!

    Hahm. GENAU dieses Problem habe ich auch!
    Diese Gameboy-Cams sind auch nicht mehr das, was sie mal waren...

    Ich habe in meiner Software einen weiteren bug entdeckt, desweiteren programmiere ich gerade eine Routine, die das Bild immer neu zeichnet.
    Aber es funktioniert noch nicht! Access Violation...

    Die von Kjion gefoerderte COM-Verstellung ist auch schon vorgesehen.

    Liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  8. #158
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Schau mal hier https://www.roboternetz.de/phpBB2/ze...816&highlight=
    Da hat jemand das gleiche Problem. Hab ihm schon ne PM geschickt, ob er ne Lösung gefunden hat. Wenn ich ne Antwort kriege, schreib ich sie hier rein.

  9. #159
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo tobi, meine werte aus dem adc liegen jetzt zwischen 224 bis 251.
    im terminalprogramm erscheinen sie bei mir auch wie oben angegeben mit semicolon. also am pc kommen die werte richtig (erscheinen auch auf meiner avr-platine im lcd-display) mit semicolon an.
    in deiner datei stehen abr nur werte zwischen 10 und 64, wobei ca 85% über 45 liegen. es erscheint in deiner datei kein wert über einhundert, das wundert mich. mich würde einmal interessieren, von welcher basic aus du die pixel berechnen tust (4 grauwerte).
    1. welchen umrechnungsfehler macht dein programm beim speichern der daten
    2. wo liegt deine berechnungsbasis für die werte der 4 graustufen.

    kannst du dein programm nicht so schreiben, das man den mindestwert und den höchstwert reingibt, den jeder für sich ermittelt beim probelauf.
    sonst wird man nicht in der lage sein mit deinem programm das bild zu sehen. jede kleien änderung am spannungspotiential des AVR verändert die adc-werte. auch die bautoleranz der AVR mit adc oder andere I2C adc verzerren das bild.
    ca bei 16300byte schaltet meiner auf 1, ca 86 byte lang und dann fängt er wieder an zu arbeiten, bild für bild.
    mfg pebisoft

  10. #160
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Zitat Zitat von pebisoft
    meine werte aus dem adc liegen jetzt zwischen 224 bis 251.
    Dann hast du deine Kamera nicht richtig kalibiert. Vielleicht ist der Verstärkungsfaktor zu groß ??

    Hier mal ein Auszug aus einem Testprogramm von mir:
    Code:
    Min :  12
    Max : 240
    Mittelwert:  71
    Standartabweichung : 57
    Unter dem Link den DerInder gepostet hatte ( http://www.seattlerobotics.org/encod...205/gbcam.html ) gibts ein ganz nettes Programm dafür. Ich hab das eben für avr-gcc umgeschrieben und auf mein Board angepasst und es funktioniert sehr gut .
    Code gibts demnächst wenn ich noch ein bißchen daran rumgebastelt habe bzw. wer nicht warten will kann mir auch gerne ne Mail schreiben...

    MfG Kjion

Seite 16 von 51 ErsteErste ... 6141516171826 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test