80 lines
1.7 KiB
NASM
80 lines
1.7 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 by Martin Preuss
|
|
; email : martin@libchipcard.de
|
|
;
|
|
; ***************************************************************************
|
|
; * This file is part of the project "AqHome". *
|
|
; * Please see toplevel file COPYING of that project for license details. *
|
|
; ***************************************************************************
|
|
|
|
; Hardware routine for AtTiny 84 devices
|
|
|
|
|
|
.cseg
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine systemInitHardware
|
|
;
|
|
|
|
systemInitHardware:
|
|
; set all ports as inputs and enable internal pull-up resistors
|
|
ldi r16, 0xff
|
|
clr r17
|
|
|
|
out DDRA, r17 ; all input
|
|
sts PUEA, r16 ; enable pull-up on all
|
|
|
|
out DDRB, r17 ; all input
|
|
sts PUEB, r16 ; enable pull-up on all
|
|
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine systemSetSpeed
|
|
;
|
|
|
|
systemSetSpeed:
|
|
.if clock == 1000000
|
|
ldi r17, 0xd8
|
|
ldi r16, (1<<CLKPS1) | (1<<CLKPS0) ; SUT=0, CLKPS=0011b
|
|
sts CCP, r17
|
|
sts CLKPR, r16
|
|
.endif
|
|
|
|
.if clock == 8000000
|
|
ldi r17, 0xd8
|
|
clr r16 ; SUT=0, CLKPS=0
|
|
sts CCP, r17
|
|
sts CLKPR, r16
|
|
.endif
|
|
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine systemSleep
|
|
;
|
|
|
|
systemSleep:
|
|
; only modify SE, SM1 and SM0
|
|
cli
|
|
in r16, MCUCR
|
|
ldi r17, (1<<SE) | (1<<SM1) | (1<<SM0)
|
|
neg r17
|
|
and r16, r17
|
|
ori r16, (1<<SE) ; sleep mode "idle", enable
|
|
out MCUCR, r16
|
|
sei ; make sure interrupts really are enabled
|
|
sleep ; sleep, wait for interrupt
|
|
ret
|
|
; @end
|
|
|
|
|
|
|