{"id":253,"date":"2017-11-23T00:15:19","date_gmt":"2017-11-22T23:15:19","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=253"},"modified":"2017-12-31T01:08:39","modified_gmt":"2017-12-31T00:08:39","slug":"27-dcmi_ov9655-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=253","title":{"rendered":"27-DCMI_OV9655-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=251\" title=\"26-Logview-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 26-Logview-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=255\" title=\"28-Ext_Interrupt-Library (STM32F4)\">28-Ext_Interrupt-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Mit dieser Library kann ein 1,3MPixel Digital-Camera-Modul (mit OV9655-Chip) per DMA und DCMI-Interface an das STM32F4 Discovery-Board angeschlossen werden.<\/p>\n<p>Das Modul gibts f\u00fcr ca. 15 EUR z.B. bei EBay. Und hat eine max Aufl\u00f6sung von 1280\u00d71024 Pixel (SXGA) und eine Farbtiefe von 16bit.<\/p>\n<p>Die Kommunikation mit dem Chip l\u00e4uft \u00fcber I2C (max 400kHz) und die Bilddaten werden per 8bit DCMI-Bus \u00fcbertragen. Mit einer Framerate von 15 Bilder\/sec (bei SXGA) und 30 Bilder\/sec (bei QVGA).<\/p>\n<p>Da ich die Bilder auf meine LC-Display anzeigen will, habe ich im Moment nur die QVGA Aufl\u00f6sung (320\u00d7240 Pixel) und QQVGA (160\u00d7120 Pixel) in der Library implementiert.<\/p>\n<p>Der Datentransfer von der Camera zum Display geschieht \u00fcber einen DMA-Kanal, somit muss die CPU dabei gar nichts machen. Und das Bild wird fl\u00fcssig dargestellt.<br \/>\n<em>(Im Moment ist das Bild noch spiegelverkehrt\u2026das liegt am Landscape-Mode, mal sehen ob ich das noch fixen kann)<\/em><\/p>\n<p>Die Version 1.1 kann jetzt auch einzelbilder \u201cSnapshots\u201d machen.<br \/>\nUnd wenn die Aufl\u00f6sung 160 x 120 Pixel gew\u00e4hlt ist, kann auch ein Snapshot<br \/>\nins RAM gemacht werden. Die Bild-Daten landen dann nicht auf dem Display<br \/>\nsondern in einem RAM-Array und k\u00f6nnen von dort mit der Funktion<br \/>\n\u201cUB_OV9655_RAM2BMP\u201d in ein BMP-Bildformat gewandelt werden.<br \/>\nDie Funktion sendet die Daten auch gleich per UART zu einem PC<br \/>\n(daf\u00fcr wird die UART Library ben\u00f6tigt)<\/p>\n<p>Hinweis : ein paar DCMI-Pins der CPU werden auf dem Discovery-Modul schon vom Sound-DAC (CS43L22) und dem Beschleunigungs-Sensor (LIS302) belegt.<br \/>\n(PA4, PA6, PB6, PB9, PC7) Ich konnte hier bei mir keine Probleme feststellen allerdings werden die beiden ICs wohl dann nicht gleichzeitig nutzbar sein.<\/p>\n<p><strong>Wichtiger Hinweis zum Tr\u00e4gerboard :\u00a0<\/strong><br \/>\n<em>Wer das gleiche Tr\u00e4gerboard wie ich benutzt,<br \/>\nmuss zwei Leiterbahnen darauf auftrennen und umverdrahten:<\/em><br \/>\n<em>Die standard Belegung der DCMI-Buchse (CON6) sieht vor f\u00fcr D2 und D3 die CPU-Pins PE0 und PE1 zu benutzen. Da liegen aber die Interrupt Ausg\u00e4nge vom LIS302 drauf und der zieht die Leitungen immer auf Lo-Pegel !! Ich hab die beiden Leiterbahnen auf der Unterseite vom Tr\u00e4gerboard aufgetrennt (CON6 Pin 1 und 3) und 2 Dr\u00e4hte zu den CPU-Pins PC8 und PC9 gelegt (diese werden auf dem Discovery-Modul noch nicht benutzt\u2026und da liegen auch D2 und D3 vom DCMI drauf)<\/em><\/p>\n<p>Und noch was -&gt; die 18pol Buchse CON6 ist zwar im Schaltplan mit OV9655 beschriftet, das Modul ist aber NICHT Pinkompatibel -&gt; es muss also ein Adapter gel\u00f6tet werden !!<\/p>\n<p>Das Modul braucht einen Eingangs-Clock (10 MHz bis 48 MHz) ich hab zuerst einen GPIO-Pin dazu benutzt aber jetzt hab ich einen 16MHz Quarzoszillator drangel\u00f6tet. Der Standardwert sind eigentlich 24MHz aber den hatte ich nicht hier <img decoding=\"async\" class=\"wp-smiley\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":-)\" \/><\/p>\n<p>Weil die I2C-Schnittstelle und das Display benutzt wird, sind die zwei Librarys \u201cSTM32_UB_LCD_ST7783\u2033 und \u201cSTM32_UB_I2C1\u2033 notwendig.<\/p>\n<p>Um das QQVGA-Bild auf dem Display in einem Window darstellen zu k\u00f6nnen, habe ich die Display-Library angepasst. (Version 1.5)<\/p>\n<p><strong>Beispielbilder :<\/strong><\/p>\n<div id=\"gallery-1\" class=\"gallery galleryid-1115 gallery-columns-3 gallery-size-thumbnail\">\n<dl class=\"gallery-item\">\n<dt class=\"gallery-icon\"><a title=\"ov9655b\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655b.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-thumbnail\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655b-150x150.jpg\" alt=\"hier das OV9655-Modul\" width=\"150\" height=\"150\" \/><\/a><\/dt>\n<dd class=\"wp-caption-text gallery-caption\">hier das OV9655-Modul<\/dd>\n<\/dl>\n<dl class=\"gallery-item\">\n<dt class=\"gallery-icon\"><a title=\"ov9655c\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655c.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-thumbnail\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655c-150x150.jpg\" alt=\"und von hinten\" width=\"150\" height=\"150\" \/><\/a><\/dt>\n<dd class=\"wp-caption-text gallery-caption\">und von hinten<\/dd>\n<\/dl>\n<dl class=\"gallery-item\">\n<dt class=\"gallery-icon\"><a title=\"ov9655\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"attachment-thumbnail\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/ov9655-150x150.jpg\" alt=\"Hier eine Bild vom Display\" width=\"150\" height=\"150\" \/><\/a><\/dt>\n<dd class=\"wp-caption-text gallery-caption\">Hier eine Bild vom Display<\/dd>\n<\/dl>\n<p><br style=\"clear: both;\" \/><\/p>\n<\/div>\n<p><strong>Benutzte Pins und DMAs :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">PA4  -&gt; DCMI_HSYNC  = Camera HSYNC (HREF)\r\nPA6  -&gt; DCMI_PCLK   = Camera PIXCLK (PCLK)\r\nPB6  -&gt; DCMI_D5     = Camera D5 (D7)\r\nPB7  -&gt; DCMI_VSYNC  = Camera VSYNC (VSYNC)\r\nPB8  -&gt; I2C1-SCL    = Camera I2C-SCL (SIOC)\r\nPB9  -&gt; I2C1-SDA    = Camera I2C-SDA (SIOD)\r\nPC6  -&gt; DCMI_D0     = Camera D0 (D2)\r\nPC7  -&gt; DCMI_D1     = Camera D1 (D3)\r\nPC8  -&gt; DCMI_D2     = Camera D2 (D4)\r\nPC9  -&gt; DCMI_D3     = Camera D3 (D5)\r\nPE4  -&gt; DCMI_D4     = Camera D4 (D6)\r\nPE5  -&gt; DCMI_D6     = Camera D6 (D8)\r\nPE6  -&gt; DCMI_D7     = Camera D7 (D9) \r\n\r\n (*) Texte in Klammer beschreiben den Aufdruck auf dem OV9655-Modul\r\n\r\n     DMA : entweder DMA2_STREAM1_CHANNEL1\r\n           oder     DMA2_STREAM7_CHANNEL1\r\n\r\n     Camera (GND)  = GND\r\n     Camera (Vcc)  = 3,3V\r\n     Camera (XCLK) = 24MHz (10...48MHz)\r\n     Camera (PWDN) = nc\r\n     Camera (RET)  = nc\r\n<\/pre>\n<p><strong><strong>Voraussetzungen :<\/strong><\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : DCMI, DMA\r\nBenutzte Librarys : STM32_UB_I2C1, STM32_UB_LCD_ST7783<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  OV9655_OK =0,    \/\/ OV9655 OK\r\n  OV9655_I2C_ERR,  \/\/ Fehler bei I2C\r\n  OV9655_MIDH_ERR, \/\/ Fehler bei ID-HIByte\r\n  OV9655_MIDL_ERR, \/\/ Fehler bei ID-LoByte\r\n  OV9655_PID_ERR,  \/\/ Fehler bei Produkt-ID\r\n  OV9655_LCD_ERR   \/\/ Fehler beim Display\r\n}OV9655_ERR_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">OV9655_ERR_t UB_OV9655_Init(void);  \/\/ Init vom OV9655\r\nvoid UB_OV9655_CaptureStart(void);  \/\/ start vom Capture-Mode\r\nvoid UB_OV9655_CaptureStop(void);   \/\/ stop vom Capture-Mode\r\nvoid UB_OV9655_Snapshot(void);      \/\/ macht eine einzelne Aufnahme\r\nvoid UB_OV9655_SetHelligkeit(uint8_t wert); \/\/ einstellen der Helligkeit\r\nvoid UB_OV9655_Snapshot2RAM(void);          \/\/ macht einen Snapshots ins RAM\r\nvoid UB_OV9655_RAM2BMP(void);               \/\/ erstellt ein BMP-File<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 29.03.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.0\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der OV9655-Library (Camera per DCMI)\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_ov9655.h\"\r\n\r\nint main(void)\r\n{\r\n  OV9655_ERR_t check;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init vom Camera-Modul (OV9655)\r\n  check=UB_OV9655_Init();\r\n  if(check==OV9655_OK) {\r\n    \/\/ wenn alles OK -&gt; Capture-Mode starten\r\n    UB_OV9655_CaptureStart();\r\n  }\r\n  else {\r\n    \/\/ bei einem Fehler\r\n    \/\/ roten Bildschirm anzeigen\r\n    UB_LCD_FillScreen(RGB_COL_RED);\r\n  }\r\n\r\n  while(1)\r\n  {\r\n\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/12\/ub_stm32f4_dcmi_ov9655_v101.zip\">ub_stm32f4_dcmi_ov9655_v101<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/12\/Demo_27_DCMI_OV9655.zip\">Demo_27_DCMI_OV9655<\/a><\/p>\n<h3 id=\"comments-title\">18 Antworten auf <em>27-DCMI_OV9655-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1398\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1398\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/7ca91af7614416957609a57a202884f4?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">oliver<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Februar 2014 um 23:35<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi,<br \/>\neine weitere tolle library \u2026<br \/>\nW\u00fcrde sie gerne benutzen, jedoch ohne ein basis board, sondern selbst gef\u00e4delt.<br \/>\nProblem ist dass mein camera board von wafeshare eine andere Beschriftung aufweist.<br \/>\nIch nehme an SIOC ist SCL und SIOD ist SDA. Die Daten Pins z\u00e4hlen D2\u2026D9<br \/>\nIst dann Camera D0 in deiner Beschreibum D2 bei mir?<br \/>\nPWDN, XCLK und RET gibt es auch noch die bei Dir nicht definiert sind?<br \/>\nHab auch ein anderes display das per SPI angesteuert wird. Muss dann wahrscheinlich die daten ins RAM schreiben lassen und von dort per SPI verschicken \u2013 oder?<br \/>\nW\u00fcrde mich sehr \u00fcber hinweise freuen.<\/p>\n<p>Danke.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1399\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1399\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. Februar 2014 um 10:29<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi, du hast recht :<br \/>\nSIOC=SCL, SIOD=SDA, D2=D0 \u2026 D9=D7<br \/>\nPWD und RET k\u00f6nnen offen bleiben aber an XCLK muss ein 24MHz Quarz angeschlossen werden (du kannst auch MC0 der CPU daf\u00fcr programmieren)<br \/>\nF\u00fcr ein Display mit SPI-BUS hab ich schon eine Library, kannst dich ja an der orientieren (67=ILI9341-SPI) einen Buffer im RAM brauchst du nicht, das Display hat ja sicher einen Bildspeicher. Es reicht die Pixel die angezeigt\/ge\u00e4ndert werden sollen, per SPI zum LCD zu senden.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1462\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1462\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a3a18a9e04c5021f56f9541625cd9c74?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\"><a class=\"url\" href=\"http:\/\/www.arectron.com\/\" rel=\"external nofollow\">Ferhat YOL<\/a><\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. M\u00e4rz 2014 um 01:36<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi<br \/>\nI\u2019m using STM32F4 DCMI with the OV9655 Camera. I set the camera to RGB565 format. My camera is working, but the color is not right.<br \/>\nThis is the test Video <a href=\"https:\/\/www.youtube.com\/watch?v=yTBqYgAgdZQ\" rel=\"nofollow\">https:\/\/www.youtube.com\/watch?v=yTBqYgAgdZQ<\/a><br \/>\nWhat is the cause of the problem?<\/p>\n<p>Regards<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1468\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1468\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">13. M\u00e4rz 2014 um 20:57<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Is the setting from the LCD also in RGB565 ? And have you tested the display standalone if all colors are ok \u2026Full RED, Full Green, Full Blue ? This is a odd failure because the DCMI is a bus and actually no color cant be lost. Event. it is a failure in the LCD setup, like BGR565 instead of RGB565 !! Try to fill the Display with Color-Value 0x001F -&gt; this must be BLUE.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1474\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1474\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a3a18a9e04c5021f56f9541625cd9c74?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\"><a class=\"url\" href=\"http:\/\/www.arectron.com\/\" rel=\"external nofollow\">Ferhat YOL<\/a><\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">18. M\u00e4rz 2014 um 21:51<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hello<br \/>\nThank you for your answer. I solved the problem. Ov9655 had problems in the setup settings.<br \/>\nCamera is working now.<br \/>\nHere\u2019s the test video<br \/>\n<a href=\"http:\/\/www.youtube.com\/watch?v=z7-FOgELcbE\" rel=\"nofollow\">http:\/\/www.youtube.com\/watch?v=z7-FOgELcbE<\/a><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2649\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-2649\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/76e8305c6353a40f4982ab8043cabefe?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Mac<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">7. Dezember 2014 um 15:48<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hello,<br \/>\nSory, I can only write in English, hope you can respond.<br \/>\nYou library is great, but is it possible to write an image to the memory in order to process this image pixel by pixel? I changed the Capture Mode to SnapShot, i tried some other changes like DMA_Memory0BaseAddr = buffer, but i still don\u2019t know if the image is written and how to check it.<br \/>\nRegards.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2665\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-2665\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">8. Dezember 2014 um 21:41<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>you need a lot of memory for a complete picture. for a first test use QQVGA (160 x 120 Pixel = 37kBytes) . than make a ram_buffer and change the dma target to this buffer (instead of \u201cLCD_RAM_ADR\u201d)<br \/>\n<code><br \/>\nuint16_t ram_buf[160*120];<br \/>\n<\/code><br \/>\nyou have also to enable \u201cDMA_MemoryInc_Enable\u201d<br \/>\nand after capturing one frame you can send the buffer as BMP to a uart<br \/>\nand test the picture with an pc.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2708\" class=\"comment odd alt depth-3\">\n<div id=\"comment-2708\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/76e8305c6353a40f4982ab8043cabefe?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Mac<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. Dezember 2014 um 23:07<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Thanks a lot for your answer.<br \/>\nI made a buffer and I think I have a picture in memory (when I\u2019m monitoring it in debug).<br \/>\nI also used your library for uart and i sent the buffer to my PC. I received 38418 8bit hex values (can\u2019t display them as picture) and i would like to ask you another question: how can i preview this picture?<br \/>\nDo i need to change the camera parameters for other picture format (because i didn\u2019t change anything in you setup)?<br \/>\nIs the current format UYVY?<\/p>\n<p>Thanks again, I hope you can help me once more.<br \/>\nBest Regards.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2715\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-4\">\n<div id=\"comment-2715\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Dezember 2014 um 21:01<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>if you want to make a BMP-File you must add a header and convert the 16bpp in a 24bpp format.<br \/>\ni have made this already for many other projects so try this :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\">  const uint8_t BMP_HEADER_160x120[54]={\r\n  0x42,0x4D,0x36,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,\r\n  0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,\r\n  0xA0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x01,0x00,\r\n  0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0x00,0x00,\r\n  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};\r\n\r\nvoid send_bmp_file(void)\r\n{\r\n  uint32_t n,adr=0;\r\n  uint16_t color,x,y;\r\n  uint8_t r,g,b;\r\n\r\n  \/\/ BMP-Header senden\r\n  for(n=0;n&lt;54;n++) {     \r\n    UB_Uart_SendByte(COM3,BMP_HEADER_160x120[n]); \r\n  }\r\n\r\n  \/\/ Farb-Daten senden\r\n  adr=0;\r\n  for(x=0;x&lt;160;x++) {\r\n    for(y=0;y&lt;120;y++) { color=ram_buffer[adr]; adr++; r=((color&amp;0xF800)&gt;&gt;8);  \/\/ 5bit rot\r\n      g=((color&amp;0x07E0)&gt;&gt;3);  \/\/ 6bit gruen\r\n      b=((color&amp;0x001F)&lt;&lt;3);  \/\/ 5bit blau\r\n      UB_Uart_SendByte(COM3,b);\r\n      UB_Uart_SendByte(COM3,g);\r\n      UB_Uart_SendByte(COM3,r);\r\n    }\r\n  }\r\n}\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2745\" class=\"comment odd alt depth-5\">\n<div id=\"comment-2745\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/76e8305c6353a40f4982ab8043cabefe?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Mac<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">17. Dezember 2014 um 18:57<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Thanks again, that really helped me <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/><br \/>\nI Can preview pictures now, but the colors are too much blue. I thought that I have wrong format (YUV), and i need to change it to RGB565, so i changed settings registers:<br \/>\n{0\u00d712,0\u00d763}<br \/>\n{0\u00d740,0xd0}<br \/>\nwhich according to datasheet are rgb565, but picture looks exactly the same. Do you now wheres the problem?<br \/>\nMaybe it\u2019s not the color format, but some other setting?<br \/>\nBest Regards.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2746\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-5\">\n<div id=\"comment-2746\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">17. Dezember 2014 um 19:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>sorry, i cant help, but i updated at the moment the library to version 1.1 with \u201csnapshot in ram\u201d and \u201cram to bmp\u201d<br \/>\nwith my hardware the picture locks ok.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2774\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-2774\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/af5be9fa3f95b3ec9c424ed130b7f2d3?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Cortex-Einsteiger<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. Dezember 2014 um 15:00<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi,<br \/>\nich habe oft (nicht immer) das Problem, dass zwar die Initialisierung \u201cOk\u201d zur\u00fcck meldet, aber das Bildschirmfeld schwarz bleibt.<br \/>\nIch muss aber dazu sagen, dass ich die Daten immer vorher in ein Arry geschoben habe um sie danach anzuzeigen.<br \/>\nDas war bei der alten Version so und ist auch bei der neuen Version mit integrierter Snapshot2RAM Funktion der Fall.<br \/>\nHatte das von euch schon mal jemand oder eine Idee woran es liegen k\u00f6nnte?<br \/>\nEine z.B. floating Reset Leitung kann es eigentlich nicht sein, da die Initialiserung immer erfolgreich ist<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3051\" class=\"comment even depth-2\">\n<div id=\"comment-3051\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/8de0a7c3209b460de5cd9b342b311213?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">mario<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. M\u00e4rz 2015 um 15:08<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi,<br \/>\ndas Problem hab ich auch immer wieder.<\/p>\n<p>mit dem oszi hab ich die datenleitungen der CAM angeschaut und dort kommen auf den ersten Blick plausible Daten daher.<br \/>\nes sieht so aus als w\u00fcrde einfach der DMA vom STM32 nicht ausl\u00f6sen. dadurch bleibt der RAM-Buffer auf 0\u00d700 \u2013&gt; schwarz<\/p>\n<p>ich vermute ein Timing-Problem.<br \/>\nvielleicht ist es aber doch ein Problem mit den offenen Reset und PWDN-Leitungen.<br \/>\nauch das Einschalten der Versorgung k\u00f6nnte die Probleme vielleicht verursachen. (schlechte Spannungspegel verwirren den Interrupt??)<br \/>\nich werd es weiter analysieren<\/p>\n<p>LG Mario<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3049\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-3049\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/8de0a7c3209b460de5cd9b342b311213?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">mario<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. M\u00e4rz 2015 um 14:45<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi,<br \/>\nich hab die lib f\u00fcr ein projekt verwendet und st\u00e4ndig mit \u00fcberschreibern auf meine variablen gek\u00e4mpft. ich hab den Fehler dann schlussendlich gefunden.<br \/>\ndas Problem liegt bei der initialisierung des DMA f\u00fcr den snapshot-mode:<\/p>\n<p>funktion: P_OV9655_InitDMA(uint8_t mode)<\/p>\n<p>snapshot-mode bereich:<br \/>\nDMA_InitStructure.DMA_BufferSize = OV9655_PIXEL;<\/p>\n<p>\/\/ der DMA erwartet sich die size in 32 bit Einheiten!<br \/>\n\/\/ OV9655_PIXEL hat aber f\u00fcr jedes Pixel nur 16 bit<\/p>\n<p>richtig ist folgende anweisung:<br \/>\nDMA_InitStructure.DMA_BufferSize = OV9655_PIXEL\/2;<\/p>\n<p>LG Mario<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3073\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-3073\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a7b8ce405ff63a652ab2c4cffc760a44?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">gfschwengle<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">2. April 2015 um 11:20<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hello<\/p>\n<p>I am complete noob with cortex. I have compliled and build, everything goes smoothly. Except It is not working. I am using the stm LCD TFT 3.5 and the connection are good. The camera is also good. The leds of the stm32f4 work, like in the program. Accept the LCD does not display.<\/p>\n<p>Can you help?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3075\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-3075\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">3. April 2015 um 21:24<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>first, test the lcd wihout the camera.<br \/>\nsecond, double check all connections again<br \/>\n(the pinout is a bit tricky)<br \/>\nthird, check with the debugger the return value of the init function<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3100\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-3100\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9a096a354a0d38bf195b75b87f6c706e?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Jonathan<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. April 2015 um 10:47<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Eine Frage: mein Ziel ist es, ein Bild von der Kamera zu verarbeiten und das Resultat auf dem Display anzuzeigen. Ich benutze ein Beispiel von STM, welches aber nur 320\u00d7160 Bilder im Continuous-Mode anzeigt und versuche das gem\u00e4ss deinem Beispiel anzupassen.<br \/>\nF\u00fcr mein Projekt muss ich es im internen RAM abspeichern, d.h. Aufl\u00f6sung= 160\u00d7120 wird benutzt. Ich mache also einen Snapshot ins RAM. Danach m\u00f6chte ich das Bild vom RAM auf dem Display anzeigen. Dies funktioniert soweit, jedoch wird mir das Bild \u201causeinandergeschnitten\u201d, d.h. der linke Bildteil m\u00fcsste am rechten Ende angesetzt werden. Ich habe verwende dazu folgende Funktion:<\/p>\n<p>void LCD_WriteBMP2(uint16_t Xpos, uint8_t Ypos, uint16_t Width, uint16_t Height, unsigned char *bitmap){<br \/>\nuint32_t index;<br \/>\nunsigned short *bitmap_ptr = (unsigned short *)bitmap;<br \/>\nLCD_SetDisplayWindow(Xpos, Ypos, Width, Height);<br \/>\nLCD_SetCursor(Xpos, Ypos);<br \/>\nLCD_WriteRAM_Prepare();<\/p>\n<p>for(index = 0; index &lt; 19200; index++){<br \/>\nLCD_WriteRAM(bitmap_ptr[index]);<br \/>\nfor(uint16_t i=0;i&lt;100;i++); \/\/ pause<br \/>\n}<br \/>\n}<\/p>\n<p>und rufe sie so auf:<br \/>\nLCD_WriteBMP2(0, 0, 160, 120, (unsigned char*) ov9655_ram_buffer);<\/p>\n<p>Hast du eine Idee, warum mein Bild &#8222;auseinandergeschnitten&#8220; wird? Liegt das an Displayeinstellungen? Die DMA und DCMI habe ich konfiguriert wie du\u2026<\/p>\n<p>Vielen Dank im Voraus!<br \/>\nJonathan<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3103\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-3103\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9a096a354a0d38bf195b75b87f6c706e?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Jonathan<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. April 2015 um 12:15<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ich habe die L\u00f6sung f\u00fcr mein Problem gefunden: es war ein Indexproblem. Die obige Funktion muss so aufgerufen werden:<br \/>\nLCD_WriteBMP2(0, 0, <b>159<\/b>, <b>119<\/b>, (unsigned char*) ov9655_ram_buffer);<br \/>\nSomit stimmt die Aufl\u00f6sung und die Verzerrung\/Auseinanderschnitt ist behoben.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Mit dieser Library kann ein 1,3MPixel Digital-Camera-Modul (mit OV9655-Chip) per DMA und DCMI-Interface an das STM32F4 Discovery-Board angeschlossen werden. Das Modul gibts f\u00fcr ca. 15 EUR z.B. bei EBay. Und hat eine max Aufl\u00f6sung von 1280\u00d71024 Pixel (SXGA) und eine &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=253\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":27,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[182,9,183,7],"class_list":["post-253","page","type-page","status-publish","hentry","category-stm32f4","tag-dcmi","tag-library","tag-ov9655","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=253"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/253\/revisions"}],"predecessor-version":[{"id":1755,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/253\/revisions\/1755"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}