Arduino PORTx/PINx defines

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Arduino PORTx/PINx defines

Inlägg av JanErik »

Håller på att modifiera en drivrutin för CC110L för att kunna använda den på Mega också.
Nu tänkte jag skicka ner PORTx/PINx-värdena i init-funktionen eftersom den använder dem direkt. Det fungerade dock inte eftersom drivrutinen ser ett annat värde på PIND än vad Arduino ger...
Utskrivet direkt före och inne i init-funktionen:
Arduino PIND:3
Arduino PORTD:0
Arduino PINB:13
Arduino PORTB:4
PIND: 1
PORTD: 0
PINB: 13
PORTB: 4
Värde 1 på PIND är vad som fungerar i drivrutinen, men varifrån får Arduino-biblioteken 3?
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: Arduino PORTx/PINx defines

Inlägg av JanErik »

OK insåg nu att de inte definierar registeraddresserna utan värdet av dem, lite sådär "nerdummat"...
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Arduino PORTx/PINx defines

Inlägg av bearing »

Nu hänger jag inte med?

Jag har inte märkt att Arduino trixar något med port-registrena. Utan dom fungerar precis som i den vanliga AVR-C-miljön.
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: Arduino PORTx/PINx defines

Inlägg av JanErik »

Sådär långt löst, har ett annat problem med dessa macron som drivrutinen definierar:
(PORT_CC_SS är redefines av PORTB etc).

Kod: Markera allt

// Select (SPI) CC1101
//#define cc1101_Select()  bitClear(*port_ss, bit_ss)
#define cc1101_Select()  bitClear(PORT_CC_SS, BIT_CC_SS)
// Deselect (SPI) CC1101
//#define cc1101_Deselect()  bitSet(*port_ss, bit_ss)
#define cc1101_Deselect()  bitSet(PORT_CC_SS, BIT_CC_SS)
Men detta fungerar inte när jag skickar ner portadresserna som (volatile uint8_t *)&PORTB, verifierat att adresserna är samma genom att skriva ut dem.
Klart är ju att jag inte kan manipulera värdet av registren som en pekare på dethär sättet. Hur kan det fungera med Arduinos macron? Behöver jag skriva egna bitSet/Clear-funktioner som opererar på referenser?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Arduino PORTx/PINx defines

Inlägg av bearing »

Oklart om du själv använder funktioner eller makron. AVR LIBC använder makron.

Detta kanske kan ge några tips:
http://www.nongnu.org/avr-libc/user-man ... __sfr.html
Skriv svar