videokamera marke eigenbau
Will main neues Projekt vorstellen "videokamera marke eigenbau"
Kleine beschreibung
128x64
16bit Farbe
~1 fps
zu zeit keine flashkarte vorhanden
Display Siemens S65
176x132
16bit farbe
Kamera modul :
TCM8230MD von Toshiba
640x480
16 bit Farbe
30 fps max
MCU
AT32UC3A
66 Mhz leuft mit 84 mhz
PBA und PBB auch mit 84 Mhz
64 kb Ram
Zu den Problemmen
Kameramodul Braucht 11 bis 24 Mhz , bei 20 Mhz kommt 30 fps raus . Bei mir leuft Kameramodul unter 1 Mhz .
~1 Mhz wird per PWM erzeugt
Takt von der kamera wird per NMI Interrupt abgefangen.Horizontaltakt wird won GPIO Interrupt abgefangen, So wie Vertikaltakt




Quelcode:
kamera.tar.bz2
Kleine beschreibung
128x64
16bit Farbe
~1 fps
zu zeit keine flashkarte vorhanden
Display Siemens S65
176x132
16bit farbe
Kamera modul :
TCM8230MD von Toshiba
640x480
16 bit Farbe
30 fps max
MCU
AT32UC3A
66 Mhz leuft mit 84 mhz
PBA und PBB auch mit 84 Mhz
64 kb Ram
Zu den Problemmen
Kameramodul Braucht 11 bis 24 Mhz , bei 20 Mhz kommt 30 fps raus . Bei mir leuft Kameramodul unter 1 Mhz .
~1 Mhz wird per PWM erzeugt
Takt von der kamera wird per NMI Interrupt abgefangen.Horizontaltakt wird won GPIO Interrupt abgefangen, So wie Vertikaltakt
Quelcode:
kamera.tar.bz2
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Webmaster-Forum hin oder her, hier dreht sich ja nur noch ein Bruchteil um's WWW. Meiner Meinung nach passt das sogar noch viel eher zu einen Webmaster als Spiele der Call of Duty oder Battlefield Serie hier im Forum.
Zurück zu deinen Projekt, gen4ik. Auch wenn ich mich nicht viel mit Kameras befasst habe und wenig Erfahrung in den Bereich besitze, kann ich dir aber anvertrauen, dass deine Eigenbau-Webcam sehr interessant ist. Es ist zwar kein neuer Meilenstein, aber immerhin ein kleiner Beweis deiner Geschicklichkeit, dass du das Zeug dazu hast.
Ich kann nur sagen, weiter so!
Zurück zu deinen Projekt, gen4ik. Auch wenn ich mich nicht viel mit Kameras befasst habe und wenig Erfahrung in den Bereich besitze, kann ich dir aber anvertrauen, dass deine Eigenbau-Webcam sehr interessant ist. Es ist zwar kein neuer Meilenstein, aber immerhin ein kleiner Beweis deiner Geschicklichkeit, dass du das Zeug dazu hast.
Ich kann nur sagen, weiter so!
UbuntuSource - Aktuelle News und Howto's rund um Ubuntu!
danke danke
Zu den webmasterforum und sonstige programmiersprachen
Ich habe das alles durch foren und Internet gelernt und ich weiß aus erfahrung um interessanter aufgabe ist um so besser steiget man sich rein.
und in Mikrokontroller.net komt das auch rein wenn das Programm besser aussiet jezt ist das noch in entwiklung
Webcam passt doch zu webmaster forum. Usb hat das ding auch
Zu den webmasterforum und sonstige programmiersprachen
Ich habe das alles durch foren und Internet gelernt und ich weiß aus erfahrung um interessanter aufgabe ist um so besser steiget man sich rein.
und in Mikrokontroller.net komt das auch rein wenn das Programm besser aussiet jezt ist das noch in entwiklung
Webcam passt doch zu webmaster forum. Usb hat das ding auch
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (15. Juni 2011, 22:26)
Kleine Beschreibung von der Kamera
TCM8230 hat ein 8 bit Daten bus und 3 Clock signelae HD Horizontal,VD Vertikal ,DClock sehe bild, Farbe besteht aus 16 bit 5:6:5 RGB also braucht die 2 Takte um ein Pixel aus zu geben.
Laut Datenblat barucht die von 11.8 Mhz bis 27 Mhz takt Typ. 24,54 Mhz , bei mir leuft die knap unter 1 Mhz also 84/2/50 820000 Hz

