Skip to content

Commit ec05b98

Browse files
committed
Add support for Arduino Genuino 101 board
1 parent 0ffd3c1 commit ec05b98

File tree

33 files changed

+540
-656
lines changed

33 files changed

+540
-656
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@
2626
#*.exe
2727
*.out
2828
*.app
29+
30+
# bakup file
31+
*.bak

.gitignore.bak

Lines changed: 0 additions & 28 deletions
This file was deleted.

ArduCAM/ArduCAM.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
2016/06/14 V3.5.1 by Lee Add support for ArduCAM-Mini-5MP-Plus OV5640_CAM.
8989
2016/09/29 V3.5.2 by Lee Optimize the OV5642 register settings
9090
2016/10/05 V4.0.0 by Lee Add support for second generation hardware platforms like ArduCAM shield V2, ArduCAM-Mini-5MP-Plus(OV5642/OV5640).
91+
2016/10/17 V4.0.1 by Lee Add support for Arduino Genuino 101 board
9192
--------------------------------------*/
9293
#include "Arduino.h"
9394
#include "ArduCAM.h"
@@ -169,6 +170,7 @@ int ArduCAM::bus_write(int address, int value) {
169170
SPI.transfer(value);
170171
// take the SS pin high to de-select the chip:
171172
sbi(P_CS, B_CS);
173+
return 1;
172174
}
173175

174176
//Low level SPI read operation

ArduCAM/ArduCAM.h

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
2016/06/14 V3.5.1 by Lee Add support for ArduCAM-Mini-5MP-Plus OV5640_CAM.
8888
2016/09/29 V3.5.2 by Lee Optimize the OV5642 register settings
8989
2016/10/05 V4.0.0 by Lee Add support for second generation of ArduCAM shield V2, ArduCAM-Mini-5MP-Plus(OV5642/OV5640).
90+
2016/10/17 V4.0.1 by Lee Add support for Arduino Genuino 101 board
9091
--------------------------------------*/
9192

9293

@@ -97,9 +98,7 @@
9798
#include <pins_arduino.h>
9899
#include "memorysaver.h"
99100

100-
101101
#if defined (__AVR__)
102-
103102
#define cbi(reg, bitmask) *reg &= ~bitmask
104103
#define sbi(reg, bitmask) *reg |= bitmask
105104
#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);
@@ -112,7 +111,6 @@
112111
#define regsize uint8_t
113112
#endif
114113

115-
116114
#if defined(__arm__)
117115

118116
#define cbi(reg, bitmask) *reg &= ~bitmask
@@ -131,7 +129,6 @@
131129
#define regsize uint32_t
132130
#define PROGMEM
133131

134-
135132
#define pgm_read_byte(x) (*((char *)x))
136133
// #define pgm_read_word(x) (*((short *)(x & 0xfffffffe)))
137134
#define pgm_read_word(x) ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x)))
@@ -166,9 +163,21 @@
166163

167164
#define regtype volatile uint32_t
168165
#define regsize uint32_t
169-
170166
#endif
171167

168+
#if defined(__CPU_ARC__)
169+
#define cbi(reg, bitmask) *reg &= ~bitmask
170+
#define sbi(reg, bitmask) *reg |= bitmask
171+
#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);
172+
#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);
173+
#define cport(port, data) port &= data
174+
#define sport(port, data) port |= data
175+
#define swap(type, i, j) {type t = i; i = j; j = t;}
176+
#define fontbyte(x) pgm_read_byte(&cfont.font[x])
177+
#define regtype volatile uint32_t
178+
#define regsize uint32_t
179+
#endif
180+
172181
/****************************************************/
173182
/* Sensor related definition */
174183
/****************************************************/

ArduCAM/examples/Mini_5MP_Plus/ArduCAM_Mini_5MP_Plus_4CAM/ArduCAM_Mini_5MP_Plus_4CAM.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ void setup() {
152152

153153
void loop() {
154154
// put your main code here, to run repeatedly:
155-
uint8_t temp,temp_last;
156-
uint8_t start_capture = 0;
155+
uint8_t temp=0;
157156
temp = Serial.read();
158157
switch(temp)
159158
{
@@ -457,7 +456,7 @@ void loop() {
457456
}
458457
uint8_t read_fifo_burst(ArduCAM myCAM)
459458
{
460-
uint8_t temp,temp_last;
459+
uint8_t temp = 0,temp_last = 0;
461460
uint32_t length = 0;
462461
length = myCAM.read_fifo_length();
463462
Serial.print("Length is ");
@@ -486,4 +485,5 @@ uint8_t read_fifo_burst(ArduCAM myCAM)
486485
is_header = false;
487486
//Clear the capture done flag
488487
myCAM.clear_fifo_flag();
488+
return 1;
489489
}

ArduCAM/examples/Mini_5MP_Plus/ArduCAM_Mini_5MP_Plus_LowPowerMode/ArduCAM_Mini_5MP_Plus_LowPowerMode.ino

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -83,97 +83,94 @@ void setup() {
8383
}
8484

8585
void loop() {
86-
uint8_t temp,temp_last;
86+
uint8_t temp = 0xff,temp_last = 0;
8787
uint8_t start_capture = 0;
8888

8989
temp = Serial.read();
9090
switch(temp)
9191
{
9292
case 0:
93-
#if defined (OV5640_MINI_5MP_PLUS)
94-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
93+
temp = 0xff;
94+
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
95+
#if defined (OV5640_MINI_5MP_PLUS)
9596
myCAM.OV5640_set_JPEG_size(OV5640_320x240);delay(1000);
96-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
9797
#else
98-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
99-
myCAM.OV5642_set_JPEG_size(OV5642_320x240);
98+
myCAM.OV5642_set_JPEG_size(OV5642_320x240);
10099
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
101100
#endif
102101
break;
103102
case 1:
104-
#if defined (OV5640_MINI_5MP_PLUS)
103+
temp = 0xff;
105104
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
105+
#if defined (OV5640_MINI_5MP_PLUS)
106106
myCAM.OV5640_set_JPEG_size(OV5640_352x288);delay(1000);
107-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
108107
#else
109-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
110-
myCAM.OV5642_set_JPEG_size(OV5642_640x480);
111-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
108+
myCAM.OV5642_set_JPEG_size(OV5642_640x480);
112109
#endif
110+
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
113111
break;
114112
case 2:
115-
#if defined (OV5640_MINI_5MP_PLUS)
116-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
113+
temp = 0xff;
114+
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
115+
#if defined (OV5640_MINI_5MP_PLUS)
117116
myCAM.OV5640_set_JPEG_size(OV5640_640x480);delay(1000);
118-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
119117
#else
120-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
121-
myCAM.OV5642_set_JPEG_size(OV5642_1280x960);
122-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
118+
myCAM.OV5642_set_JPEG_size(OV5642_1280x960);
123119
#endif
120+
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
124121
break;
125122
case 3:
126-
#if defined (OV5640_MINI_5MP_PLUS)
127123
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
124+
temp = 0xff;
125+
#if defined (OV5640_MINI_5MP_PLUS)
128126
myCAM.OV5640_set_JPEG_size(OV5640_800x480);delay(1000);
129-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
130-
131127
#else
132-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
133-
myCAM.OV5642_set_JPEG_size(OV5642_1600x1200);delay(1000);
134-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
128+
myCAM.OV5642_set_JPEG_size(OV5642_1600x1200);delay(1000);
135129
#endif
130+
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
136131
break;
137132
case 4:
138-
#if defined (OV5640_MINI_5MP_PLUS)
133+
temp = 0xff;
139134
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
135+
#if defined (OV5640_MINI_5MP_PLUS)
140136
myCAM.OV5640_set_JPEG_size(OV5640_1024x768);delay(1000);
141-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
142137
#else
143-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
144-
myCAM.OV5642_set_JPEG_size(OV5642_2048x1536);delay(1000);
145-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
138+
myCAM.OV5642_set_JPEG_size(OV5642_2048x1536);delay(1000);
146139
#endif
140+
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
147141
break;
148142
case 5:
149-
#if defined (OV5640_MINI_5MP_PLUS)
150-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
143+
temp = 0xff;
144+
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
145+
#if defined (OV5640_MINI_5MP_PLUS)
151146
myCAM.OV5640_set_JPEG_size(OV5640_1280x960);delay(1000);
152-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
153147
#else
154-
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
155-
myCAM.OV5642_set_JPEG_size(OV5642_2592x1944);delay(1000);
156-
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
148+
myCAM.OV5642_set_JPEG_size(OV5642_2592x1944);delay(1000);
157149
#endif
150+
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
158151
break;
159152
#if defined (OV5640_MINI_5MP_PLUS)
160153
case 6:
154+
temp = 0xff;
161155
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
162156
myCAM.OV5640_set_JPEG_size(OV5640_1600x1200);delay(1000);
163157
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
164158
break;
165159
case 7:
160+
temp = 0xff;
166161
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
167162
myCAM.OV5640_set_JPEG_size(OV5640_2048x1536);delay(1000);
168163
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
169164
break;
170165
case 8:
166+
temp = 0xff;
171167
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);delay(1000);
172168
myCAM.OV5640_set_JPEG_size(OV5640_2592x1944);delay(1000);
173169
myCAM.set_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);
174170
break;
175171
#endif
176172
case 0x10:
173+
temp = 0xff;
177174
start_capture = 1;
178175
Serial.println("ACK CMD CAM start single shot.");
179176
myCAM.clear_bit(ARDUCHIP_GPIO,GPIO_PWDN_MASK);//disable low power

ArduCAM/examples/Mini_5MP_Plus/ArduCAM_Mini_5MP_Plus_Multi_Capture2SD/ArduCAM_Mini_5MP_Plus_Multi_Capture2SD.ino

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
//IF the FRAMES_NUM is 0X05, take five photos
1717
//IF the FRAMES_NUM is 0X06, take six photos
1818
//IF the FRAMES_NUM is 0X07, continue shooting until the FIFO is full
19-
//You can see the picture in the SD card.\
19+
//You can see the picture in the SD card.
2020
// This program requires the ArduCAM V4.0.0 (or later) library and ArduCAM_Mini_5MP_Plus
2121
// and use Arduino IDE 1.5.2 compiler or above
2222

@@ -111,8 +111,6 @@ void setup() {
111111

112112
void loop() {
113113
// put your main code here, to run repeatedly:
114-
uint8_t temp, temp_last;
115-
bool is_header = false;
116114
myCAM.flush_fifo();
117115
myCAM.clear_fifo_flag();
118116
#if defined (OV5640_MINI_5MP_PLUS)
@@ -141,14 +139,10 @@ void loop() {
141139

142140
uint8_t read_fifo_burst(ArduCAM myCAM)
143141
{
144-
uint8_t temp, temp_last;
142+
uint8_t temp = 0, temp_last = 0;
145143
uint32_t length = 0;
146144
static int i = 0;
147145
static int k = 0;
148-
unsigned long position = 0;
149-
uint16_t frame_cnt = 0;
150-
uint8_t remnant = 0;
151-
char quad_buf[4] = {};
152146
char str[8];
153147
File outFile;
154148
byte buf[256];
@@ -226,4 +220,5 @@ uint8_t read_fifo_burst(ArduCAM myCAM)
226220

227221
}
228222
myCAM.CS_HIGH();
223+
return 1;
229224
}

0 commit comments

Comments
 (0)