timer0 - 8bit - atmega1280 - ISR

Gast #2576806
Lesenswert?

hallo
ich bin seit nunmehr als 2 Tagen schwer am kämpfen und bitte um Feedback 
zu folgendem Problem.

Angelehnt an den folgenden Beitrag
http://www.mikrocontroller.net/attachment/highlight/16302
möchte ich einen Timer umsetzen.

Verwenden will ich dafür den 8-bit-Timer, der beim Überlauf eine ISR 
ausführt. Hierzu kommt es jedoch nicht...

Was ich bisher fand...
 - TIMER0_OVF_vect ist ggf. falsch _VECTOR(23) oder _VECTOR(24)
 -- Modifikation brachte jedoch keinen Erfolg

danke für jeden tippe
Angehängte Dateien:
Persönliche Seite #2576932
Lesenswert?

Oje, 20 Meter Makefile im anrauschen...

Vermutlich nur ein klassischer Fall von Selbstverwirrung:

>>  Gpio g[] = {
>>    GPIO(H, 3),
>>    GPIO(E, 3),
>>    GPIO(G, 5)
>>  };

>>  g[0].Set(false);
>>  g[1].Set(false);
>>  g[2].Set(true);

>>  g[1].Set(true);

>>  GPIO(H, 3).Toggle();

Wie so oft liegt das Problem im nicht gezeigten Code, nämlich was .Set 
maches soll und warum es g[1] ist.
Gast #2577270
Lesenswert?

anbei eine aktualisierte Version ...

um Johann's bedenken aus dem Weg zu räumen, und andere potenzielle 
Fehlerquellen zu entfernen habe ich entsprechend meine Gpio 
Implementierung entfernt.


$ avr-g++ -D__AVR_ATmega1280__ -DF_CPU=16000000L -I/usr/lib/avr/include 
-I../inc -o main.cpp.obj -v -c ../main.cpp
$ avr-g++ main.cpp.obj  -o main
$ avr-objcopy -O ihex -R .eeprom main main.hex
$ sudo avrdude -q -q -C/usr/share/arduino/hardware/tools/avrdude.conf 
-patmega1280 -carduino -b57600 -P/dev/ttyUSB0 -U flash:w:atmegaCPP.hex

Die Warnlevel habe ich bisher noch nicht erhöhen können
(ich dachte -Wall müsste was bringen... aber gesehen habe ich das 
nichts)

was ich noch ergänzen muss...
Ich AVR-Studio habe ich den Code mit dem Simulator laufen lassen, da war 
auch alles "schön"...

nochmal danke vorab
Angehängte Dateien:
Gast #2577275
Lesenswert?

Ich habe ein CMakefile... entsprechend habe ich die Ausführung manuell 
vorgenommen...

$ avr-g++ -D__AVR_ATmega1280__ -DF_CPU=16000000L -I/usr/lib/avr/include 
-I../inc -o main.cpp.obj -v -c ../main.cpp
$ avr-g++ main.cpp.obj  -o main
$ avr-objcopy -O ihex -R .eeprom main main.hex
$ sudo avrdude -q -q -C/usr/share/arduino/hardware/tools/avrdude.conf 
-patmega1280 -carduino -b57600 -P/dev/ttyUSB0 -U flash:w:atmegaCPP.hex
Gast #2577331
Lesenswert?

... SUPER, jetzt läufts !!!

Die Option existierte in meiner CMakelist.txt-Datei...
(mittels 'cmake .. -DCMAKE_VERBOSE_MAKEFILE=TRUE' werden die Aufrufe 
sichtbar)

die Optionen fehlten jedoch bei der ausführung...

Ursache waren zuviele Leerzeichen im CMakelist.txt :
Falsch:
 SET(CXXFLAGS "${CMCU}  ${CDEFS} ${CINCS} ${COPT} ${CWARN}") "
Richtig:
 SET(CXXFLAGS "${CMCU} ${CDEFS} ${CINCS} ${COPT} ${CWARN}") "

"Darauf muss mann erstmal kommen"

Besten Dank an Stefan und Johann
Gast #2578685
Lesenswert?

Ich muss meine erste Fehlerursache korrigieren...

Meine Build-Umgebung mit CMake besteht aus zwei Dateien,
 einer CMakeLists.txt und ein
 einer allgemeinen Include.cmake (enthält allg. Compiler-Settings)

Auszug aus dem fehlerhaftes CMakeLists.txt:
"
 cmake_minimum_required(VERSION 2.8)
 include(./Include.cmake)
 Project(ProjectName)
 set(BUILDRESULT BuildResult)
 ...
"

Die Compiler-Optionen (die in der Include.cmake) fehlten
in der Ausführung ("rm -rf * && cmake .. && make")

Die Ursache ist, dass das include(...) vor dem Project() steht.

Funktionierende Version ist
"
 cmake_minimum_required(VERSION 2.8)
 Project(ProjectName)
 include(./Include.cmake)
 set(BUILDRESULT BuildResult)
 ...
"

Ergänzen kann ich noch sagen, dass die "fehlerhafte Version"
nach einer Änderung im CMakelists.txt und die Compiler mit den
(bisher vermissten) Optionen ausgeführt wurde...
 0 rm -rf *
 1 cmake ..
 2 make (Ausführung ohne Optionen)
 3 CMakeList.txt modifiziert
 4 make (Ausführung mit Optionen)

"Alles nicht so einfach"  ;-)

VG Matthias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren