[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Simulavr-devel] [PATCH] use static callbacks instead of template pa
From: |
panic |
Subject: |
Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg |
Date: |
Sat, 17 Jun 2017 08:13:00 +0000 |
Hi,
Klaus Rudolph:
> Hi again,
>
>> Example:
>> SBI of bit 0 in PINB register should toggle (xor) PORTB.PB0. Using RMW
>> approach, we read PINB = 0xff (because DDRB is input/tristate, read as
>> '1' for each pin), we OR the bitmask (1<<0)=1 on top of it (=0xff) and
>> write it back to PINB, *which toggles all PORTB bits* --> bug.
>
> PINB register is read only. What you want to achieve?
for many years already, AVR have a PIN toggle feature, for example
ATmega644 datasheet says:
> 12.2.2 Toggling the Pin
> Writing a logic one to PINxn toggles the value of PORTxn, independent on the
> value of DDRxn.
> Note that the SBI instruction can be used to toggle one single bit in a port.
This makes toggling a pin a 2 cycle/single instruction operation instead
of IN/EOR/OUT.
Simulavr in principle also supports this, although in a buggy way when
using SBI instead of LDI/OUT. Just look at the implementation of HWPort
in hwport.cpp. When I look through git-blame, the feature was introduced
by Thomas K on 2009-12-04, commit 3f6a6882:
> HWPort: new features PIN toggle PORT and variable port size
>
> This change adds also usage of HWPort in python interface (but usefull for
> debugging only) and sets the right size and type of ports in ATtiny2313.
Cheers,
panic
- [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/15
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, Klaus Rudolph, 2017/06/16
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/16
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/16
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, Klaus Rudolph, 2017/06/17
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg,
panic <=
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, Michael Hennebry, 2017/06/17
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/17
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/17
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/17
- [Simulavr-devel] SBI vs. PINx and interrupt flag registers, Michael Hennebry, 2017/06/19
- Re: [Simulavr-devel] SBI vs. PINx and interrupt flag registers, panic, 2017/06/19
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, Michael Hennebry, 2017/06/19
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/19
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/25
- Re: [Simulavr-devel] [PATCH] use static callbacks instead of template param for IOReg, panic, 2017/06/29