Ik ben weer na twee jaar niks met PICs gedaan te hebben weer begonnen. weer van voor af aan en ik snap even niet
hoe de bitwise output operaties zouden moeten werken.
Dus ik dacht simpel beginnen . Even wat bitwise operaties op de output. Tot mijn verbazing zie ik dat de iedere keer als ik een bit set van een port dat de andere gereset worden. Zo wordt in het onderste voorbeeld de LCD_ENABLE iedere keer kort naar nul terug gezet. Is dit normaal en is dit te voorkomen met het gebruik van bit operaties ?
#include <p18f458.h>
#include <delays.h>
#define LCD_ENABLE PORTDbits.RD2
#define LCD_DATA_COMMAND PORTDbits.RD3
#define LCD_READ_WRITE PORTDbits.RD4
#define LCD_CS1 PORTDbits.RD5
#define LCD_CS2 PORTDbits.RD6
#define LCD_INV_RESET PORTDbits.RD7
# pragma config OSC = HS
void main (void)
{
TRISD = 0x00;
while(1)
{
/* write data& */
LCD_ENABLE = 1;
LCD_READ_WRITE = 0;
LCD_READ_WRITE = 1;
}
}
[Bericht gewijzigd door Henry S. op (1%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Is dit normaal en is dit te voorkomen met het gebruik van bit operaties ?
Is waarschijnlijk het R-M-W effect. Te voorkomen door LATD te gebruiken i.p.v. PORTD bij output operaties.
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Ik begrijp trouwens dat je een LCD wilt gaan aansturen? Ik hoop dat je niet de delay's vergeet 
Er staat een leuke uitleg in de reference manual van de pic24H
[quote]When the first BSET instruction is executed, it writes a ‘1’ to bit 0 in the PORTA register, which
causes the voltage level to start rising to logic level 1 on pin 0 (refer to Step 1 in Figure 10-2).
However, if the second BSET instruction is executed before the voltage level on pin 0 has
reached the threshold for logic 1 (refer to Step 3 in Figure 10-2), the second BSET
(read-modified-write) instruction reads ‘0’ for bit 0, which it writes back into PORTA register (refer
to Step 2 in Figure 10-2). In other words, instead of reading a value of 0x0001 from the PORTA
register, it reads a value of 0x0000, modifies it to 0x0002 (instead of desired value of 0x0003),
and writes that value back to the PORTA register. This causes the voltage on pin 0 to start falling
to logic 0 and the voltage on pin 1 to start rising to logic 1 (refer to Step 4 in Figure 10-2).[/quote]
http://ww1.microchip.com/downloads/en/DeviceDoc/70230C.pdf
zie pagina 3.
Zal vast ook wel in de andere datasheets/reference manuals staan. Maar deze heb weet ik toevallig 
Ja, ik ben met het aan sturen van een LCD bezig. Ik heb met de scope gekeken en als ik op een volgend aan en uit zet van 1 bit, kom ik al boven de minimale timing uit (van een s6B0108 ). Ik zit op het moment op een 16Mhz cristal
Ik heb het eindelijk voor elkaar dat er iets op het scherm veranderd, de on/off functie werkte niet 
Maar ik loop nu tegen het probleem aan dat ik maar 1 bank CS1 of CS2 kan schrijven in 1 run, als ik het omzet naar de andere bank lijkt hij toch weer de zelfde te schrijven. Als ik begin in de anderen doet hij dat wel netjes. Morgen weer verder.
Bedankt voor de ref , zal het eens door nemen.
Bart
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Die manual is vooral voor de pic24H reeks, maar de IO poorten zijn bij de meeste PIC's wel het zelfde (Op open-drain support na bijvoorbeeld)