AVR kezdőnek
Re: AVR kezdőnek
A kivezetéseket hogyan kötöm be? Kell-e felhúzó ellenállás?
Re: AVR kezdőnek
MOSI-n megy ki az adat, MISO-n be. CLK az órajel, valami meg lehet a ChipSelect. Ja, nem tudom, milyen memóriára gondoltál, nekem elsőre RAM jutott eszembe, mert csináltam olyat, de FLASH-nél is ez a bekötés. Némelyiken van WriteProtect láb is, de azt nem kötelező használni. Ellenállások nem kellenek.
Re: AVR kezdőnek
'23LCV1024 SPI XRAM kezelÚse
'Byte írása
Xwr_byte:
Reset Ss
X_parancs(0) = &B0000_0010
Spiout X_parancs(0) , 1 'Byte Write command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiout X_adattomb(0) , 1 'Adat ki
Set Ss
Return
Xrd_byte:
Reset Ss
X_parancs(0) = &B0000_0011
Spiout X_parancs(0) , 1 'Byte Read command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiin X_adattomb(0) , 1 'Adat be
Set Ss
Return
Xwr_64: '64 byte-os blokk írása
Reset Ss
X_parancs(0) = &B0000_0010
Spiout X_parancs(0) , 1 'Byte Write command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiout X_adattomb(0) , 64
Set Ss
Return
Xrd_64: '64 byte-os blokk olvasása
Reset Ss
X_parancs(0) = &B0000_0011
Spiout X_parancs(0) , 1 'Byte Read command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiin X_adattomb(0) , 64
Set Ss
Return
'Byte írása
Xwr_byte:
Reset Ss
X_parancs(0) = &B0000_0010
Spiout X_parancs(0) , 1 'Byte Write command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiout X_adattomb(0) , 1 'Adat ki
Set Ss
Return
Xrd_byte:
Reset Ss
X_parancs(0) = &B0000_0011
Spiout X_parancs(0) , 1 'Byte Read command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiin X_adattomb(0) , 1 'Adat be
Set Ss
Return
Xwr_64: '64 byte-os blokk írása
Reset Ss
X_parancs(0) = &B0000_0010
Spiout X_parancs(0) , 1 'Byte Write command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiout X_adattomb(0) , 64
Set Ss
Return
Xrd_64: '64 byte-os blokk olvasása
Reset Ss
X_parancs(0) = &B0000_0011
Spiout X_parancs(0) , 1 'Byte Read command
Spiout X_cimtomb(2) , 1 '23-16
Spiout X_cimtomb(1) , 1 '15-8
Spiout X_cimtomb(0) , 1 '7-0
Spiin X_adattomb(0) , 64
Set Ss
Return
Re: AVR kezdőnek
Erre gondoltam:winnerbt írta: ↑2021. június 24. csütörtök, 19:29 MOSI-n megy ki az adat, MISO-n be. CLK az órajel, valami meg lehet a ChipSelect. Ja, nem tudom, milyen memóriára gondoltál, nekem elsőre RAM jutott eszembe, mert csináltam olyat, de FLASH-nél is ez a bekötés. Némelyiken van WriteProtect láb is, de azt nem kötelező használni. Ellenállások nem kellenek.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: AVR kezdőnek
Ez I2C nem SPI, ha jól látom.
Re: AVR kezdőnek
I2C read-write utasításokkal kezelheted, felhúzó illik (3.3-4.7k).
Re: AVR kezdőnek
Azt néztem én is, hogy I2C kimenete van. Akkor ezek szerint SPI-re nem lehet illeszteni.
Ezt 23LCV1024 hogy kell bekötni?
A Vbat kivezetés mire jó?
Ezt 23LCV1024 hogy kell bekötni?
A Vbat kivezetés mire jó?
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: AVR kezdőnek
I2C-t és az SPI-t bármelyik portra rakhatod (ha SW-t használod), ha a beépített hardvert, akkor azokat a portokat, ami a leírásban van. A fordító kezeli mindet. A VBAT az a külső elem csatlakozása, mert ez RAM és ha teszel rá elemet, akkor nem felejt. A bekötése: (lásd pdf!!!), SO= soros kimenet, SI=soros bemenet, SCk= órajel bemenet.
Re: AVR kezdőnek
És a Cs a Chip Select.
Azaz SPI buszon át kezelheted...
Azaz SPI buszon át kezelheted...
http://www.tavir.hu - a gazda
Re: AVR kezdőnek
Kedves Fórumtársak!
Hogyan lehet a PORTD.0 és PORTD.1-et egyszerű digitális kimeneteként beállítani Bascom-ban?
ARDUINO 2.0... alatt nagyszerűen működik:
#define Tx 0
#define Rx 1
#define LB5 13
void setup() {
pinMode(Tx,OUTPUT);
pinMode(Rx,OUTPUT);
pinMode(LB5,OUTPUT);
}
void loop() {
digitalWrite(Tx,LOW);
delay(100);
digitalWrite(Tx,HIGH);
delay(100);
digitalWrite(Rx,LOW);
delay(100);
digitalWrite(Rx,HIGH);
delay(100);
digitalWrite(LB5,HIGH);
delay(100);
digitalWrite(LB5,LOW);
delay(100);
BASCOMBAN pedig nem működik, bár a szimulátorban igen... Kipróbáltam néhány változatot 2 nano-val, 2 uno-val és egy évtizedes Duino R3-al. Mindegyikben 328p van:
'ELSŐ:
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Baud = 57600
'$sim
Config Portd.0 = Output
Config Portd.1 = Output
Config Portb.5 = Output
Portd.0 = 0
Portd.1 = 0
Portb.5 = 0
Do
Portd.0 = 1
Waitms 100
Portd.0 = 0
Waitms 100
Portd.1 = 1
Waitms 100
Portd.1 = 0
Waitms 100
Portb.5 = 1
Waitms 100
Portb.5 = 0
Waitms 100
Loop
End
'MASODIK:
Config Pind.0 = Output
Config Pind.1 = Output
Config Pinb.5 = Output
Portd.0 = 0
Portd.1 = 0
Portb.5 = 0
Do
Portd.0 = 1
Waitms 100
Portd.0 = 0
Waitms 100
Portd.1 = 1
Waitms 100
Portd.1 = 0
Waitms 100
Portb.5 = 1
Waitms 100
Portb.5 = 0
Waitms 100
Loop
End
'HARMADIK:
Do
Portd = &B11111111
Waitms 100
Portd = &B00000000
Waitms 900
Loop
End
A LED-ek külső, 470Ohm ellenállással, közös anódosként vannak kötve, illetve a nano esetén a saját ledjeit használom, melyek Arduinoval nagyszerűen működnek.
Mit rontok el, mit kell még tennem a D.0 és D.1 (Tx, Rx) -el hogy kimenet legyen???
Köszönettel; Tambi
Hogyan lehet a PORTD.0 és PORTD.1-et egyszerű digitális kimeneteként beállítani Bascom-ban?
ARDUINO 2.0... alatt nagyszerűen működik:
#define Tx 0
#define Rx 1
#define LB5 13
void setup() {
pinMode(Tx,OUTPUT);
pinMode(Rx,OUTPUT);
pinMode(LB5,OUTPUT);
}
void loop() {
digitalWrite(Tx,LOW);
delay(100);
digitalWrite(Tx,HIGH);
delay(100);
digitalWrite(Rx,LOW);
delay(100);
digitalWrite(Rx,HIGH);
delay(100);
digitalWrite(LB5,HIGH);
delay(100);
digitalWrite(LB5,LOW);
delay(100);
BASCOMBAN pedig nem működik, bár a szimulátorban igen... Kipróbáltam néhány változatot 2 nano-val, 2 uno-val és egy évtizedes Duino R3-al. Mindegyikben 328p van:
'ELSŐ:
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Baud = 57600
'$sim
Config Portd.0 = Output
Config Portd.1 = Output
Config Portb.5 = Output
Portd.0 = 0
Portd.1 = 0
Portb.5 = 0
Do
Portd.0 = 1
Waitms 100
Portd.0 = 0
Waitms 100
Portd.1 = 1
Waitms 100
Portd.1 = 0
Waitms 100
Portb.5 = 1
Waitms 100
Portb.5 = 0
Waitms 100
Loop
End
'MASODIK:
Config Pind.0 = Output
Config Pind.1 = Output
Config Pinb.5 = Output
Portd.0 = 0
Portd.1 = 0
Portb.5 = 0
Do
Portd.0 = 1
Waitms 100
Portd.0 = 0
Waitms 100
Portd.1 = 1
Waitms 100
Portd.1 = 0
Waitms 100
Portb.5 = 1
Waitms 100
Portb.5 = 0
Waitms 100
Loop
End
'HARMADIK:
Do
Portd = &B11111111
Waitms 100
Portd = &B00000000
Waitms 900
Loop
End
A LED-ek külső, 470Ohm ellenállással, közös anódosként vannak kötve, illetve a nano esetén a saját ledjeit használom, melyek Arduinoval nagyszerűen működnek.
Mit rontok el, mit kell még tennem a D.0 és D.1 (Tx, Rx) -el hogy kimenet legyen???
Köszönettel; Tambi
Re: AVR kezdőnek
Bootloadered van benne? Hogy programozod?
A sorosportot le kell tiltani és a lábakat kimenetre állítani...
A sorosportot le kell tiltani és a lábakat kimenetre állítani...
http://www.tavir.hu - a gazda
Re: AVR kezdőnek
Köszönöm Robert, pontosan ez volt a kérdésem, illetve hogyan kell a soros portot letiltani? És ha letiltom, akkor hogyan fogom ismét használni programfogadásra, ha a benne levő szoftver csak és kizárólag kimenetként kezeli? Bizonyára meg van a módja, de mi???
Szerintem az említett 5 db panelben levő 328p-ben van "eredeti" bootloader, mivel minden másra jók (már amiket én akarok), csak itt elakadtam... Valami megmagyarázhatatlan késztetést érzek, hogy a PORTD kimenet legyen... PORTB-vel már készen lenne, de ...
Köszönöm szépen!
Szerintem az említett 5 db panelben levő 328p-ben van "eredeti" bootloader, mivel minden másra jók (már amiket én akarok), csak itt elakadtam... Valami megmagyarázhatatlan késztetést érzek, hogy a PORTD kimenet legyen... PORTB-vel már készen lenne, de ...
Köszönöm szépen!
Re: AVR kezdőnek
Bascomban:
Program elején:
Ucsr0b = 0 'disable the HW UART
A Chip reset állapota után:
- bootloader elállít mindent (memória, sorosport kezelés, D0/D1/D13 kivezetések)
- főprogram már az elállított regiszterekkel indul - vissza kell rakni!
Program elején:
Ucsr0b = 0 'disable the HW UART
A Chip reset állapota után:
- bootloader elállít mindent (memória, sorosport kezelés, D0/D1/D13 kivezetések)
- főprogram már az elállított regiszterekkel indul - vissza kell rakni!
http://www.tavir.hu - a gazda
Re: AVR kezdőnek
Köszönöm szépen Robert.
Re: AVR kezdőnek
Sziasztok!
Megállt az agyam...
M328 Timer1 Timer módban, nem tudom változtatgatni az előosztót. Már kínomban kibitezgettem a TCCR1B-t, de semmi változás a kimeneten.
-----------------
Config Timer1 = Timer , Prescale = 1 , Compare A = Disconnect , Compare B = Toggle , Clear_timer = 1
Do
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.0
Start Timer1
Wait 5
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.1
Start Timer1
Wait 5
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.1
Set Tccr1b.0
Start Timer1
Wait 5
Loop
----------------------------------------
Miacsudát nézek be??????? 8MHz-ről 4kHz jön ki mindig (Compare1B=200). Start-stop is már kínomban került bele, hát ha nem szereti a futás közbeni bizergálást.
Megállt az agyam...
M328 Timer1 Timer módban, nem tudom változtatgatni az előosztót. Már kínomban kibitezgettem a TCCR1B-t, de semmi változás a kimeneten.
-----------------
Config Timer1 = Timer , Prescale = 1 , Compare A = Disconnect , Compare B = Toggle , Clear_timer = 1
Do
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.0
Start Timer1
Wait 5
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.1
Start Timer1
Wait 5
Stop Timer1
Reset Tccr1b.0
Reset Tccr1b.1
Reset Tccr1b.2
Set Tccr1b.1
Set Tccr1b.0
Start Timer1
Wait 5
Loop
----------------------------------------
Miacsudát nézek be??????? 8MHz-ről 4kHz jön ki mindig (Compare1B=200). Start-stop is már kínomban került bele, hát ha nem szereti a futás közbeni bizergálást.