Warum Das so langsam ist
1:Interrupt ist zu langsam besser gesagt es vergehen viele takte bis er registriert wird sehe bild

2:Flash ist auch nicht das schnellste Mainclock/2 also 41 Mhz
Mann kann Programm ins Ram laden und von da ausführen ,nur ich kann das zur zeit nicht und so viel ram habe ich nicht zu verfügung
3:GPIO controller braucht auch zwei takte bis er die Daten auslesen kann"so weit ich das verstanden habe" .Man kann Pins direct mit CPU auslesen aber nocht nicht dazu gekommen.
Beim Pins ausgang ist definitiv daß 2 Clocks vergehen bis es auf High ode Low steht
4:Um vollen Auflösung zu erreichen braucht man 640x480x2 byte also 600 kb UC3A hat nur 64 kb Ram
Jetzt zu den Ideen
1.LPC2138 hat schnelleres Flash aber weniger Ram nur 32 kb. Ich versuche externes Ram anzuschlissen und die Daten von der Kamera ins Ram direkt zu speichern ohne dabei cpu zu belasten
und aus den zweiten Ram chip wird dann gelesen .Ob das klapt weiß ich noch nicht
2:Es giebt schnellere MCU´s AVR32AP7000, AT91SAM9 und so weiter. Die besizen Ram controller, sind natürlich viel schwireger zu programmieren
AT32AP7000 Kann man mit 150 Mhz takten bei SAM9 180 Mhz bis 533 Mhz .Bei manche SAM´s giebs extra Kamera interface die für sowas gedacht ist .
Jetzt bin ich dabei Toolchain fur AP7000 zu konfigurieren hat auch alles geklapt so weit ,grade auch avr32Program zum laufen gebracht.
Erste aufgabe ist die Led an den Board blinkenzu lassen, Interrupts ,PWM gehört auch dazu .
TCM8230 hat ein 8 bit Daten bus und 3 Clock signelae HD Horizontal,VD Vertikal ,DClock sehe bild, Farbe besteht aus 16 bit 5:6:5 RGB also braucht die 2 Takte um ein Pixel aus zu geben.
Laut Datenblat barucht die von 11.8 Mhz bis 27 Mhz takt Typ. 24,54 Mhz , bei mir leuft die knap unter 1 Mhz also 84/2/50 820000 Hz
Warum Das so langsam ist
1:Interrupt ist zu langsam besser gesagt es vergehen viele takte bis er registriert wird sehe bild
2:Flash ist auch nicht das schnellste Mainclock/2 also 41 Mhz
Mann kann Programm ins Ram laden und von da ausführen ,nur ich kann das zur zeit nicht und so viel ram habe ich nicht zu verfügung
3:GPIO controller braucht auch zwei takte bis er die Daten auslesen kann"so weit ich das verstanden habe" .Man kann Pins direct mit CPU auslesen aber nocht nicht dazu gekommen.
Beim Pins ausgang ist definitiv daß 2 Clocks vergehen bis es auf High ode Low steht
4:Um vollen Auflösung zu erreichen braucht man 640x480x2 byte also 600 kb UC3A hat nur 64 kb Ram
Jetzt zu den Ideen
1.LPC2138 hat schnelleres Flash aber weniger Ram nur 32 kb. Ich versuche externes Ram anzuschlissen und die Daten von der Kamera ins Ram direkt zu speichern ohne dabei cpu zu belasten
und aus den zweiten Ram chip wird dann gelesen .Ob das klapt weiß ich noch nicht
2:Es giebt schnellere MCU´s AVR32AP7000, AT91SAM9 und so weiter. Die besizen Ram controller, sind natürlich viel schwireger zu programmieren
AT32AP7000 Kann man mit 150 Mhz takten bei SAM9 180 Mhz bis 533 Mhz .Bei manche SAM´s giebs extra Kamera interface die für sowas gedacht ist .
Jetzt bin ich dabei Toolchain fur AP7000 zu konfigurieren hat auch alles geklapt so weit ,grade auch avr32Program zum laufen gebracht.
Erste aufgabe ist die Led an den Board blinkenzu lassen, Interrupts ,PWM gehört auch dazu .
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
einfach so von freak zu freak
verrate dir das es blinkt
ich bin so froh wie kleines kind
ob das hier was besonders ist
Ich weiß wohl das nur lampe ist.
led.tar.bz2
verrate dir das es blinkt
ich bin so froh wie kleines kind
ob das hier was besonders ist
Ich weiß wohl das nur lampe ist.
led.tar.bz2
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Mit AP klapt das leider nicht weil am Board keine Interrupts pins ausgeführt sind, schade aber so schnell gebe ich nicht auf
hier ist programm wie weit ich kamm bis ich gesehen habe das die pins fehlen
led.tar.bz2
hier das neue program von UC3A
kamera.tar.bz2
Leider mit UC3A komme ich nicht über 1 Mhz Takt . Ich habe die Interrupt Routine ins Ram geladen aber viel schneller ist nicht geworden.
Denke das ich schon an der Grenze von dem Chip bin kann aber falsh liegen.
Ah so AP hat auch Kamera interface aber die ist auch nicht ausgeführt

