Ahoj
V programu si uživatel nastavuje a ukládá do EEPROM nastavení sériového přenosu dat do PC. Počítám s variantou, že uživatel zapomene, co v MCU vlastně nastavil za parametry přenosu (přenosová rychlost, parita, data bity a stop bity) a tak bude MCU dovybaven tlačítkem, po jehož stisku se vymaže “uživatelské” nastavení přenosu v EEPROM, MCU se resetuje a během startu si z jiné části EEPROM natáhne defaultní nastavení sériové linky, které je uživateli známo a může začít zase od začátku.
A teď k problému: Jak na konci přerušovací rutiny (která je vyvolána stiskem onoho “nulovacího” tlačítka) vyvolat reset MCU?
Po zkoumání různých nápadů:
- skok na adresu 0x0000
- přes nějaký další pin vyvolat na reset nožičce úroveň L (snad nějakým zapojením přes tranzistor, který pin RESET uzemní ?)
- použít Watch-dog
S watch-dogem bohužel nemám žádné zkušenosti a variantu “tranzistor” považuji za trochu komplikovanou. Takže bych chtěl zkusit ten skok na adresu 0x0000.
A teď můj lama dotaz: jak to napsat v C (Code Vision) ?
Já udělal:
goto 0x0000;
a hodilo to chybu: bad label.
Asi to musím nějak definovat přes #define, ale není mi jasné jak tu adresu zapsat a pak taky, jestli takto resetovat Atmel Mega vůbec jde ?
Máte někdo prosím i nějaký jiný nápad.
Děkuji