-
-
Notifications
You must be signed in to change notification settings - Fork 61
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from PaoloP74/master
Patch v1.0.1
- Loading branch information
Showing
36 changed files
with
4,007 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,86 @@ | ||
############################################################## | ||
|
||
menu.speed=Speed | ||
|
||
atmega328pb.name=ATmega328PB | ||
atmega328pb.menu.speed.16mhz=16 MHz | ||
atmega328pb.menu.speed.16mhz.build.f_cpu=16000000L | ||
atmega328pb.menu.speed.8mhz=8 MHz | ||
atmega328pb.menu.speed.8mhz.build.f_cpu=8000000L | ||
atmega328pb.menu.speed.4mhz=4 MHz | ||
atmega328pb.menu.speed.4mhz.build.f_cpu=4000000L | ||
atmega328pb.menu.speed.1mhz=1 MHz | ||
atmega328pb.menu.speed.1mhz.build.f_cpu=1000000L | ||
atmega328pb.menu.speed.20mhz=20 MHz | ||
atmega328pb.menu.speed.20mhz.build.f_cpu=20000000L | ||
atmega328pb.bootloader.tool=avrdude | ||
atmega328pb.bootloader.low_fuses=0xFF | ||
atmega328pb.bootloader.high_fuses=0xD6 | ||
atmega328pb.bootloader.extended_fuses=0xFD | ||
atmega328pb.bootloader.file=optiboot_m328pb.hex | ||
atmega328pb.bootloader.unlock_bits=0x3F | ||
atmega328pb.bootloader.lock_bits=0xCF | ||
atmega328pb.upload.tool=avrdude | ||
atmega328pb.upload.protocol=arduino | ||
atmega328pb.upload.maximum_size=32256 | ||
atmega328pb.upload.maximum_data_size=2048 | ||
atmega328pb.upload.speed=57600 | ||
atmega328pb.build.mcu=atmega328pb | ||
atmega328pb.build.board=AVR_UNO | ||
atmega328pb.build.core=arduino:arduino | ||
atmega328pb.build.variant=standard | ||
atmega328pbcc.name=Atmel ATmega328PB Crystal Clock | ||
atmega328pbcc.bootloader.file=optiboot_m328pb.hex | ||
atmega328pbcc.bootloader.unlock_bits=0x3F | ||
atmega328pbcc.bootloader.lock_bits=0xCF | ||
atmega328pbcc.upload.tool=avrdude | ||
atmega328pbcc.upload.protocol=arduino | ||
atmega328pbcc.upload.maximum_size=32256 | ||
atmega328pbcc.upload.maximum_data_size=2048 | ||
atmega328pbcc.upload.speed=57600 | ||
atmega328pbcc.build.mcu=atmega328pb | ||
atmega328pbcc.build.board=AVR_UNO | ||
atmega328pbcc.build.core=arduino:arduino | ||
atmega328pbcc.build.variant=atmega328pb | ||
atmega328pbcc.bootloader.tool=avrdude | ||
atmega328pbcc.bootloader.low_fuses=0xFF | ||
atmega328pbcc.bootloader.high_fuses=0xDC | ||
atmega328pbcc.bootloader.extended_fuses=0xF5 | ||
atmega328pbcc.menu.speed.16mhz=16 MHz | ||
atmega328pbcc.menu.speed.16mhz.build.f_cpu=16000000L | ||
atmega328pbcc.menu.speed.8mhz=8 MHz | ||
atmega328pbcc.menu.speed.8mhz.build.f_cpu=8000000L | ||
atmega328pbcc.menu.speed.4mhz=4 MHz | ||
atmega328pbcc.menu.speed.4mhz.build.f_cpu=4000000L | ||
atmega328pbcc.menu.speed.1mhz=1 MHz | ||
atmega328pbcc.menu.speed.1mhz.build.f_cpu=1000000L | ||
atmega328pbcc.menu.speed.20mhz=20 MHz | ||
atmega328pbcc.menu.speed.20mhz.build.f_cpu=20000000L | ||
|
||
atmega328pbec.name=Atmel ATmega328PB External Clock | ||
atmega328pbec.bootloader.file=optiboot_m328pb.hex | ||
atmega328pbec.bootloader.unlock_bits=0x3F | ||
atmega328pbec.bootloader.lock_bits=0xCF | ||
atmega328pbec.upload.tool=avrdude | ||
atmega328pbec.upload.protocol=arduino | ||
atmega328pbec.upload.maximum_size=32256 | ||
atmega328pbec.upload.maximum_data_size=2048 | ||
atmega328pbec.upload.speed=57600 | ||
atmega328pbec.build.mcu=atmega328pb | ||
atmega328pbec.build.board=AVR_UNO | ||
atmega328pbec.build.core=arduino:arduino | ||
atmega328pbec.build.variant=atmega328pb | ||
atmega328pbec.bootloader.tool=avrdude | ||
atmega328pbec.bootloader.low_fuses=0xE0 | ||
atmega328pbec.bootloader.high_fuses=0xDC | ||
atmega328pbec.bootloader.extended_fuses=0xF5 | ||
atmega328pbec.menu.speed.16mhz=16 MHz | ||
atmega328pbec.menu.speed.16mhz.build.f_cpu=16000000L | ||
atmega328pbec.menu.speed.8mhz=8 MHz | ||
atmega328pbec.menu.speed.8mhz.build.f_cpu=8000000L | ||
atmega328pbec.menu.speed.4mhz=4 MHz | ||
atmega328pbec.menu.speed.4mhz.build.f_cpu=4000000L | ||
atmega328pbec.menu.speed.1mhz=1 MHz | ||
atmega328pbec.menu.speed.1mhz.build.f_cpu=1000000L | ||
atmega328pbec.menu.speed.20mhz=20 MHz | ||
atmega328pbec.menu.speed.20mhz.build.f_cpu=20000000L | ||
|
||
atmega328pbic.name=Atmel ATmega328PB Internal Clock | ||
atmega328pbic.bootloader.file=optiboot_m328pb.hex | ||
atmega328pbic.bootloader.unlock_bits=0x3F | ||
atmega328pbic.bootloader.lock_bits=0xCF | ||
atmega328pbic.upload.tool=avrdude | ||
atmega328pbic.upload.protocol=arduino | ||
atmega328pbic.upload.maximum_size=32256 | ||
atmega328pbic.upload.maximum_data_size=2048 | ||
atmega328pbic.upload.speed=57600 | ||
atmega328pbic.build.mcu=atmega328pb | ||
atmega328pbic.build.board=AVR_UNO | ||
atmega328pbic.build.core=arduino:arduino | ||
atmega328pbic.build.variant=atmega328pb | ||
atmega328pbic.bootloader.tool=avrdude | ||
atmega328pbic.menu.speed.8mhz=8 MHz | ||
atmega328pbic.menu.speed.8mhz.build.f_cpu=8000000L | ||
atmega328pbic.menu.speed.8mhz.bootloader.low_fuses=0xE2 | ||
atmega328pbic.menu.speed.8mhz.bootloader.high_fuses=0xDC | ||
atmega328pbic.menu.speed.8mhz.bootloader.extended_fuses=0xF5 | ||
atmega328pbic.menu.speed.1mhz=1 MHz | ||
atmega328pbic.menu.speed.1mhz.build.f_cpu=1000000L | ||
atmega328pbic.menu.speed.1mhz.bootloader.low_fuses=0x62 | ||
atmega328pbic.menu.speed.1mhz.bootloader.high_fuses=0xDC | ||
atmega328pbic.menu.speed.1mhz.bootloader.extended_fuses=0xF5 | ||
|
||
############################################################## |
143 changes: 143 additions & 0 deletions
143
...ega328pb/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
/* | ||
SCP1000 Barometric Pressure Sensor Display | ||
Shows the output of a Barometric Pressure Sensor on a | ||
Uses the SPI library. For details on the sensor, see: | ||
http://www.sparkfun.com/commerce/product_info.php?products_id=8161 | ||
http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ | ||
This sketch adapted from Nathan Seidle's SCP1000 example for PIC: | ||
http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip | ||
Circuit: | ||
SCP1000 sensor attached to pins 6, 7, 10 - 13: | ||
DRDY: pin 6 | ||
CSB: pin 7 | ||
MOSI: pin 11 | ||
MISO: pin 12 | ||
SCK: pin 13 | ||
created 31 July 2010 | ||
modified 14 August 2010 | ||
by Tom Igoe | ||
*/ | ||
|
||
// the sensor communicates using SPI, so include the library: | ||
#include <SPI.h> | ||
|
||
//Sensor's memory register addresses: | ||
const int PRESSURE = 0x1F; //3 most significant bits of pressure | ||
const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure | ||
const int TEMPERATURE = 0x21; //16 bit temperature reading | ||
const byte READ = 0b11111100; // SCP1000's read command | ||
const byte WRITE = 0b00000010; // SCP1000's write command | ||
|
||
// pins used for the connection with the sensor | ||
// the other you need are controlled by the SPI library): | ||
const int dataReadyPin = 6; | ||
const int chipSelectPin = 7; | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
|
||
// start the SPI library: | ||
SPI.begin(); | ||
|
||
// initalize the data ready and chip select pins: | ||
pinMode(dataReadyPin, INPUT); | ||
pinMode(chipSelectPin, OUTPUT); | ||
|
||
//Configure SCP1000 for low noise configuration: | ||
writeRegister(0x02, 0x2D); | ||
writeRegister(0x01, 0x03); | ||
writeRegister(0x03, 0x02); | ||
// give the sensor time to set up: | ||
delay(100); | ||
} | ||
|
||
void loop() { | ||
//Select High Resolution Mode | ||
writeRegister(0x03, 0x0A); | ||
|
||
// don't do anything until the data ready pin is high: | ||
if (digitalRead(dataReadyPin) == HIGH) { | ||
//Read the temperature data | ||
int tempData = readRegister(0x21, 2); | ||
|
||
// convert the temperature to celsius and display it: | ||
float realTemp = (float)tempData / 20.0; | ||
Serial.print("Temp[C]="); | ||
Serial.print(realTemp); | ||
|
||
|
||
//Read the pressure data highest 3 bits: | ||
byte pressure_data_high = readRegister(0x1F, 1); | ||
pressure_data_high &= 0b00000111; //you only needs bits 2 to 0 | ||
|
||
//Read the pressure data lower 16 bits: | ||
unsigned int pressure_data_low = readRegister(0x20, 2); | ||
//combine the two parts into one 19-bit number: | ||
long pressure = ((pressure_data_high << 16) | pressure_data_low) / 4; | ||
|
||
// display the temperature: | ||
Serial.println("\tPressure [Pa]=" + String(pressure)); | ||
} | ||
} | ||
|
||
//Read from or write to register from the SCP1000: | ||
unsigned int readRegister(byte thisRegister, int bytesToRead) { | ||
byte inByte = 0; // incoming byte from the SPI | ||
unsigned int result = 0; // result to return | ||
Serial.print(thisRegister, BIN); | ||
Serial.print("\t"); | ||
// SCP1000 expects the register name in the upper 6 bits | ||
// of the byte. So shift the bits left by two bits: | ||
thisRegister = thisRegister << 2; | ||
// now combine the address and the command into one byte | ||
byte dataToSend = thisRegister & READ; | ||
Serial.println(thisRegister, BIN); | ||
// take the chip select low to select the device: | ||
digitalWrite(chipSelectPin, LOW); | ||
// send the device the register you want to read: | ||
SPI.transfer(dataToSend); | ||
// send a value of 0 to read the first byte returned: | ||
result = SPI.transfer(0x00); | ||
// decrement the number of bytes left to read: | ||
bytesToRead--; | ||
// if you still have another byte to read: | ||
if (bytesToRead > 0) { | ||
// shift the first byte left, then get the second byte: | ||
result = result << 8; | ||
inByte = SPI.transfer(0x00); | ||
// combine the byte you just got with the previous one: | ||
result = result | inByte; | ||
// decrement the number of bytes left to read: | ||
bytesToRead--; | ||
} | ||
// take the chip select high to de-select: | ||
digitalWrite(chipSelectPin, HIGH); | ||
// return the result: | ||
return (result); | ||
} | ||
|
||
|
||
//Sends a write command to SCP1000 | ||
|
||
void writeRegister(byte thisRegister, byte thisValue) { | ||
|
||
// SCP1000 expects the register address in the upper 6 bits | ||
// of the byte. So shift the bits left by two bits: | ||
thisRegister = thisRegister << 2; | ||
// now combine the register address and the command into one byte: | ||
byte dataToSend = thisRegister | WRITE; | ||
|
||
// take the chip select low to select the device: | ||
digitalWrite(chipSelectPin, LOW); | ||
|
||
SPI.transfer(dataToSend); //Send register location | ||
SPI.transfer(thisValue); //Send value to record into register | ||
|
||
// take the chip select high to de-select: | ||
digitalWrite(chipSelectPin, HIGH); | ||
} | ||
|
71 changes: 71 additions & 0 deletions
71
hardware/atmega328pb/avr/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
Digital Pot Control | ||
This example controls an Analog Devices AD5206 digital potentiometer. | ||
The AD5206 has 6 potentiometer channels. Each channel's pins are labeled | ||
A - connect this to voltage | ||
W - this is the pot's wiper, which changes when you set it | ||
B - connect this to ground. | ||
The AD5206 is SPI-compatible,and to command it, you send two bytes, | ||
one with the channel number (0 - 5) and one with the resistance value for the | ||
channel (0 - 255). | ||
The circuit: | ||
* All A pins of AD5206 connected to +5V | ||
* All B pins of AD5206 connected to ground | ||
* An LED and a 220-ohm resisor in series connected from each W pin to ground | ||
* CS - to digital pin 10 (SS pin) | ||
* SDI - to digital pin 11 (MOSI pin) | ||
* CLK - to digital pin 13 (SCK pin) | ||
created 10 Aug 2010 | ||
by Tom Igoe | ||
Thanks to Heather Dewey-Hagborg for the original tutorial, 2005 | ||
*/ | ||
|
||
|
||
// inslude the SPI library: | ||
#include <SPI.h> | ||
|
||
|
||
// set pin 10 as the slave select for the digital pot: | ||
const int slaveSelectPin = 10; | ||
|
||
void setup() { | ||
// set the slaveSelectPin as an output: | ||
pinMode(slaveSelectPin, OUTPUT); | ||
// initialize SPI: | ||
SPI.begin(); | ||
} | ||
|
||
void loop() { | ||
// go through the six channels of the digital pot: | ||
for (int channel = 0; channel < 6; channel++) { | ||
// change the resistance on this channel from min to max: | ||
for (int level = 0; level < 255; level++) { | ||
digitalPotWrite(channel, level); | ||
delay(10); | ||
} | ||
// wait a second at the top: | ||
delay(100); | ||
// change the resistance on this channel from max to min: | ||
for (int level = 0; level < 255; level++) { | ||
digitalPotWrite(channel, 255 - level); | ||
delay(10); | ||
} | ||
} | ||
|
||
} | ||
|
||
void digitalPotWrite(int address, int value) { | ||
// take the SS pin low to select the chip: | ||
digitalWrite(slaveSelectPin, LOW); | ||
// send in the address and value via SPI: | ||
SPI.transfer(address); | ||
SPI.transfer(value); | ||
// take the SS pin high to de-select the chip: | ||
digitalWrite(slaveSelectPin, HIGH); | ||
} |
Oops, something went wrong.