Hi Dirk,

Zitat von
Dirk
INT1 des ATmega32 ist PD3,- das ist in dem Programm gemeint.
Im RP6 System liegt INT1 des ATmega32 auf der CONTROL M32 am XBUS INT2 (also Pin 11).
ok, das habe ich missverstanden, ist geändert

Zitat von
Dirk
PB1 geht, aber ist schlecht erreichbar (nicht an einem Stecker).
ich habe den PB1 von der m32 auf den USRBUS pin 3 gelegt, deshalb für mich besser erreichbar als der PC7, deshalb würde ich gerne bei PB1 bleiben - ein zweites EEPROM ist bei mir eher unwarscheinlich...

Zitat von
Dirk
Als Ausgang definieren: DDRC |= IO_PC7;
Auf HIGH setzen: PORTC |= IO_PC7;
Auf LOW setzen: PORTC &= ~IO_PC7;
würden die befehle für den PB1 so aussehen?
Als Ausgang definieren: DDRB |= IO_PB1;
Auf HIGH setzen: PORTB |= IO_PB1;
Auf LOW setzen: PORTB &= ~IO_PB1;
ich würde dann die funktion sonar ändern:
Code:
von:
void sonar()
{
PORTB = 0x00; // clear to zero for 1 us
_delay_us(1);
PORTB = 0x01; // set high for 10us
running = 1; // sonar launched
_delay_us(10);
PORTB = 0x00; // clear
}
int __attribute__((noreturn))
in:
void sonar()
{
PORTB &= ~IO_PB1; // clear to zero for 1 us
_delay_us(1);
PORTB |= IO_PB1; // set high for 10us
running = 1; // sonar launched
_delay_us(10);
PORTB &= ~IO_PB1; // clear
}
int __attribute__((noreturn))
EDIT: das oben hat der compiler angemeckert, das hier unten ging:
void sonar()
{
PORTB &= ~(1<<PB0); // clear to zero for 1 us PORTB &= ~IO_PB1;
_delay_us(1);
PORTB |= (1<<PB1); // set high for 10us PORTB |= IO_PB1;
running = 1; // sonar launched
_delay_us(10);
PORTB &= ~(1<<PB0); // clear
}
int __attribute__((noreturn))
fliegt mir da was um die ohren?

Zitat von
Dirk
Die M32 läuft mit 16 MHz (nicht mit 12), so dass man diese und die folgende Definition anpassen müßte.
ok geändert...

Zitat von
Dirk
Auf der M32 ist der Timer 0 belegt. Aber: Timer 1 ist frei und nutzbar!
meinst Du evtl. den Timer2 (TCCR2) - beim TCCR1 bekomme ich die meldung: TCCR1 not declared???
Lesezeichen