Sida 3 av 3

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 14:06:20
av InSipiD
Väcker denna tråd, då jag och mina klasskamrater försöker översätta lite från PIC till AVR.

Kod: Markera allt

PORTC |= 1<<1; //Styrsignal
small_delay();
PORTC |= 1<<2; //Klockpuls
small_delay();
small_delay();
PORTC &= 0<<2;
small_delay();
Koden ska alltså sätta en signal hög, och sedan klocka en gång. Problemet jag har är att både signal och klocka blir 0 när klockpulsen sätts till 0!
Vi måste ha vurpat rejält i tänket kring det här..

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 14:09:23
av eqlazer

Kod: Markera allt

PORTC &= ~(1<<2);
Och tydligare om man skriver PC2, åtminstone tycker jag det.

Kod: Markera allt

PORTC &= ~(1<<PC2);

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 14:20:22
av InSipiD
eqlazer skrev:

Kod: Markera allt

PORTC &= ~(1<<2);
Och tydligare om man skriver PC2, åtminstone tycker jag det.

Kod: Markera allt

PORTC &= ~(1<<PC2);
Du är vår GUD!
det där gjorde numera att vi kan utböra en Boundary Scan från en Atmega16 istället för PIC16 =)

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 14:42:33
av sodjan
Och fördelen med det är... ? :-) :-)

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 14:47:06
av cykze
Genom att använda _BV() så tror jag att risken att göra fel minskar ytterligare. Det är t ex ingen risk att man istället för att skriva (1<<PC2) råkar skriva (1>>PC2), (PC2>>1) eller (PC2<<1).

Alltså,
PORTC &= ~_BV(PC2);

där _BV(x) är definierad som (1<<x) i någon av AVR-header-filerna.

Re: Från PIC till AVR - Bit instruktioner...

Postat: 30 januari 2009, 16:12:14
av InSipiD
sodjan skrev:Och fördelen med det är... ? :-) :-)
Det passar uppdragsgivaren bättre, då den använder sig av Atmel i större utsträckning.