Ich habe jetzt Atmel Studie 6 sowie (vermutlich überflüssigerweise
nochmal separat) die ATMEL Windows Tool Chain
(http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORWINDOWS.aspx) auf einem
Windows 8.1 64bit Rechner mit einem USBasp installiert. Der ATmega8-16PU
und Atmel Studoe 6 kommunizieren über USBBasp ohne Probleme. Das habe
ich getestet. Ich habe auch ein anderes LED Test Programm mühelos auf
den ATmega8-16PU geladen und zur Funktion auf einem Breadboard gebracht.
Leider gelingt es mir nicht mit Studio 6 dieses Programm
(http://daduke.org/dl/nixie/avrledtest.c) zu kompilieren und auf den
ATmega8-16PU zu laden. Ständig kommen Fehlermeldungen wie Datei oder
Verzeichnis nicht vorhanden, obwohl ja Studio 6 mit allen Updates etc.
installiert ist.
Was mache ich falsch?
Sollte ich eine andere Software nutzen?
Kann mir jemand Tips geben, wie ich dieses Programm auf den ATmega8-16PU
laden kann?
Danke!!!
avr-noob
Ok, hier nun die Fehlermeldungen. AVRDUDE ist unter den External Tools
zum flashen installiert.
Programm:
* nixie.c
*
* DCF77 radio controlled Nixie clock software
* for Atmel 4433 or mega8 microcontrollers
*
* (c) 2003 by daduke <daduke@daduke.org>
*
* GPL license - use at your own risk
*/
//#include <iom8.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
volatile void out2(uint8_t group, uint8_t value); //output 2 digits
volatile void out1(uint8_t digit, uint8_t value); //output 1 digit
volatile uint8_t ictr, bitctr, date, newsec, first15;
volatile uint8_t sec, min, hour, day, mon, year, lmin, lhour;
volatile uint8_t bit, dcf_in, last_one, duration, time_ready;
volatile uint16_t dctr;
volatile uint8_t bits[38]; //hilarious waste of memory, but wtf...
//SIGNAL (SIG_OVERFLOW0) //generates 250 interrupts/sec
SIGNAL(SIG_OUTPUT_COMPARE1A) {
// outp(0,TCNT0); /* reload timer with initial value */
if (++ictr==250) { //if one second has passed
ictr = 0; //reset
if (++sec==60) { //new minute
sec = 0; //inc sec and reset if 60
if (++min==60) {
min = 0;
if (++hour==24) {
hour = 0;
}
}
}
newsec = 1;
}
dctr++; //inc pulse length counter
dcf_in = (uint8_t)bit_is_clear(PINB,1); //probe DCF signal
if (dcf_in) { //DCF input is high
if (!last_one) { //beginning of a pulse
if (dctr > 450 && dctr < 550) { //one pulse was missing
-> new minute
ictr = 0; //reset interrupt counter: new sec starts
NOW
sec = 0; //and it's the first
bitctr = 0; //reset bit counter
first15 = 0; //the first 15 bits in the DCF signal are
0, and we use them as a sort of quality indicator
}
dctr = 0; //reset pulse length counter
}
} else { //DCF is low
if (last_one) { //a pulse just ended
duration = dctr; //length = # ticks
if (duration > 19 && duration < 31) { //we got a low
bit = 1;
} else if (duration > 44 && duration < 56) { //got a hi
bit = 2;
} else bit = 0; //something else -> bad signal?
if (bit) { //for hi or low
if (bitctr < 15 && bit == 1) { //sum up the first 15
bits
first15++;
} else if (bitctr > 20 && bitctr < 59) { //store
the bit
bits[bitctr-21] = bit-1;
}
bitctr++; //inc bit counter
}
}
}
if ((first15 == 15) && (bitctr == 58)) { //if all bits are received
and the first 15 were 0
time_ready = 1; //we can compute and update the time
first15 = 0;
}
last_one = dcf_in; //store the state of the DCF signal for the next
iteration
// if ((hour == 0) && (min == 2) && (sec == 35)) { cbi(PORTC, 3);
sbi(PORTB, PB0); } //trigger the DCF77 receiver 2 min after midnight
// if ((hour == 0) && (min == 2) && (sec == 45)) cbi(PORTB, PB0);
}
volatile int main( void )
{
outp(0xFF,DDRD); /* use all pins on PORTD for output: 2xBCD */
outp(0x0F,DDRC); /* use lower 4 pins on PORTC for output: latch
select + HV control */
outp(0x01,DDRB); /* use lowest pin on PORTB for output: sync DCF77
*/
// outp((1<<TOIE0),TIMSK); /* enables the T/C0 overflow interrupt in
the T/C interrupt mask register for */
// outp(0,TCNT0); /* start value of T/C0 */
// outp(3,TCCR0); /* prescale clk/64 */
// sbi(TWCR, TWEN); //enable I2C for temp sensor
TIMSK = _BV(OCIE1A);
TCCR1B = _BV(CS12) // 256 prescale
| _BV(WGM12); // CTC mode, TOP = OCR1A
OCR1A = 63; // count up to TOP 1Hz with 4.096 meg system clock
sbi(PORTC, 3); //turn on HV supply
sbi(PORTC, 1);
outp(255,PORTD);
cbi(PORTC, 1);
for (ictr=0; ictr<10; ictr++) { //power-on tube test, counting 0..9
and back
for (bitctr=0; bitctr<6; bitctr++) {
out1(bitctr, ictr);
for (dctr=0; dctr<20000; dctr++) sec++;
}
}
/* for (ictr=8; ictr=2; ictr--) {
for (bitctr=0; bitctr<6; bitctr++) {
out1(bitctr, ictr);
for (dctr=0; dctr<20000; dctr++) sec++;
}
} */
for (ictr = 0; ictr < 37; ictr++) bits[ictr] = 0; //set all bits to
0
sec = dctr = ictr = bitctr = last_one = time_ready = 0;
first15 = 0;
sei(); /* set global interrupt enable */
while(1) {
if (time_ready) { //compute and update time
lmin = bits[0] + (bits[1]<<1) + (bits[2]<<2) + (bits[3]<<3)
+ ( bits[4] + (bits[5]<<1) + (bits[6]<<2))*10;
lhour = bits[8] + (bits[9]<<1) + (bits[10]<<2) + (bits[11]<<3)
+ ( bits[12] + (bits[13]<<1))*10;
day = bits[15] + (bits[16]<<1) + (bits[17]<<2) + (bits[18]<<3)
+ ( bits[19] + (bits[20]<<1))*10;
mon = bits[24] + (bits[25]<<1) + (bits[26]<<2) + (bits[27]<<3)
+ bits[28]*10;
year = bits[29] + (bits[30]<<1) + (bits[31]<<2) + (bits[32]<<3)
+ ( bits[33] + (bits[34]<<1) + (bits[35]<<2) +
(bits[36]<<3))*10;
hour = lhour;
min = lmin - 1;
time_ready = 0;
}
if (newsec) {
date = (sec > 30 && sec < 35 && min % 2); //show the date every
odd minute for some seconds
if (!date) {
out2(2, hour);
out2(1, min);
out2(0, sec);
} else {
out2(2, day);
out2(1, mon);
out2(0, year);
}
newsec = 0;
}
}
}
volatile void out2(uint8_t group, uint8_t value) {
uint8_t byte;
if (group == 2 && value < 10) byte = (uint8_t)(10<<4) +
(uint8_t)(value % 10); else //leading zero suppression
byte = (uint8_t)((value / 10)<<4) + (uint8_t)(value % 10);
sbi(PORTC, group);
outp(byte,PORTD);
cbi(PORTC, group);
}
volatile void out1(uint8_t digit, uint8_t value) {
uint8_t byte, group;
group = 2 - (uint8_t)(digit / 2);
if (!(digit % 2)) {
byte = (uint8_t)(value<<4) + (uint8_t)(11);
} else {
byte = (uint8_t)(10<<4) + (uint8_t)(value);
}
sbi(PORTC, (group+1) % 3);
outp(255,PORTD);
cbi(PORTC, (group+1) % 3);
sbi(PORTC, group);
outp(byte,PORTD);
cbi(PORTC, group);
}
Error List:
Warning 1 #warning "This header file is obsolete. Use
<avr/interrupt.h>." [-Wcpp] c:\program files (x86)\atmel\atmel
toolchain\avr8
gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\signal.h 36 2
ATMEGA-8-NIXIE-USBasp
Error 2 attempt to use poisoned "SIG_OUTPUT_COMPARE1A"
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 28 8 ATMEGA-8-NIXIE-USBasp
Warning 3 'SIG_OUTPUT_COMPARE1A' appears to be a misspelled signal
handler [enabled by default] C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 28 8 ATMEGA-8-NIXIE-USBasp
Error 4 '::main' must return 'int' C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 91 25 ATMEGA-8-NIXIE-USBasp
Error 5 'outp' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 93 16 ATMEGA-8-NIXIE-USBasp
Error 6 'sbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 108 14 ATMEGA-8-NIXIE-USBasp
Error 7 'cbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 112 14 ATMEGA-8-NIXIE-USBasp
Error 8 'sbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 169 18 ATMEGA-8-NIXIE-USBasp
Error 9 'outp' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 170 17 ATMEGA-8-NIXIE-USBasp
Error 10 'cbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 171 18 ATMEGA-8-NIXIE-USBasp
Error 11 'sbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 183 26 ATMEGA-8-NIXIE-USBasp
Error 12 'outp' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 184 16 ATMEGA-8-NIXIE-USBasp
Error 13 'cbi' was not declared in this scope
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp 185 26 ATMEGA-8-NIXIE-USBasp
Output:
------ Build started: Project: ATMEGA-8-NIXIE-USBasp, Configuration:
Debug AVR ------
Build started.
Project "ATMEGA-8-NIXIE-USBasp.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition;
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio
6.2\Vs\Compiler.targets" from project "C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cppproj" (target "Build" depends on it):
Using "RunCompilerTask" task from assembly "C:\Program Files
(x86)\Atmel\Atmel Studio 6.2\Extensions\Application\AvrGCC.dll".
Task "RunCompilerTask"
Shell Utils Path C:\Program Files (x86)\Atmel\Atmel Studio
6.2\shellUtils
C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils\make.exe
all
Building file: .././ATMEGA-8-NIXIE-USBasp.cpp
Invoking: AVR8/GNU C Compiler : 4.8.1
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8
GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char
-funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections
-fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega8 -c -MD -MP -MF
"ATMEGA-8-NIXIE-USBasp.d" -MT"ATMEGA-8-NIXIE-USBasp.d"
-MT"ATMEGA-8-NIXIE-USBasp.o" -o "ATMEGA-8-NIXIE-USBasp.o"
".././ATMEGA-8-NIXIE-USBasp.cpp"
In file included from .././ATMEGA-8-NIXIE-USBasp.cpp:14:0:
c:\program files (x86)\atmel\atmel toolchain\avr8
gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\signal.h(36,2):
warning: #warning "This header file is obsolete. Use
<avr/interrupt.h>." [-Wcpp]
#warning "This header file is obsolete. Use <avr/interrupt.h>."
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(28,8): error: attempt to use poisoned "SIG_OUTPUT_COMPARE1A"
SIGNAL(SIG_OUTPUT_COMPARE1A) {
^
In file included from .././ATMEGA-8-NIXIE-USBasp.cpp:13:0:
.././ATMEGA-8-NIXIE-USBasp.cpp: In function 'void
SIG_OUTPUT_COMPARE1A()':
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(28,8): warning: 'SIG_OUTPUT_COMPARE1A' appears to be a
misspelled signal handler [enabled by default]
SIGNAL(SIG_OUTPUT_COMPARE1A) {
^
.././ATMEGA-8-NIXIE-USBasp.cpp: At global scope:
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(91,25): error: '::main' must return 'int'
volatile int main( void )
^
.././ATMEGA-8-NIXIE-USBasp.cpp: In function 'int main()':
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(93,16): error: 'outp' was not declared in this scope
outp(0xFF,DDRD); /* use all pins on PORTD for output: 2xBCD */
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(108,14): error: 'sbi' was not declared in this scope
sbi(PORTC, 3); //turn on HV supply
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(112,14): error: 'cbi' was not declared in this scope
cbi(PORTC, 1);
^
.././ATMEGA-8-NIXIE-USBasp.cpp: In function 'volatile void
out2(uint8_t, uint8_t)':
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(169,18): error: 'sbi' was not declared in this scope
sbi(PORTC, group);
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(170,17): error: 'outp' was not declared in this scope
outp(byte,PORTD);
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(171,18): error: 'cbi' was not declared in this scope
cbi(PORTC, group);
^
.././ATMEGA-8-NIXIE-USBasp.cpp: In function 'volatile void
out1(uint8_t, uint8_t)':
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(183,26): error: 'sbi' was not declared in this scope
sbi(PORTC, (group+1) % 3);
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(184,16): error: 'outp' was not declared in this scope
outp(255,PORTD);
^
C:\Users\DanielC\Documents\Atmel
Studio\6.2\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-USBasp\ATMEGA-8-NIXIE-US
Basp.cpp(185,26): error: 'cbi' was not declared in this scope
cbi(PORTC, (group+1) % 3);
^
make: *** [ATMEGA-8-NIXIE-USBasp.o] Error 1
Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project
"ATMEGA-8-NIXIE-USBasp.cppproj" -- FAILED.
Done building project "ATMEGA-8-NIXIE-USBasp.cppproj" -- FAILED.
Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped
==========
Du bist keine "Anfänger" sondern ein "Kunde". Und die bezahlen Geld,
dafür dass ihnen jemand etwas erledigt, was sie selbst nicht können oder
verstehen.
Ein Anfänger, fängt an, in dem er sich mit Mathematik, Physik,
Elektrotechnik etc. beschäftigt. Dann bastelt er mit Widerständen,
Kondensatoren und Transistoren - später mit ICs. Dann liest er mal so
allerhand Zeugs über uCs und uPs und über das Programmieren und über
Programmiersprachen. Dann kauft er so ein Ding und fängt an mit dem
Versuch, eine LED blinken zu lassen.
Das ist ein Anfänger.
Danke für die Beachtung aller Sicherheitsmaßnahmen.
P.S. Und fang jetzt nicht an uns zu erzählen, wie der, das eigentlich
machen sollte, was Du jetzt tust, in einen Sauerstofftank gesprungen
ist.
Klaus (Gast):
so eine bösartige Antwort und Unterstellung hätte ich in einem Forum
nicht erwartet.
Wenn Du meinen ersten Post gelesen hättest, wüßtest Du, daß ich bereits
ein LED Progranmm erfolgreich kompiliert und in den Chip geladen habe.
Die LED hat geblinkt auf dem Breadboard. Damit habe ich also bereits
etabliert, daß AVR Studio 6, AVRDUDE und USBasp funktionieren.
Wenn Du mir nicht helfen willst, dann frag' doch bitte nicht
scheinheilig nach den Fehlermeldungen.
Laß' Deinen Lebens- oder Berufsfrust woanderns aus, aber nicht an mir
oder in einem Internetforum.
avr-noob
Hallo avr-noob,
wieso verwendest du eine andere Toolchain?
Offensichtlich kannst du kein C und willst einen Waschzettel zum
abtippen, um deine Nixi zu bauen. Die meisten hier haben aber keine Lust
zu arbeiten, sondern sind einfach nur hilfsbereit bei Fragen.
Du hast eine Backanleitung von Guido, also kompiliere dein Programm mit
der Original-toolchain, dann geht das auch.
btw. du solltest seinen Artikel komplett lesen, dann würden dir viele
Fehler deines Programmes selbst auffallen.
P.s. jede toolchain hat seine Eigenheiten, Code ist selten einfach ohne
Anpassung auf allen compilern compilierbar, die Sprachen entwickeln sich
eben, genauso die toolchains.
1. Die Pöbler ignorieren
2. Die Makros für cbi outp sbi nachrüsten:
Beitrag "Re: sbi cbi inp / outp im neuen WinAVR- workaround"
3. Das bemängelte Include rauswerfen.
4. die Altlasten rauswerfen (ggf volatile Funktionen, main muss int
returnen)
5. C lernen
6. Den gruseligen Code nicht zum Vorbild nehmen. Man kann offensichtlich
Assembler in jeder Sprache schreiben.
Tom schrieb:> Den gruseligen Code nicht zum Vorbild nehmen.
ACK.
@ avr-noob.
Du verwenderst eine zu neue (Version der) avr-gcc Toolchain.
Dementsprechend gibt es 4 Lösungen für dein Problem:
1) Eine ältere Toolchain besorgen, z.b. WinAVR-20100110:
http://sourceforge.net/projects/winavr/ --> Files --> WinAVR.
Bei der Installation den Haken für "Change PATH Variable" deaktivieren
und den Compiler per (absolutem) Pfad aufrufen. So kannst du deine
vorhandene, neue avr-gcc Installation ungeändert für andere Projekte
weiter verwenden.
2) Die Firmware auf eine neuere Version von avr-gcc + AVR-LibC
forwärts-portieren. Die meisten Hinweise, wie das zu geschehen hat,
sind den Warnungen und Fehlermeldungen sowie der AVR-Libc-Doku zu
entnehmen. Den Rest an Info liefert die Allwissende Müllhalde.
3) Andere, weniger gruselige Firmware suchen.
4) Firmware selber schreiben; je nach Gusto mehr oder weniger gruselig
als die Vorlage ;-)
Avr N. schrieb:> Klaus (Gast):>> so eine bösartige Antwort
Bösartig? Das kann ich nicht finden. Hast Du da ein Zitat an dem das
erkennbar ist?
> und Unterstellung hätte ich in einem Forum
Welche Unterstellung? Hast Du da ein Zitat in dem ich etwas unterstelle?
Ich bin von den Informationen ausgegangen, die Du selbst gegeben hast.
> nicht erwartet.>> Wenn Du meinen ersten Post gelesen hättest, wüßtest Du, daß ich bereits> ein LED Progranmm erfolgreich kompiliert und in den Chip geladen habe.
Das mag so sein. Aber Du hast es nicht selbst geschrieben. Andernfalls
wären die Fehlermeldungen auch nicht rätselhaft. Code irgendwo her
kopieren ist keine Kunst - erfordert keine besonderen Kenntnisse.
> Die LED hat geblinkt auf dem Breadboard. Damit habe ich also bereits> etabliert, daß AVR Studio 6, AVRDUDE und USBasp funktionieren.>> Wenn Du mir nicht helfen willst, dann frag' doch bitte nicht> scheinheilig nach den Fehlermeldungen.
Ich habe nicht nach Fehlermeldungen gefragt. Schon gar nicht
scheinheilig. Hast Du da ein Zitat in dem ich nach Fehlermeldungen
gefragt habe?
> Laß' Deinen Lebens- oder Berufsfrust woanderns aus, aber nicht an mir> oder in einem Internetforum.
Das nun ist eine Unterstellung.
Danke an Stromverdichter (Gast), Tom (Gast) und Johann L. (gjlayde),
für die konstruktiven Hinweise. Wenn ich nur was zusammenlöten wollte,
hätte ich ein Multiplex Nixie Kit kaufen können. Für mich ist das Bauen
ein Lernprozeß und ja, ich bin kein Informatiker oder versierter (C)
Programmierer.
Klaus schrieb:> Bösartig? Das kann ich nicht finden.
Klar kannst Du das nicht finden, weil Du Nichts mehr merkst.
Klapperschädel...
Klaus schrieb:> Das nun ist eine Unterstellung.
Du bist ein Schmierlappen -und das ist keine Unterstellung, das ist eine
Feststellung.
Avr N. schrieb:> Danke an Stromverdichter (Gast), Tom (Gast) und Johann L. (gjlayde),> für die konstruktiven Hinweise. Wenn ich nur was zusammenlöten wollte,> hätte ich ein Multiplex Nixie Kit kaufen können.
Das ist Rhetorik und keine Erklärung. Das selbe würde für zwei
Kupferrohre gelten. Eine eigentliche Erklärung bezöge sich auf die
gegebene Situation und nicht darauf, was Du hättest sonst tun können.
Und diese Erklärung hätte im ersten Posting (oder spätestens nach meinem
Kommentar) kommen sollen.
> Für mich ist das Bauen ein Lernprozeß
Dieser Ansatz ist durchaus sinnvoll. Aber wenn das "bauen" erfordert,
dass Du eine Programm kompilierst - ohne C-Kenntnisse - dann fängst Du
mit einem uC Projekt am falschen Ende an. Würde ich aber unterstellen,
dass Du intelligent genug bist, das zu begreifen, dann bliebe wiederum
nur, dass Du mehr am Ergebnis - einer Nixie-Uhr - interessiert bist, als
daran, etwas zu lernen.
> und ja, ich bin kein Informatiker oder versierter (C) Programmierer.
Das ist wiederum Rhetorik, mit der Du mir Schuldgefühle verpassen
willst.
Mein Urteil ist sachlich gewesen und begründet. Deine Reaktion eher
beleidigt und unsachlich. Die Beleidigung täte mir leid, falls ich sie
in dem Moment des Schreibens beabsichtigt hätte; falls sie aus Deiner
Sicht tatsächlich vorläge, suggerierte das aber, dass "Kunden",
irgendwie minderwertig wären. Ist Dir das klar?
Falls überhaupt eine Beleidigung vorläge, dann die das ein Kunde unter
dem Deckmantel des Interesses von Enthusiasten Probleme gelöst haben
will, die das Erreichen des Resultats verhindern.
Ich bin da streng - das will ich einräumen -, aber es gibt für meinen
Geschmack zu viele Leute hier, die so etwas versuchen.
Du meldest Dich hier an und stellst als Erstes eine Frage nach
Problemen mit Code der offensichtlich nicht von Dir stammt. Die Art der
Probleme verweist darauf, dass Du nicht mal eine leise Idee hast, was
die Ursache sein könnte, obwohl ein Anfänger, der solch ein Projekt
versucht sinnvollerweise wenigstens irgendeine darüber Intuition haben
sollte.
Das sind ganz klare Anzeichen, die Du nicht einmal zu relativieren
versucht hast.
@Avr Noob
Ich bitte Dich inständig, nicht auf "Klaus" einzugehen. Der liest zu
gerne seine eigenen Texte. Solche Leute sind wie die Exkremente von
Hunden am Schuh: Penetrant und nur mit großer Mühe wieder loszuwerden.
Hallo,
kleine kurze Hilfe:
1. die Zeile #include <avr/signal.h> durch #include <avr/interrupt.h>
ersetzen.
2. die Macros
#define sbi(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define cbi(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define outp(VAL,ADRESS) ADRESS=VAL
in Deinen Quellcode unterhalb der includes einfügen.
Den Namen des Interruptvektors Signal(SIG_OUTPUT_COMPARE1A) durch
ISR(TIM1_COMPA_vect) ersetzen.
Dann sollten die Fehlermeldung die ich jetzt sehen kann schon mal weg
sein.
Gruß
Frank