atmega328p-pu works in deumilanove board driving circuit. Doesnt without board.

Hello everyone, I have been trying a couple similar things here, not sure what i’m missing.

Have an Uno and a Duemilanov (U&D) and a bunch of ATMEGA328-PU (NOT P-PU)

Have the D hooked up to the circuit, everything works fine.

I take the ATMEGA328P-PU out of the D board, and put it in the breadboard, doesn’t work any more.

Put it back into the D board, and jumper it over to the breadboard works perfect.

What is on that board that would be causing such behavior? What am I missing here.

I used the U to take the ATMEGA328-PU and burn the sketch onto it. When the ATMEGA328-PU is hooked up to the U board (with arduino ISP flashed on to it, I can see the light blinking.)

So from this I can surmise the following. My program is burned onto the PU chip. My program is burned onto the P-PU chip. Both are working perfectly.

Something about the D board is causing the circuit function properly, and preventing it from functioning properly with just the chip from the board.

Any ideas?

This is the project I’m building.
http://www.bryanzimmer.net/Main/Doorbell_Phone.html

I didn’t want to muck around with the transmitter so I didn’t do any of that aspect, and made a couple changes to the code.

/////////////////////////////////////////////////////////////////////////////////////
// Doorbell Phone v1.0 by Bryan Zimmer
// http://www.bryanzimmer.net
// Released 5-12-2009
/////////////////////////////////////////////////////////////////////////////////////

int ringModePin = 4; // connects to pin 4 on ag1170s
int forwardReversePin = 3; // connects to pin 3 on ag1170s
int manualRingPin = 11; // door bell button or receive pin on wireless receiver
int wirelessRingPin = 0; // wireless doorbell pin on analog pin 0
int ledPin = 13; // led connected to digital pin 13
int signal; //storage value for wireless signal
boolean manualsignal;
/////////////////////////////////////////////////////////////////////////////////////

void setup()
{

pinMode(ringModePin, OUTPUT); // configure i/o pins
pinMode(forwardReversePin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(manualRingPin, INPUT);
pinMode(wirelessRingPin, INPUT);

digitalWrite(ringModePin, LOW); // set ringMode to zero/low/off
digitalWrite(forwardReversePin, HIGH); // set forwardReverse to one/high/on
digitalWrite(ledPin, LOW); // turn led off
digitalWrite(wirelessRingPin, HIGH); // turn on internal pull-up resistor
//temporarily done with an external resistor
//digitalWrite(manualRingPin, HIGH);

Serial.begin(9600);
delay(1000);

Serial.print(“Testing ringer.”); // test ringer and flash led to let everyone know we’re ready.
Serial.println();
digitalWrite(ringModePin, HIGH);
digitalWrite(forwardReversePin, LOW);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
digitalWrite(forwardReversePin, HIGH);
digitalWrite(ringModePin, LOW);
Serial.print(“System ready.”);
Serial.println();

}

/////////////////////////////////////////////////////////////////////////////////////

void loop()
{
signal = analogRead(wirelessRingPin);
manualsignal = digitalRead(manualRingPin);
Serial.print(signal);
Serial.println();
Serial.print(analogRead(wirelessRingPin));
Serial.println();
Serial.print("____");
Serial.println();
//while ( digitalRead(manualRingPin) == LOW)
while (( signal < 500) || (manualsignal == LOW))
//while ( signal > 670) || ( digitalRead(manualRingPin) == LOW)
//while ( digitalRead(manualRingPin) == LOW) || analogRead(wirelessRingPin) > 670 )
{
for ( int rings = 0; rings < 2; rings++ ) // go through ring cycle two times
{
digitalWrite(ringModePin, HIGH); // start ringing. turn ringMode on.
Serial.print(“Ringing.”); // print debugging info to the console
Serial.println();

for ( int pulses = 0; pulses < 20; pulses++ ) // ring for one second.
{
digitalWrite(forwardReversePin, HIGH); // toggle forwardReverse at 20hz (50ms) to get standard USA-style ringing.
digitalWrite(ledPin, HIGH); // flash led.
delay(50);
digitalWrite(forwardReversePin, LOW);
digitalWrite(ledPin, LOW);
delay(50);
}

digitalWrite(forwardReversePin, HIGH);
digitalWrite(ringModePin, LOW); // stop ringing. turn ringMode off.

Serial.print(“Not ringing.”); // print debugging info to the console
Serial.println();

delay(3000); // don’t ring for three seconds.
}
//Serial.print(“No button pushed. wirelessRingPin is [”); // print debugging info to the console
//Serial.print( analogRead(wirelessRingPin) );
//Serial.print("]");
//Serial.println();
delay(100);
signal = 501
;
manualsignal = HIGH;
Serial.print(signal);
Serial.println();
}

//Serial.print(“Button pushed.”); // print debugging info to the console
//Serial.println();

// for ( int rings = 0; rings < 2; rings++ ) // go through ring cycle two times
// {
// digitalWrite(ringModePin, HIGH); // start ringing. turn ringMode on.
// Serial.print(“Ringing.”); // print debugging info to the console
// Serial.println();
//
// for ( int pulses = 0; pulses < 20; pulses++ ) // ring for one second.
// {
// digitalWrite(forwardReversePin, HIGH); // toggle forwardReverse at 20hz (50ms) to get standard USA-style ringing.
// digitalWrite(ledPin, HIGH); // flash led.
// delay(50);
// digitalWrite(forwardReversePin, LOW);
// digitalWrite(ledPin, LOW);
// delay(50);
// }
//
// digitalWrite(forwardReversePin, HIGH);
// digitalWrite(ringModePin, LOW); // stop ringing. turn ringMode off.
//
// Serial.print(“Not ringing.”); // print debugging info to the console
// Serial.println();
//
// delay(3000); // don’t ring for three seconds.
// }

}

All I did was change the logic for the switch and mucked around with the analogue input.
I also didn’t like where the SP+ and SP- were connected together and fed into the analogue input zero, so i put a 8 ohm resistor there and connected the SP- side of the resistor to analogue input zero.

I dont wan’t a big arduino board inside the phone, I just want to use one of the -PU chips. What does the chip need that the board is giving it that’s causing it to screwup?

I’ve gone over this a million times:

I have all the power, gnd, crystal connections, everything.

something else is missing.

Only thing I can tell so far, is when I put the -PU chip onto the board and reset it the digital pin 13 does weird stuff. Sometimes it comes on, sometimes it turns off.

I can’t find any other forum or internet posts about just pulling the chips out of the boards and throwing them onto the breadboard. A step in the right direction would be very helpful.

Thanks guys

(deleted)

Here's a bunch of pictures in a google album.

to test if my bootloader programming is working properly, i took my P-PU out of the D, and replaced it with a bootloaded PU.

The IDE programmed it as a D without problem (didn’t even have to mess with the conf file and change the device signature, nice update Arduino team)

Then it worked perfect, with the D board jumpered over to the breadboard.

I took the PU chip out of the D board, disconnected the D board, but the PU chip on the breadboard.

Didn’t work.

Took the PU chip out of the breadboard, put it back into the D board, reconnected the D board didn’t work.
After reflashing the chip, then it worked again.

Seems very odd, just putting the chip in the breadboard is causing the program to become corrupt or something.

Ok I cleaned it up a bit

(deleted)