Er hat einen 16Mhz Quarz, bei den Fuses ist die längste Start-up Zeit eingestellt.
Es sind alle am Port A angeschlossen:
#define Sensor_re ((PINA &(1 << PINA2)))
#define Sensor_li ((PINA &(1 << PINA3)))
#define Bumper (!(PINA &(1 << PINA4)))
#define Taster_Stop (!(PINA &(1 << PINA6)))
#define Taster_Schwarz (!(PINA &(1 << PINA7)))
am Pin 5 ist der ADC im free running Mode.
Davon funktionieren immer Sensor_re und Taster_Schwarz.
Sensor_li wird praktisch immer ignoriert, am Bumper kommen oft Fehlerauslösungen, am Taster_Stop kommen selten Fehlauslösungen.
Kann es sein dass es mit den ADC zusammenhängt? Sind schließlich die Pins um den verwendeten ADC betroffen.
Code:
/* ADC */
ADMUX |=(1<<REFS1) | (1<<REFS0); // interne 2.56V
ADMUX |=(1<<MUX2) | (1<<MUX0); // Kanal = PIN 5
ADCSRA |= (1<<ADEN) | (1<<ADSC) | ( 1 << ADATE ); // ADC ein + starten, free running mode
ADCSRA |=(1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // prescaler 128
Die Sensoren haben Pullup am Sensor selbst, am Bumper habe ich zum internen noch einen externen Pullup angeschlossen, Taster haben nur den internen Pullup.
Stromversorgung kommt vom Akku mit 11,6-13,3V, über Diode, 1000µF C, 100nF C, L7805, 100nF C, und nochmal 100nF am Controller selbst.
LG!
Lesezeichen