hier ist programm wie weit ich kamm bis ich gesehen habe das die pins fehlen
led.tar.bz2
hier das neue program von UC3A
kamera.tar.bz2
Leider mit UC3A komme ich nicht über 1 Mhz Takt . Ich habe die Interrupt Routine ins Ram geladen aber viel schneller ist nicht geworden.
Denke das ich schon an der Grenze von dem Chip bin kann aber falsh liegen.
Ah so AP hat auch Kamera interface aber die ist auch nicht ausgeführt
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (19. Juni 2011, 21:28)
Bugs :
Bei der Kamera in Register 1E
D_MASK 7:6 bits auf 0
CODESW 5 bit auf 0
CODESEL 4 bit auf 0
HSYNCSEL 3 bit auf 1
TESTPIC 2 bit auf 0
PICSEL 1:0 bits auf 0
Bei I2C.c sind start und End sequenzen falsch
Hier die neue Version, Timing kann bis 10 us runter
edit:
und bei ACK muss SDL auf low und nicht auf hight wie bei mir
Bei der Kamera in Register 1E
D_MASK 7:6 bits auf 0
CODESW 5 bit auf 0
CODESEL 4 bit auf 0
HSYNCSEL 3 bit auf 1
TESTPIC 2 bit auf 0
PICSEL 1:0 bits auf 0
|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ant=i2c_send(0x3C,0x2,0x0); if(ant!=0) { print_char(ant,10,"I2C cmd1 Error"); led_blink(); } ant=i2c_send(0x3C,0x3,0x2); if(ant!=0) { print_char(ant,10,"I2C cmd2 Error"); led_blink(); } if(i2c_send(0x3C,0x1E,0b00001000)!=0)//0x8 { lcd_print(5,10,lcd_rgb(0xFF,0,0),0xFFFF,(unsigned char *)"Error Send i2c"); led_blink(); } |
Bei I2C.c sind start und End sequenzen falsch
Hier die neue Version, Timing kann bis 10 us runter
|
|
C/C++-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
#define I2C_DELAY 1000 #define I2C_DELAY_ON 20 void i2c_gpio_install(void) { volatile avr32_pio_t *pioa = &AVR32_PIOA; //I2C*************************************************************** pioa->per = I2C_PIN_MASK;//PIO Enable Register pioa->sodr = I2C_PIN_MASK;//I2C Data & Clk ON pioa->oer = I2C_PIN_MASK;//Output enable Register ODR //****************************************************************** } char i2c_send(unsigned char device_adresse,unsigned char device_reg,unsigned char data) { unsigned char i=0,dd=0x40; volatile avr32_pio_t *pioa = &AVR32_PIOA; char ret=0; pioa->codr = I2C_SDA_MASK;//Data Off udelay(I2C_DELAY_ON); pioa->codr = I2C_SCL_MASK;//Clock Off udelay(I2C_DELAY); //Send addresse dd=0x40; for (i=0;i<7;i++) { if(dd & device_adresse) pioa->sodr = I2C_SDA_MASK;// Set Output Data Register else pioa->codr = I2C_SDA_MASK;// Set Output Data Register pioa->sodr = I2C_SCL_MASK;// Clock On udelay(I2C_DELAY);//tHIGH pioa->codr = I2C_SCL_MASK;// Clock Off udelay(I2C_DELAY);//tLOW dd=(dd>>1); } //Bit Read/Write Read=>1 Write=>0 pioa->codr = I2C_SDA_MASK;//Write SDA=1 pioa->sodr = I2C_SCL_MASK;//Clock On udelay(I2C_DELAY); pioa->codr = I2C_SCL_MASK;//Clock Off udelay(I2C_DELAY); //ACK -> //Acknowledge: SDA line is low while the SCL line is high at the 9 th clock cycle pioa->sodr = I2C_SDA_MASK;//Data on pioa->odr = I2C_SDA_MASK;//Output disdable Register ODR pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY); if(pioa->pdsr & I2C_SDA_MASK) { pioa->oer=I2C_SDA_MASK;//Output enable DATA pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY_ON); pioa->sodr = I2C_SDA_MASK;//Data on return 1; } pioa->codr = I2C_SCL_MASK;//Clock Off pioa->oer=I2C_SDA_MASK;//Output enable DATA udelay(I2C_DELAY); //send Register auf dem Chip dd=0x80; for (i=0;i<8;i++) { if(dd & device_reg) pioa->sodr = I2C_SDA_MASK;//Data On else pioa->codr = I2C_SDA_MASK;//Data Off pioa->sodr = I2C_SCL_MASK;//Clock On udelay(I2C_DELAY); pioa->codr = I2C_SCL_MASK;//Clock Off udelay(I2C_DELAY); dd=(dd>>1); } //ACK ->i2c_send //Acknowledge: SDA line is low while the SCL line is high at the 9 th clock cycle pioa->sodr = I2C_SDA_MASK;//Data on pioa->odr = I2C_SDA_MASK;//Output disdable Register ODR pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY); if(pioa->pdsr & I2C_SDA_MASK) { pioa->oer=I2C_SDA_MASK;//Output enable DATA pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY_ON); pioa->sodr = I2C_SDA_MASK;//Data on return 2; } pioa->codr = I2C_SCL_MASK;//Clock Off pioa->oer=I2C_SDA_MASK;//Output enable DATA udelay(I2C_DELAY); //Daten senden dd=0x80; for (i=0;i<8;i++) { if(dd & data) pioa->sodr = I2C_SDA_MASK;//Data On else pioa->codr = I2C_SDA_MASK;//Data Off pioa->sodr = I2C_SCL_MASK;//Clock On udelay(I2C_DELAY); pioa->codr = I2C_SCL_MASK;//Clock Off udelay(I2C_DELAY); dd=(dd>>1); } //ACK -> //Acknowledge: SDA line is low while the SCL line is high at the 9 th clock cycle pioa->sodr = I2C_SDA_MASK;//Data on pioa->odr = I2C_SDA_MASK;//Output disdable Register ODR pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY); if(pioa->pdsr & I2C_SDA_MASK) { pioa->oer=I2C_SDA_MASK;//Output enable DATA pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY_ON); pioa->sodr = I2C_SDA_MASK;//Data on return 3; } pioa->codr = I2C_SCL_MASK;//Clock Off pioa->oer=I2C_SDA_MASK;//Output enable DATA udelay(I2C_DELAY); ENDE: pioa->sodr = I2C_SCL_MASK;//Colck On udelay(I2C_DELAY_ON); pioa->sodr = I2C_SDA_MASK;//Data on return ret; } void i2c_scann_devices(void) { unsigned char i=0,ii=0; char buffer[40]; for (i=0;i<128;i++) { if(i2c_send(i,0,0)==0) { sprintf(buffer,"Device Found: 0x%x",i); lcd_print(5,120-(ii*10),lcd_rgb(0,0xFF,0),0xFFFF,(unsigned char *)buffer); ii++; } } } |
edit:
und bei ACK muss SDL auf low und nicht auf hight wie bei mir
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (27. Juni 2011, 10:45)
mit LPC2138 ist die eingang frequenz auf 3mhz gestiegen und man kann es als video bezeichnen
hier board :
LPC_2138_v031.pdf
hier quelcode:
kamera.tar.bz2
in makefile sind volgende einstellungsmöglichkeiten:
THUMB = -mthumb oder -marm
thumb oder arm befehlsatz .
##VECTOR_LOCATION=VECTORS_IN_ROM
## - Exception vectors in RAM:
VECTOR_LOCATION=VECTORS_IN_RAM
IRQ tabelle in rom oder ram.
in extint.c ist function FIQ_Handler
void __attribute__ ((interrupt("FIQ"),long_call, section (".fastrun")))FIQ_Handler (void)
ist als .fastrun also befindet sich in ram
durch den eintrag in rom.lds datei und in start.s wird die function aus rom ins ram kopiert
.data : AT (_etext)
{
_data = .;
KEEP(*(.vectmapped)) /* mthomas: when code in ROM and vectors remapped */
. = ALIGN(4);
*(.fastrun) /* mthomas: for "RAMFUNC"<---- hier */
. = ALIGN(4);
SORT(CONSTRUCTORS) /* mt 4/2005 */
. = ALIGN(4);
*(.data)
*(.data.*)
*(.gnu.linkonce.d*)
. = ALIGN(4);
} > RAM
und ist in Start.s ist die sprungaddresse
__Vectors: LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
NOP /* Reserved Vector */
LDR PC,IRQ_Wrapper_Addr
LDR PC,FIQ_Addr //<--- hier
was noch nicht leuft ist die anderen irqs
aber duch
if(FIOPIN0 & 3276
und
if(!(FIOPIN0 & 1048576))
kann man auf irq verzichten
hier board :
LPC_2138_v031.pdf
hier quelcode:
kamera.tar.bz2
in makefile sind volgende einstellungsmöglichkeiten:
THUMB = -mthumb oder -marm
thumb oder arm befehlsatz .
##VECTOR_LOCATION=VECTORS_IN_ROM
## - Exception vectors in RAM:
VECTOR_LOCATION=VECTORS_IN_RAM
IRQ tabelle in rom oder ram.
in extint.c ist function FIQ_Handler
void __attribute__ ((interrupt("FIQ"),long_call, section (".fastrun")))FIQ_Handler (void)
ist als .fastrun also befindet sich in ram
durch den eintrag in rom.lds datei und in start.s wird die function aus rom ins ram kopiert
.data : AT (_etext)
{
_data = .;
KEEP(*(.vectmapped)) /* mthomas: when code in ROM and vectors remapped */
. = ALIGN(4);
*(.fastrun) /* mthomas: for "RAMFUNC"<---- hier */
. = ALIGN(4);
SORT(CONSTRUCTORS) /* mt 4/2005 */
. = ALIGN(4);
*(.data)
*(.data.*)
*(.gnu.linkonce.d*)
. = ALIGN(4);
} > RAM
und ist in Start.s ist die sprungaddresse
__Vectors: LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
NOP /* Reserved Vector */
LDR PC,IRQ_Wrapper_Addr
LDR PC,FIQ_Addr //<--- hier
was noch nicht leuft ist die anderen irqs
aber duch
if(FIOPIN0 & 3276

und
if(!(FIOPIN0 & 1048576))
kann man auf irq verzichten
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (27. Juli 2011, 20:15)
Ähnliche Themen
-
Allgemeines Forum »-
aktuelle c't Ausgabe 26/05 kostenlos am Kiosk - Gutschein
(12. Dezember 2005, 14:50)
-
Kaufberatung »-
Preigünstige Wakü ;)
(6. September 2005, 22:31)
-
(X)HTML & CSS & DHTML & Javascript »-
Problem bei Homepage...
(10. November 2004, 16:29)
-
PHP »-
CMS Marke Eigenbau
(10. November 2003, 20:02)
-
Plauder Forum »-
2 Stunden für PC Marke Eigenbau
(27. Mai 2003, 21:46)


