PIC och 1wire, strömstrul?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC och 1wire, strömstrul?

Inlägg av sodjan »

Jo, det är förväntat, om det där faktiskt är *hela* koden.
Prova detta och se om det gör skillnad.

while(1)
{
ANSEL=0
ANSELH=0
PORTC.0=1;
PORTC.1=1;
}
Användarvisningsbild
Oltronix
Inlägg: 487
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: PIC och 1wire, strömstrul?

Inlägg av Oltronix »

Ja förväntat om man känner till problemet med RMW
Nej inte förväntat om man använder normal logik. Om man ändrar en bit så påverkar man även en annan bit är inte vad man förväntar sig av en instruktion.

Följande hela kod körs nu.
#include "16F690.h"
#pragma config |= 0x00D4
void main( void)
{
TRISC = 0;
PORTC = 0;
ANSEL=0; /*Tillägg sedan tidigare*/
while(1)
{
PORTC.0=1; /*01*/
PORTC.1=1; /*11*/
PORTC.0=0; /*10*/
PORTC.1=0; /*01*/
}
}

Då ser det ut som man kan förvänta sig med normal logik. Det är inressant spec om man läser Kap 4.2.1 ANSEL AND ANSELH REGISTERS i 16F690s datablad. Citat: 'The state of the ANSx bit has no effect on the digital
output function of its corresponding pin.'
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: PIC och 1wire, strömstrul?

Inlägg av bearing »

Detta beror väl på att en CPU kör sina instruktioner över en databuss. Den kan inte skriva till en enskild bit i ett register, utan BSF/BCF läser 8 bitar över bussen, ändrar biten, och skriver sedan tillbaka 8 bitar över bussen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC och 1wire, strömstrul?

Inlägg av sodjan »

> Nej inte förväntat om man använder normal logik.

Om man RTFM så är det förväntat och "as documented".

> Om man ändrar en bit så påverkar man även en annan bit är inte
> vad man förväntar sig av en instruktion.

Jo, i detta fall är det det. Om man har lite koll på vad man håller på
med. Samt läser på lite, som sagt. :-)

Men visst, just detta fenomen är en vanlig "nybörjar fälla". Man råkar ut
för det en gång, sedan kan man hålla på 10 år utan att det händer igen.

> Citat: 'The state of the ANSx bit has no effect on the digital
> output function of its corresponding pin.'

Exakt. Och det stämde ju också, eller hur!
Dina kommandon ändrade ju den aktuella pinnen helt korrekt (även innan).

Två meningar senare i samma stycke som ditt citat var hämtat från, står det:

> Pins with the ANSx bit set always read ‘0’, which can cause unexpected
> behavior when executing read or write operations on the port due to the
> read-modify-write sequence of all such operations.

Och det var ju precis det som du såg.

I kapitel "4.5 PORTC and TRISC Registers" (vilket ju är centralt om man håller
på med PORTC) står det :

> All write operations are read-modify-write operations. Therefore, a write to
> a port implies that the port pins are read, this value is modified and then
> written to the PORT data latch.

Och i den lilla gråa rutan (den är grå och det står "Note:" i fet stil av en anledning)
står det :

> Note:
> The ANSEL and ANSELH registers must be initialized to configure an analog
> channel as a digital input. Pins configured as analog inputs will read ‘0’.

Så jag tycker nog att informationen som sådan finns där. Problemet som
nybörjare är så klart att fatta att en BCF/BSF och *läser* från porten. :-)
Användarvisningsbild
Oltronix
Inlägg: 487
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: PIC och 1wire, strömstrul?

Inlägg av Oltronix »

Fint som snus. Tack för hjälpen!
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: PIC och 1wire, strömstrul?

Inlägg av v-g »

Problemet är ju hur man ska skriva en manual som alla fattar alltid. Jag förstår inte alltid men läser man om några gånger så brukar det framgå vad som menas, det man ska ha i åtanke är att microchip är BRA på manualer! (Dvs det kan vara mycket värre ;) )
Användarvisningsbild
Oltronix
Inlägg: 487
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: PIC och 1wire, strömstrul?

Inlägg av Oltronix »

Att skriva kort o enkelt är inte alla förunnat. Goda dokumentatörer skall behandlas med respekt. Vissa läsare har falkögon och kommer ihåg alla detaljer andra skummar och ser inte alla detaljer. Det är bra om det finns flera olika ögon o tänkande.

Att välja chip är inte bara HW o instruktioner utan även support. Dokumentation, web, exprimentkort, utvecklingverktyg, exempelkod, många användare, etc är viktiga parametrar för ett val som passar ens behov.
Skriv svar