Sida 1 av 1
Arduino PORTx/PINx defines
Postat: 25 september 2015, 18:04:20
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?
Re: Arduino PORTx/PINx defines
Postat: 25 september 2015, 20:42:58
av JanErik
OK insåg nu att de inte definierar registeraddresserna utan värdet av dem, lite sådär "nerdummat"...
Re: Arduino PORTx/PINx defines
Postat: 27 september 2015, 19:12:09
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.
Re: Arduino PORTx/PINx defines
Postat: 27 september 2015, 20:19:51
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?
Re: Arduino PORTx/PINx defines
Postat: 28 september 2015, 04:41:02
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