Initial commit
This commit is contained in:
commit
5487c27c50
|
@ -0,0 +1,2 @@
|
||||||
|
.direnv
|
||||||
|
result
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
#ifndef __BASE_H__
|
||||||
|
#define __BASE_H__
|
||||||
|
|
||||||
|
typedef struct IO_PIN {
|
||||||
|
volatile uint8_t *port;
|
||||||
|
uint8_t pin;
|
||||||
|
} io_pin_t;
|
||||||
|
|
||||||
|
inline void set_pin(io_pin_t *pin) {
|
||||||
|
*(pin->port) |= 1 << pin->pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void clear_pin(io_pin_t *pin) {
|
||||||
|
*(pin->port) &= 0xff ^ (1 << pin->pin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1649944829,
|
||||||
|
"narHash": "sha256-wjOgLfjCdyoRamMOrVJceeDJk4LvJsQOxBoT3k16/7Q=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "2f06b87f64bc06229e05045853e0876666e1b023",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-21.11",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
{
|
||||||
|
description = "Wearables";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "nixpkgs/nixos-21.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
version = builtins.string 0 8 self.lastModifiedDate;
|
||||||
|
supportedSystems = [ "x86_64-linux" "avr-none" ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
packages.base."x86_64-linux" =
|
||||||
|
let pkgs = import nixpkgs { system = "x86_64-linux"; };
|
||||||
|
in pkgs.stdenv.mkDerivation rec {
|
||||||
|
name = "wearables-base";
|
||||||
|
src = "./base";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/include
|
||||||
|
cp include/base.h $out/include
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
defaultPackage."x86_64-linux" =
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
||||||
|
avr = pkgs.pkgsCross.avr.buildPackages;
|
||||||
|
in pkgs.stdenv.mkDerivation rec {
|
||||||
|
name = "hello";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
MCU = "attiny85";
|
||||||
|
CHIP_SELECT = "AVR_ATtiny85";
|
||||||
|
F_CPU = "8000000";
|
||||||
|
CFLAGS = ''-O -finline-functions -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=${F_CPU} -std=gnu99 -D__${CHIP_SELECT}__=1 -mmcu=${MCU}'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
set -x
|
||||||
|
${avr.gcc}/bin/avr-gcc ${CFLAGS} -I${src}/base/include/ -o main.elf ${src}/prototype/src/main.c
|
||||||
|
$OBJCOPY -O ihex main.elf main.hex
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir $out
|
||||||
|
cp main.elf main.hex $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
devShell."x86_64-linux" =
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
||||||
|
avr = with pkgs.pkgsCross.avr.buildPackages; [
|
||||||
|
binutils
|
||||||
|
gcc
|
||||||
|
avrdude
|
||||||
|
];
|
||||||
|
in
|
||||||
|
pkgs.mkShell {
|
||||||
|
name = "Wearables-shell";
|
||||||
|
buildInputs = avr;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
avrdude -c usbtiny -p attiny85 -U flash:w:$1:i; sleep 5; avrdude -c usbtiny -p attiny85 -D -U flash:w:$1:i
|
|
@ -0,0 +1,25 @@
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
#include <base.h>
|
||||||
|
|
||||||
|
int main (void) {
|
||||||
|
DDRB = 0x18;
|
||||||
|
PORTB = 0x00;
|
||||||
|
|
||||||
|
_delay_ms(500);
|
||||||
|
|
||||||
|
io_pin_t enable_pin = { .port = &PORTB, .pin = 3 };
|
||||||
|
io_pin_t data_pin = { .port = &PORTB, .pin = 4 };
|
||||||
|
|
||||||
|
set_pin(&enable_pin);
|
||||||
|
for (uint8_t i = 0; i < 10; i++) {
|
||||||
|
set_pin(&data_pin);
|
||||||
|
_delay_ms(500);
|
||||||
|
clear_pin(&data_pin);
|
||||||
|
_delay_ms(500);
|
||||||
|
}
|
||||||
|
clear_pin(&enable_pin);
|
||||||
|
|
||||||
|
while(1) {};
|
||||||
|
}
|
Loading…
Reference in New Issue