Hallo zusammen
Ich habe ein älteres Projekt mit einem ATmega88V übernommen, das jetzt
nachgefertigt werden soll. Die Hardware ist identisch (noch aus der
alten Produktion), bei der Programmierung habe Ich aber ein Problem. Es
gibt ein Hex file und den Source, kompilieren kann ich noch nicht (IAR
compiler...)
Die alten Platinen funktionieren, die neuen (von mir programmiert) sind
etwas anders. Einige Timings scheinen ca halb so schnell wie bei der
funktionierenden Version, andere stimmen aber überein. Die Fuses sind
identisch (mindestens 100 mal verglichen...). Nach langem Suchen bin Ich
mir recht sicher, das es mit OSCCAL zusammen hängt.
Es gibt im Program bei Startup eine Routine die OSCCAL setzt
1 | U8 u8_Count;
|
2 | U8 const __flash *pu8_Flash;
|
3 | //auslesen und im Register OSCCAL ablegen
|
4 | pu8_Flash = (const __flash U8 * )0x1FFF;
|
5 | u8_Count = *pu8_Flash;
|
6 | OSCCAL = u8_Count;
|
mit dem AVR Studio 7 kann Ich das Calibration Byte auslesen und nach
0x1fff schreiben.
Ich kann auch eine Reaktion auf das nach 0x1fff geschriebene Byte sehen.
Die Timings, die bei einem nicht veränderten 0x1fff schlecht sind,
werden mit dem veränderten 0x1fff noch schlechter ... :-)
Leider erlaubt mir das AVR Studio nicht den Wert beliebig einzustellen,
sonst könnte Ich vielleicht einen Wert finden, der funktioniert....
Langsam bin Ich mit meinem Latein am Ende.
Hat jemand einen Tip, was Ich noch versuchen könnte?
Vielen Dank schon mal.
Gruß Klaus