return self.symbols.get(name);
def timeout(self):
print "timeout\n";
- def serInit(self, port=None, timeout=1):
+ def serInit(self, port=None, timeout=0.5):
"""Open the serial port"""
# Make timeout None to wait forever, 0 for non-blocking mode.
)
self.verb=0;
+ attempts=0;
while self.verb!=0x7F:
+ self.serialport.flushInput()
+ self.serialport.flushOutput()
#Explicitly set RTS and DTR to halt board.
self.serialport.setRTS(1);
self.serialport.setDTR(1);
self.serialport.setDTR(0);
self.serialport.flushInput()
self.serialport.flushOutput()
-
- #Read and handle the initial command.
- #time.sleep(1);
+ #time.sleep(.1);
+ attempts=attempts+1;
self.readcmd(); #Read the first command.
- #if(self.verb!=0x7F):
- # print "Verb %02x is wrong. Incorrect firmware or bad Info guess?" % self.verb;
- # print "http://goodfet.sf.net/faq/";
- #print "Connected."
+
+ #print "Connected after %02i attempts." % attempts;
+ self.mon_connected();
+
def getbuffer(self,size=0x1c00):
writecmd(0,0xC2,[size&0xFF,(size>>16)&0xFF]);
print "Got %02x%02x buffer size." % (self.data[1],self.data[0]);
self.besilent=s;
print "besilent is %i" % self.besilent;
self.writecmd(0,0xB0,1,[s]);
-
+ def mon_connected(self):
+ """Announce to the monitor that the connection is good."""
+ self.writecmd(0,0xB1,0,[]);
def out(self,byte):
"""Write a byte to P5OUT."""
self.writecmd(0,0xA1,1,[byte]);
#include <io.h>
#include <iomacros.h>
-
//! Receive a byte.
unsigned char serial_rx(){
char c;
CALDCO_16MHZ 0x96 CALBC1_16MHZ 0x8f 2619-001.txt
*/
+//! Initialization is correct.
+void msp430_init_dco_done(){
+ char *choice=(char *) 0x200; //First word of RAM.
+ choice[0]--;
+}
+
//! Initialize the MSP430 clock.
void msp430_init_dco() {
+ int i=1000;
char *choice=(char *) 0x200; //First word of RAM.
#ifdef __MSP430_HAS_PORT8__
P8SEL = 0; // disable XT2 on P8.7/8
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
}else{
- //Info is missing, guess at a good value.
+ /*
+ Info is missing, guess at a good value.
+
+ For now, the choice doesn't jump backward after a successful
+ connection. For that reason, keep this list as small as possible.
+ Future revisions will subtract one from choice[0] after a successful
+ connection, keeping choice[1] as the target.
+ */
+
#define CHOICES 4
DCOCTL = 0x00; //clear DCO
switch(choice[0]++%CHOICES){
}
}
+ //Minor delay.
+ while(i--);
+
return;
}