Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

GCC Software läuft nicht ...

Für Fragen, Hinweise oder hilfreiche Tipps und Tricks für andere Controllerfans

Postby mhaefner » Thu Feb 12, 2009 12:00 am

Hallo Freunde,

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< CLKPR |= 1; // Set clock prescaler to division by 2 (8MHz clock with 16MHz crystal)

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
mhaefner
 
Posts: 20
Joined: Thu Jan 02, 2014 10:37 am

Postby tip » Mon Feb 16, 2009 12:00 am

Verstehe ich nicht, wo bei Udos Code ein Fehler stecken soll..
Aber ich verstehe auch Deine << nicht. Wieso diese geshifteten 1sen?
tip
 
Posts: 402
Joined: Thu Jan 02, 2014 10:41 am

Postby flopper » Fri Feb 20, 2009 12:00 am

Hast du geprüft was hinter dem PRTWI sich befindet? Die komplatte Maske oder nur die Bitposition? Bin gerade an einem anderen Rechner.

Gruss Benedikt
flopper
 
Posts: 22
Joined: Fri Jan 03, 2014 1:49 pm

Postby mhaefner » Thu Feb 26, 2009 12:00 am

sorry for delay...

Da habe ich in '"iar_mx8.h" nur folgendes gefunden:
#define PRTWI BIT7
sonst steht da nix dahinter.

'"iar_mx8.h" ist im Projektfile *.aps eingebunden.

Gruß Manfred
mhaefner
 
Posts: 20
Joined: Thu Jan 02, 2014 10:37 am


Return to CC2-Elektor-AVR-Projekt

Who is online

Users browsing this forum: No registered users and 2 guests