erst jetzt bin ich dazugekommen, mich in das ATM18 Projekt einzuarbeiten. Hier gleich ein grosses Problem. Da ich bisher ausschliesslich in Assembler programmiert habe, habe ich den Win AVR GCC Compiler(20070525) in mein AVR-Studio(4.13) eingebunden um eine vertraute Umgebung zu haben und gleich das erste Projekt aus Heft 4/2008 für GCC gestartet.
Beim Compilieren kommen zwar etliche Warnungen, die aber nicht ernsthaft sind. Fehlermeldungen kommen keine.
Den Chip habe ich noch nciht programmiert, sondern habe das Ergebnis mit dem AVR-Simulator durchgetestet, aber schon am Anfang werden die Prozessorregister falsch beschrieben!
Nachdem ich den Code untersucht und mal einige Zeilen nach meinen bisherigen Erkenntnissen geändert habe, scheint das insoweit zu funktionieren.
Nun meine Frage: kann es sein, daß da im orginal Code ein Fehler drin ist und den nach fast einem Jahr (!) noch keiner gemerkt hat? Hier noch die entsprechenden Codezeilen:
Orginal von Elektor-download (heute), läuft nicht! :
// Module..: ATM18_HELLO MAIN.C
// Version.: 1.0
// Compiler: IAR AVR
// Chip....: ATmega88
// Date....: February 2008
// Author..: Udo Juerss (modified for GCC by Benedikt Sauter)
//.......
int main(void)
{
cli(); // Disable interrupts
PRR = (PRTWI | PRTIM2 | PRTIM0 | PRSPI | PRADC); // Turn off unused modules
CLKPR = CLKPCE; // Enable clock prescaler by writing 0x80 to CLKPR
CLKPR = 1; // Set clock prescaler to division by 2 (8MHz clock with 16MHz crystal)
PORTC |= PC6; // Enable pullup for PC6 = Reset
//......
und hier meine Änderung, schein im Simulator OK:
//......
int main(void)
{
cli(); // Disable interrupts
PRR = (1<
CLKPR = (1<
PORTC = (1<
hat das schon mal einer ausprobiert und kann was dazu sagen? Liegt der Fehler tatsächlich im orginal Code oder stelle ich mich irgendwie blöd an ....?
Gruß Manfred
