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