Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Sonstiges » AVR Studio 4 mit AVR-GCC und altem C-Code » Themenansicht

Autor Thread - Seiten: -1-
000
18.02.2019, 20:55 Uhr
wpwsaw
Default Group and Edit


Hallo an die Experten für C und AVR Studio. Ich kann und mag C oder CC+ nicht so wirklich, muss aber einige Korrekturen machen.

Ich habe ein C-Quellcode den ich ändern muss. Wie überrede ich AVR ST4 dazu den C-Compiler zu nutzen. Wo bekomme ich ein MAKE File her und wie binde ich es ein ohne alles zu Fuß machen zu müssen.

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
18.02.2019, 21:05 Uhr
schlaub_01



Hallo Wolf-Peter,
ich benutze das AVR Studio 4 immer noch gerne, weil es einfach rasend schnell gegenüber den neueren Versionen ist und nicht so überladen. Ich habe den Winavr C Compiler noch zusätzlich installiert. Unter den Projekt Optionen kannst Du dann bei den Custom Options die avr-gcc.exe und die make.exe einbinden. Mehr braucht es eigentlich nicht.

Grüße,
Sven.

Dieser Beitrag wurde am 18.02.2019 um 21:06 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
18.02.2019, 21:32 Uhr
wpwsaw
Default Group and Edit


Hallo Sven,

Das AVR ST4 habe ich auch schon sehr lange und es recit mir auch. Ich habe auch schon avr-gcc im ST4 drin. WINAVR habe ich zwar auch installiert, komme aber nicht mit klar mit diesen ganzen Schaltern und Optionen. Oder nutzt man WINAVR auch im ST4? Dieses MAKEFILE soll ja zur automatisierung des Compilierprozesses dienen.

Wenn ich ein altes, schon mal compiliertes Programm wieder mit AVR-ST4 aus dem Menü compilieren will, kommen ein Haufen Fehlermeldungen, die aus Syntax und logischen Fehlern bestehen.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
18.02.2019, 21:46 Uhr
schlaub_01



Also nutzt Du ein schon vorhandenes externes Makefile? Ich habe bei mir kein extra Makefile eingestellt. Geht alles problemlos aus dem AVR Studio mit den eingestellten Winavr Tools bei mir. Man muß lediglich den Haken bei Use AVR Toolchain rausnehmen und den Compiler und die Make.exe angeben. Ich mache zwar nicht sehr viel damit, aber hat bisher nie Probleme gemacht. Ich hatte ansonsten nur mal die AVR Toolchain mit einem eigenen Atmel Complier mal ausprobiert, aber da gab es Probleme mit dem Debugger und man mußte umständlich zusätzliche Optionen setzen. Aber mit dem letzten Winavr von 2010 laufen die gängigen AVRs eigentlich ganz gut. Die neueren werden da natürlich nicht mehr unterstützt. Viele Syntaxfehler klingen eigentlich nach fehlerhaftem Eintrag bei den externen Tools im Studio. Solche Fehler bekomme ich, wenn die den Haken "Use AVR Toolchain" aus Versehen noch gesetzt habe.

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
18.02.2019, 21:55 Uhr
wpwsaw
Default Group and Edit


jetzt wird ein Schuh draus, werde ich mal ausprobieren, Danke erst einmal-

AVR ST4 nutze ich fast nur um fertige Assemblerprogramme zu compilieren und AVRs zu bespielen.

fertige Assemblerprogramm ändere ich nur mal.

Gruß und Danke

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
18.02.2019, 22:19 Uhr
wpwsaw
Default Group and Edit


ich habe jetzt die Einstellungen vorgenommen. Leider die gleichen Fehlermeldungen. Muss man st4 noch sagen, dass es ein alter C-Code ist?
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
18.02.2019, 22:24 Uhr
holm

Avatar von holm

...was steht denn auf dem Monitor? .."ein Blumentopf..."


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
18.02.2019, 22:32 Uhr
wpwsaw
Default Group and Edit


HOLM...??

verstehe die Frage nicht, steh wohl auf meiner eigenen leitung
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
18.02.2019, 22:34 Uhr
schlaub_01



Ich denke mal, daß er meint: Ohne zu wissen, wie Deine Fehlermeldungen aussehen, ist das nur rumstochern. Wenn Du mal ein paar Zeilen der Ausgabemeldungen hättest, könnte man mal schauen, was angemeckert wird.

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
18.02.2019, 22:36 Uhr
wpwsaw
Default Group and Edit


Ich habe gerade nachgefragt, der originale Quelltext wurde mit CODEVERSION übersetzt.

Gibt es für C_Compiler andere .h Dateien, z.B. Delay.h?
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
18.02.2019, 22:40 Uhr
wpwsaw
Default Group and Edit


Bitte schön


Build started 18.2.2019 at 22:42:44
avr-gcc -I"TATTiny13\." -mmcu=attiny13 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT StaATTiny13.o -MF dep/StaATTiny13.o.d -c ../StaATTiny13.c
In file included from TATTiny13\./tiny13.h:22,
from ../StaATTiny13.c:15:
TATTiny13\./avr-tino/pin.h:45: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./avr-tino/pin.h:86: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./avr-tino/pin.h:104: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
In file included from ../StaATTiny13.c:15:
TATTiny13\./tiny13.h:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:29: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
TATTiny13\./tiny13.h:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'SPIPort'
TATTiny13\./tiny13.h:36: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'MOSI_PIN'
TATTiny13\./tiny13.h:37: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'MISO_PIN'
TATTiny13\./tiny13.h:38: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'SCK_PIN'
TATTiny13\./tiny13.h:48: error: 'ADLAR' undeclared here (not in a function)
TATTiny13\./tiny13.h:49: error: 'REFS0' undeclared here (not in a function)
../StaATTiny13.c:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char'
../StaATTiny13.c: In function 'send':
../StaATTiny13.c:52: error: 'PORTB' undeclared (first use in this function)
../StaATTiny13.c:52: error: (Each undeclared identifier is reported only once
../StaATTiny13.c:52: error: for each function it appears in.)
../StaATTiny13.c:52: error: expected ';' before numeric constant
../StaATTiny13.c:56: error: expected ';' before numeric constant
../StaATTiny13.c:58: error: expected ';' before numeric constant
../StaATTiny13.c:59: warning: implicit declaration of function 'delay_us'
../StaATTiny13.c: At top level:
../StaATTiny13.c:65: error: 'EXT_INT0' undeclared here (not in a function)
../StaATTiny13.c:65: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
../StaATTiny13.c:75: warning: return type of 'main' is not 'int'
../StaATTiny13.c: In function 'main':
../StaATTiny13.c:78: warning: ignoring #pragma optsize
../StaATTiny13.c:79: error: 'CLKPR' undeclared (first use in this function)
../StaATTiny13.c:88: error: 'GIMSK' undeclared (first use in this function)
../StaATTiny13.c:89: error: 'MCUCR' undeclared (first use in this function)
../StaATTiny13.c:90: error: 'GIFR' undeclared (first use in this function)
../StaATTiny13.c:92: error: 'TCCR0A' undeclared (first use in this function)
../StaATTiny13.c:93: error: 'TCCR0B' undeclared (first use in this function)
../StaATTiny13.c:94: error: 'TCNT0' undeclared (first use in this function)
../StaATTiny13.c:95: error: 'OCR0A' undeclared (first use in this function)
../StaATTiny13.c:96: error: 'OCR0B' undeclared (first use in this function)
../StaATTiny13.c:97: error: 'TIMSK0' undeclared (first use in this function)
../StaATTiny13.c:98: error: 'ACSR' undeclared (first use in this function)
../StaATTiny13.c:99: error: 'ADCSRB' undeclared (first use in this function)
../StaATTiny13.c:102:2: error: invalid preprocessing directive #asm
../StaATTiny13.c:109: error: 'PORTB' undeclared (first use in this function)
../StaATTiny13.c:109: error: expected ';' before numeric constant
../StaATTiny13.c:110: error: 'tab' undeclared (first use in this function)
../StaATTiny13.c:118: warning: implicit declaration of function 'delay_ms'
../StaATTiny13.c:119: error: expected ';' before numeric constant
make: *** [StaATTiny13.o] Error 1
Build failed with 44 errors and 4 warnings...
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 18.02.2019 um 22:43 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
18.02.2019, 22:46 Uhr
wpwsaw
Default Group and Edit


Hier mal der Quellcode


/*****************************************************

Chip type : ATtiny13
Clock frequency : 9,6 MHz, intern
*****************************************************/
#include <tiny13.h>
//#include <delay.h>

char wd=0; // Wochentag, 0-6
char pnt=0; // Zeiger für Zeichentabelle
char sign=0; // Datenbyte für Display
char cntr=0; // Counter für Schleife
char zlr=0; // Counter

// Tabelle für 14 Seg.-Zeichen, beginnend mit Montag
// Zu jedem Wochentag gehören 30 Bytes
// Je drei Bytes gehören zu einem Zeichen
// Das erste Byte ist das HB, dann MB und dann LB
flash char tab[210]={0x48,0x6C,0x01,0xC8,0x26,0x10,0x4A,0x2C,0x02,0x20,0x82,0x20,0x59,0x26,0x04,
0xC9,0x06,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xE0,0xA2,0x01,0xA0,0x82,0x10,0x99,0x06,0x02,0x4A,0x2C,0x20,0xD1,0x06,0x04,
0x20,0x82,0x40,0x59,0x26,0x80,0xC9,0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x48,0x6C,0x01,0xA0,0x82,0x10,0x20,0x82,0x02,0x20,0x82,0x20,0x4E,0x24,0x04,
0xC8,0x26,0x40,0x88,0x06,0x80,0x59,0x24,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0xE0,0xA2,0x01,0xC8,0x26,0x10,0x4A,0x2C,0x02,0x4A,0x2C,0x20,0x99,0x06,0x04,
0x1B,0x26,0x40,0xD1,0x06,0x80,0x20,0x82,0x08,0x59,0x27,0x00,0xC9,0x16,0x00,
0x19,0x06,0x01,0x1B,0x26,0x10,0x99,0x06,0x02,0xA0,0x82,0x20,0x20,0x82,0x04,
0x59,0x26,0x40,0xC9,0x06,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xD1,0x06,0x01,0x59,0x26,0x10,0x48,0x6C,0x02,0xD1,0x06,0x20,0x20,0x82,0x04,
0x59,0x26,0x40,0xC9,0x06,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xD1,0x06,0x01,0xC8,0x26,0x10,0x4A,0x2C,0x02,0x4A,0x2C,0x20,0x20,0x82,0x04,
0x59,0x26,0x40,0xC9,0x06,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
//***********************************************************************************************
// Subroutine: Sendet ein Byte seriell
// Ansteuerung der FV651G über 3x CD4094 (Seriell/Parallelwandler mit Latch)
void send (char data)
{
// set 4094-Strobe to 0
for (zlr=0;zlr<8;zlr++) // Schleife 8x durchaufen
{
if ((data&0x80)==0) // bit7 = 0 ?
{ // yes
PORTB.3=1; // set databit to 0
}
else // no, bit7 = 1
{
PORTB.3=0; // set databit to 1
}
PORTB.2=0; // 4094 clk to 1
delay_us(5);
data=data<<1; // setup for next bit check
}
} // End of subroutine

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
wd++; // increment weekday
if (wd==7) // overrun ?
{ // yes
wd=0; // reset weekday to monday
}
while (PINB.1==0); // warte, bis Interrupt-Signal wieder auf H liegt
} // End of interrupt0-routine

void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
GIMSK=0x40;
MCUCR=0x02;
GIFR=0x40;

TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TIMSK0=0x00;
ACSR=0x80;
ADCSRB=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
pnt=wd*30; // compute pointer
for (cntr=0;cntr<10;cntr++) // sende 10 Zeichen zum Displax
{ // ein Zeichen besteht aus 3 Bytes
PORTB.0=1; // set 4094-Strobe to 0
sign=tab[pnt];
send(sign); // send HB
pnt++;
sign=tab[pnt];
send(sign); // send MB
pnt++;
sign=tab[pnt];
send(sign); // send LB
delay_ms(1);
PORTB.0=0; // set 4094-Strobe to 1
pnt++;
delay_ms(1); // delay neccessary (Durchlaufverzögerung)
}

}; // end of while(1)

} // end of main
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
18.02.2019, 22:47 Uhr
schlaub_01



Codevision kenne ich nur. Ist so ein kommerzieller C Complier. Na gut, dann passen wahrscheinlich die ganzen Libs nicht dazu.
Aber wenn Du das Projekt schon mal gemacht hast, muss ja der Compiler irgendwo noch installiert sein oder hast Du nur das Projekt bekommen und willst es selber ändern? Dann wird's schon schwieriger...

Grüße,
Sven.

Edit: wenn das alles an Code ist, könnte man das auch problemlos umstellen. Es fehlt erst mal nur die "avr/io.h", die ich grundlegend immer verwende, die Interruptroutine müsste namentlich angepasst werden und die Portzuweisungen etwas verändert. Bekommt man alles mit den Winavr Tools hin....

Dieser Beitrag wurde am 18.02.2019 um 22:54 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
18.02.2019, 22:52 Uhr
holm

Avatar von holm


Zitat:
wpwsaw schrieb
Ich habe gerade nachgefragt, der originale Quelltext wurde mit CODEVERSION übersetzt.



Das halte ich für ein Gerücht, Bei Codevision wird dann langsam ein Schuh draus.


Zitat:


Gibt es für C_Compiler andere .h Dateien, z.B. Delay.h?



ja, und ganz opffensichtlich auch andere Syntax für Inline Assembler.

Was hast Du da für einen Schrägen Pfad ..mit "T-SmileyAttiny13" ..bau da die Umlaute aus.. und dann will ich aus der Datei pin.h die Zeilen 40-50 sehen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
18.02.2019, 22:52 Uhr
wpwsaw
Default Group and Edit


letzteres, deswegen ja. Es muss doch auch mit ST4 irgen wie gehen.
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
18.02.2019, 22:56 Uhr
holm

Avatar von holm

Was für ein ST4?
Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
18.02.2019, 22:58 Uhr
wpwsaw
Default Group and Edit


AVR Studio 4
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
18.02.2019, 22:59 Uhr
schlaub_01



ST4 = AVR Studio 4 ;-)
Ihr seid zu schnell...

Dieser Beitrag wurde am 18.02.2019 um 23:00 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
18.02.2019, 23:05 Uhr
wpwsaw
Default Group and Edit


@Holm

das mit dem smiley ist Doppelpunkt und Schrägstrich vom Laufwerk T

PIN.h

/*
Copyright (c) 2012-2013 Sylvain Leroux <sylvain@chicoree.fr>

This file is part of avr-tino -- http://github.com/s-leroux/avr-tino

avr-tino is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

avr-tino is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with avr-tino. If not, see <http://www.gnu.org/licenses/>.
*/
#if !defined AVR_TINO_PIN_H
#define AVR_TINO_PIN_H

#if !defined NOT_A_PORT
# define NOT_A_PORT uint8_t(-1)
#else
# error "Multiple definitions of NOT_A_PORT"
#endif

enum __attribute__ ((__packed__)) pinmode_t {
INPUT = 0,
OUTPUT,
};

enum __attribute__ ((__packed__)) pinstate_t {
LOW = 0,
HIGH
};

//extern "C" {

enum __attribute__ ((__packed__)) bitorder_t {
LSBFIRST,
MSBFIRST
};

template<uint8_t PIN, uint8_t DDR = PIN+1, uint8_t POUT = DDR+1>
class Port {
public:
//
// Port direction
//
static void toInput(uint8_t mask) {
_SFR_IO8(DDR) &= ~mask;
}

static void toOutput(uint8_t mask) {
_SFR_IO8(DDR) |= mask;
}

//
// Whole port access
//
static uint8_t read(uint8_t mask = 0xFF) {
return _SFR_IO8(PIN) & mask;
}

static void write(uint8_t value) {
_SFR_IO8(POUT) = value;
}

static void invert(uint8_t mask = 0xFF) {
write(read() ^ mask);
}

//
// Pin-group access
//
static void set(uint8_t mask = 0xFF) {
_SFR_IO8(POUT) |= mask;
}

static void clear(uint8_t mask = 0xFF) {
_SFR_IO8(POUT) &= ~mask;
}
};

template<class _Port, uint8_t _pin>
class Pin {
public:
typedef Pin<_Port, _pin> This;

static const uint8_t pin = _pin;
static const uint8_t mask = 1<<_pin;
typedef _Port Port;

static void toInput() { _Port::toInput(This::mask); }
static void toOutput() { _Port::toOutput(This::mask); }
static void set() { _Port::set(This::mask); }
static void clear() { _Port::clear(This::mask); }

static bool isSet() { return _Port::read(This::mask) != 0; }
static bool isClear() { return !isSet(); }
};

template<class DataPin, class ClockPin>
static void shiftOut(uint8_t value) {
/* !!! data and clock are *masks* not pin numbers !!! */
for(uint8_t i = 0; i < 8; ++i) {
if ((value & 0x01)) {
DataPin::set();
}
else {
DataPin::clear();
}
ClockPin::set();
value>>=1;
ClockPin::clear();
}
}

//} // extern "C"

#endif
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
18.02.2019, 23:07 Uhr
holm

Avatar von holm

Ehy, ich wollte 10 Zeilen damit ich das hier nicht alles durchzählen muß..

Ich sehs aber schon, das betrifft die Header die der Compiler für die CPU mitbringt, Portdefinitionen usw.
Da ist Alles ..Schrott für den GCC.
Des Weiteren ist das CPlusPlus..auf Sowas habe ich eigentlich keinen Bock..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 18.02.2019 um 23:09 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
18.02.2019, 23:08 Uhr
wpwsaw
Default Group and Edit


manne so schnell habe ich den Schalter für die Zeilennummerierung nicht gefunden
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
18.02.2019, 23:17 Uhr
schlaub_01



Aber soweit ich das Programm überblicke, werden ja nur Pins hin und her gesetzt. Viel passiert ja da nicht. Lediglich die While Schleife im Interrupt ist etwas "unschön"... Das Delay gibt es auch beim AVR-GCC, sollte also einfahc umsetzbar sein. Wenns nicht so spät wäre, hätte ich mich noch hingesetzt und das umgeschrieben...

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
18.02.2019, 23:27 Uhr
wpwsaw
Default Group and Edit


Hallo Sven,

muss jetzt nicht sein, danke schön. Ich würde mich vielleicht mal bei dir später melden.

ich wollte mich nur mal weiterbilden. Ist für eine Nixie Uhr

http://www.robotrontechnik.de/bilder/Upload_Forum/19/17z_m59.jpg

möchte einige Funktionen anpassen und habe deshalb den Quellcode bekommen. Es kommt ein Atmega32, Atmega8 und ein Attiny13 zu einsatz. Es sind also drei Programme wobei der Atmega32 der Hauptprozessor ist.

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 18.02.2019 um 23:28 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
18.02.2019, 23:49 Uhr
schlaub_01



Hallo Wolf-Peter,

hast Post... ;-)

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
19.02.2019, 10:32 Uhr
oderlachs

Avatar von oderlachs

Hallo ,
habt Ihr denn des Rätsels Lösung gefunden?
Ich arbeite ja viel mit AVR-Studio 4, aber dieser Quelltext ist mir hier etwas befremdent.

Es wird die Funktion "delay_ms(xx)" auf gerufen , obgleich die "delay.h" gar nicht includiert wird... der vielen Fehlermeldunden zufolge bzw . deren Liste sagt das der Compiler nicht weiss was er für eine MCU verwenden soll.
Kann es sein das der Sourcecode für eine andere MCU geschrieben wurde und die Registernamen gar nicht om Tiny13 vorhanden sind ?
Auch muss man bei gängigen AVR Chips keine Chiptype Headerdatei includieren. Der Chip wird unter Projektoptionen festgelegt, auch liest das AVR Studio den Chiptype aus ...

Soweit erst mal meine Überlegungen zu dem Sorcecode und der angegebenen MCU

Gerhard

Bei etwas mehr Infos, würde ich den Code gern compilieren und dann als hex File zur verfügung stellen, bzw, das ganze Projekt im Studio4 Format als Zip Datei.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
19.02.2019, 10:36 Uhr
wpwsaw
Default Group and Edit


doch, ganz oben "include delay.h" ich hatte sie nur zu Testzwecken auskommentiert. hatte nicht viel an Fehlermeldungen geändert

ich hatte nur den Quelltext bekommen und dort waren die Dateien delay.h include.

diese habe ich aus dem Internet. Wahrscheinlich passen die nicht dazu. Wie schon geschrieben, mag ich C und C++ nicht so und das mit dem Können ist weit weg.

Ich muss wohl doch alles in eine für mich angenehmeren Programmiersprache umschreiben, um eine Anpassung an meine Wünsche vornehmen zu können.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 19.02.2019 um 10:41 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
19.02.2019, 12:07 Uhr
oderlachs

Avatar von oderlachs

...so ich habe den Code mal compiliert....natürlich mit Fehlern !
1. zu Fuss unter Linux
2. per AvrStudio 4.19

Fakt ist eines das viel vom Code falsch geschrieben wurde, es kann sein das auch beim Kopieren aus dem Forum hier falsch ging.
Aber AVRStudio kennt im Falle von delay's nur "_delay_us(xx)" bzw "_delay_ms(xx)".

Auch PORTB.0 ist Unbekannt . Da solte es heissen :

PORTB |= (1<< PB0) // = 1 ...bzw PORTB &= ~(1 <<PB0) // = 0, es sei denn ich habe in einer Headerdatei oder in der main diese Begriffe PORTB.0...7 etc neu definiert.
Das kann ich aber nicht aus den Postings erlesen..sei den die PIN.h soll dazu verwendet werden...habe noch nicht so alles "studiert".
Beim Programmieren hat ja jeder so seine "eigene Handschrift" , sie sollte aber immer gut dokumentiert sein..wenn Aussenstehende mit dem Code auch umgehen müssen/sollen.

Um zBsp ein Port.Bit zu setzen(=1) oder zu löschen(=0) schreibe ich am anfang hinter dem Includeblock folgenes:
#define sbit(port, bit) (port |= (1<<bit)) // Pin ist dann HIGH bzw 1
//und wird so aufgerufen sbit(PORTB,PB0) dann wäre PB0 = HIGH
#define cbit(port, bit) (port &= ~(1<< bit) // Pin ist dann LOW = 0

der Aufruf erfolgt äquivalent wie zu vor...
....
zum asm("sei"); ... usw InterruptAufruf:
wenn man "interupt.h" includiert kann man einfach mit "sei();"// IRQ ein bzw.
cli(); //IRQ aus schreiben.

#include <avr/interupt.h> also einfügen Zbsp
Aber wie gesagt, jeder Programmierer hat seine eigene "Handschrift"...ich wollte nur mal mein Vorgehen bei diesem Code etwas erklären...

Gerhard
Nachtrag : hatte beim Erklären zum Includieren bei delay noch vergessen , das wird bei mir als standart dort schon geschrieben:

#include <avr/io.h>
#include <util/delay.h>

Dieser Beitrag wurde am 19.02.2019 um 12:13 Uhr von oderlachs editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
19.02.2019, 12:30 Uhr
wpwsaw
Default Group and Edit


Hallo Gerhard,

danke für deine Bemühungen,

der Qellcode ist nicht falsch sonder Studio 4 passt wohl nicht zum Qellcode. Dieser Qellcode wurde mir vom Ersteller geschickt und ich habe auch die schon programmierten AVR-ICs erhalten.

mein 1. Ziel : den passenden Compiler zu finden
mein 2. Ziel : die von mir beabsichtigten Änderungen vor zu nehmen
mein 3. Ziel : wenn 1. nicht klappt, den Quellcode in eine andere Programmiersprache zu wandeln

der Ersteller teilte mir mit, dass er den Quellcode mit CODEVERSION übersetzt hat

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
19.02.2019, 12:40 Uhr
oderlachs

Avatar von oderlachs


Zitat:
wpwsaw schrieb
der Qellcode ist nicht falsch sonder Studio 4 passt wohl nicht zum Qellcode. Dieser Qellcode wurde mir vom Ersteller geschickt und ich habe auch die schon programmierten AVR-ICs erhalten.



Ja ich habe mich da vielleicht ein wenig "dähmlich" ausgedrückt, ich meinte , das er nicht mit dem AVRStudio üblichen Compiler übersetzbar ist.

Das ist leider so, wenn man verschiedene Compiler/Entwicklungsumgebungen(IDE) verwendet.
Leider sind solche "viel vereinfachende IDEs/Compiler) oft sehr kostenpflichtig. das Verlohnt dann nur bei prof. Anwendungen, es sei man bedient sich , der oft in den Tiefen des Webs verbreiteten gecrakten Tools.

Ich wünsche Dir viele Erfolg dabei es zu lösen, ist ja ein interesantes Projekt...habe das Foto angesehen.

Gruss
Gerhard
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
19.02.2019, 12:48 Uhr
wpwsaw
Default Group and Edit


Ja, Danke. Aber Sven will mir noch ein bisschen helfen.

eine Frage noch, gibt es denn auch unterschiedlich zum jeweiligen Compiler passende *.h dateien? z.B. delay.h
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
19.02.2019, 13:38 Uhr
oderlachs

Avatar von oderlachs

Ja eigentlich kann ja jeder seine eigene Headerdateien schreiben, solange sie zur Hard und Software passen...die avr/io.h beschreibt die I/O Ports der Chips...da mit der Compiler weiss das zBsp "PORTB" oder "DDRB" auch den richtigen Registern im Chip zuordnen kann..
So könnte man für jeden Chiptyp eine eigene IO.h schreiben...Das alles zu erklären würde den Rahm hier sprengen..

Wenn man mal sich einige Header Dateien im Editor ansieht wird man vieles entdecken was einem einiges erklärt. Aber wie schon immer kocht jeder Hersteller sein eigenes Süppchen, was den Compiler / IDE usw. anbelangt.
Natürlich gibt es Standards in C, C++ usw..
Auch muss man in der einen IDE/Compilerumgebung zBsp die "stdint.h" extra includieren um einen "uint8_t " zu verwenden als Variablentyp....in anderer Entwicklungumgebung ist das schon mit Standart.

Deshalb sollte man seiner Entwicklungsumgebung /Compiler(Hersteller) treu bleiben , um nicht zu viel umdenken zu müssen...

Gruss Gerhard

schau mal zBsp : "C: \ WinAVR-20100110\avr\include" .... deiner Installation entsprechend ändern

Dieser Beitrag wurde am 19.02.2019 um 13:43 Uhr von oderlachs editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
08.03.2019, 08:37 Uhr
wpwsaw
Default Group and Edit


Hallo noch einmal an die AVR Fachleute!!

nach dem Sven mir die Teilprogramme in eine von AVR Studio4 nutzbare Variante umgeschrieben hat, Vielen Dank noch mal dafür, komme ich mit C doch nicht so weiter.

Ich habe jetzt mit dem Kleinsten - ATTiny13 angefangen um alles in BASCOM um zu schreiben. Dazu benutze ich zum Testen das STK500 Board, wo ich die PORT-Pins mit den entsprechenden PINs des IC-Sockels auf der Leiterplatte der Uhr verbunden habe. Das funktioniert sehr gut bis auf ein paar optische Feinheiten am VFD-Display, die sich noch abstellen lassen.

So, dachte ich, Strippen ab, und rein mit dem IC. Und nichts passierte. Der Attiny lief garnicht. Nur ein Port (PB0) zappelte. Wieder alles zurück, der Attiny funktionierte. Auf der Uhrplatine eben nicht.

Dann habe ich Testhalber den original Hex-Code in den Tiny gespielt. Damit läuft die Uhr.

Warum läuft die Uhr, wenn der Tiny auf dem STK500 steckt und nicht in der Uhr.

der Tiny ist wie mit der Originalsoftware (siehe 011) programmiert die Fuses sind auf "High Byte= 0xFF Low Byte= 0x7A" gesetzt auch wie der Originale.

In der Schaltung liegt PIN1 auf +5 (Reset eingang) PIN2,5,7 (PB0,2,3) steuern Transistoren an.
PIN6 (PB1) ist Eingang von einem anderen IC und löst bei H-L Flanke einen Interrupt aus.
PIN3 (PB4) wird nicht mehr benutzt ist aber mit einem anderen IC verbunden.


wie schon geschrieben, PB0 arbeitet, die beiden anderen Ausgänge (PB2 und PB3) sind auf LOW.

Hat jemand eine Idee?? Was übersehe ich.


Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
09.03.2019, 09:19 Uhr
wpwsaw
Default Group and Edit


Moin, Moin

hat keiner eine Idee??? :-((
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
09.03.2019, 10:17 Uhr
kaiOr

Avatar von kaiOr

Vielleicht hast Du in BASCOM was unterschlagen. Eingangssignale sind manchmal vom Schaltzustand der internen PullUps abhängig.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
09.03.2019, 10:53 Uhr
oderlachs

Avatar von oderlachs

Es wäre wahrscheinlich weil das STK den Attiny mit externen Takt versorgt.... je nach FuseBits.

Es ist schlecht wenn man nur die Softwarebedingungen nicht aber die Hardware kennt, da fernab nach Fehlerursachen zu suchen.
In der SourceCode hier Basic muss ja angegeben werden woher der µC seinen Takt und welche Frequenz bezieht. Vielleicht unterscheiden sich Dein Basiccode und der orginal Code/hex-file darin.

Gerhard
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
09.03.2019, 13:19 Uhr
wpwsaw
Default Group and Edit


Hallo,

in 031 habe ich die Harwarebedingungen beschrieben, sind ja nur 8 pins.

wie gesagt, im stk500 und die Ports verbunden mit dem IC-Sockel auf der Anwenderleiterplatte funktioniert alles fehlerfrei.

Das mit den Pullup Widerständen prüfe ich noch einmal.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
09.03.2019, 16:54 Uhr
schlaub_01



Hallo Wolf-Peter,

zeigt doch mal bitte Deinen BASCOM Code. Ich bin ja immer noch der Meinung, daß der Code in 011 fehlerhaft ist. Port B.2 wird nur auf 0 gesetzt und nie auf 1.
Ansonsten kann das wirklich nur was mit dem STK500 und der Beschaltung zu tun haben. Läuft denn mein C Code?

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
09.03.2019, 17:01 Uhr
wpwsaw
Default Group and Edit


Hallo sven,

das hatte ich alles schon korrigiert. Von der Sache kann mein BASCOM Code nicht fehlerhaft sein, da er ja funktioniert. Ich tippe eher auf die Konfigurationsbefehle. Hier mein Code

;##############################################################################
;
;' ---------------------------------------------------
'
' Anzeige Wochentag auf FV651g über CD4096
' mit ATTiny 13
'
' ----------------------------------------------------
;
;******************************************************************************
')
'
'Konfiguration
$regfile = "attiny13.dat"
$crystal = 9600000 ' 9,6 MHz
$hwstack = 4
$swstack = 4
$framesize = 10
'
'
'Ports
config PORTB.3=OUTPUT ' Daten Port
Data_out Alias DDRB.3
config PORTB.2=OUTPUT ' Takt Port
Clock_out Alias DDRB.2
config PORTB.0=OUTPUT ' Strobe Port
Strobe_out Alias DDRB.0
'
config PORTB.5=input
portb.5 = 1
config PORTB.4=input
portb.4 = 1
config PORTB.1=INPUT ' Interrupt Eingang
PORTB.1 = 1 ' mit Pull Up Widerstand
'
'
'Interrupt
on int0 interrupt ' Interrupt UP-Routine für INT0
config Int0=FALLING ' INT0 mit H-L Flanke
enable Int0 ' erlaube INT0
enable interrupts ' erlaube Interrupts
'
'
'Festlegungen UPs und Programme
'
Declare Sub Send_bytes() ' Unterprogramm Byte senden

Dim Wtag As Byte 'Wochentag 0 bis 6
Dim ZeigZ As Byte 'Zeiger für Zeichenbildtabelle
Dim sign As Byte 'Datenbyte für Display
Dim Nsign As Byte 'negiertes Datenbyte für Display
Dim Zanf As Byte 'Zaehler für Schleife
Dim Zend As Byte 'Zaehler Zeichen
Dim ZByte As Byte 'Zaehler Byte
Dim Zzbyte as byte 'Zähler Z Anzeige
Dim ZAnz As Byte 'Zähler Anzeige
DIM btt as byte 'BIT Zähler
DIM Intbit as Byte 'Variabel Interrupt Bit
'
'
'definierte Zustände
'
Wtag = 0 'setze Wochentag auf 0 = Montag
Set Clock_out 'setze Taktpegel am CD4094 auf 0
Set Data_out 'setze Datenpegel am CD4094 auf 0
Set Strobe_out 'setze Strobepegel am CD4094 auf 0
'
'
'
'// ### Hauptprogramm Wochentagausgabe ###

'// Tabelle für 14 Seg.-Zeichen, beginnend mit Montag
'// Zu jedem Wochentag gehören 30 Bytes
'// Je drei Bytes gehören zu einem Zeichen
'// Das erste Byte ist das HB, dann MB und dann LB
'
'Beginn der Haupt-Programmschleife
Do

'// Ausgabe Wochentag 30 Byte


ZeigZ = Wtag * 30 ' setzen Zeiger Zeichen
Zend = ZeigZ + 29 ' Ende Zeichenausgabe
'
' Ausgabe 10x 3 Byte
For ZAnz = ZeigZ to Zend step 3
reset strobe_out ' Strobe an CD4094 auf 1
'
'Ausgabe 3 Byte
for zbyte = 0 to 2
zzbyte = zbyte + zanz ' Position in Zeichentabelle
sign = Lookup (zzbyte , TabelleZ) ' Byte aus Tabelle lesen
nsign = sign xor &HFF ' Byte bitweise negieren
Call Send_bytes ' Sende negiertes Byte an CD4094
next zbyte ' nächstes der 3 Bytes
'
set strobe_out ' Strobe an CD4094 auf 0
waitms 1 ' Wartezeit 1ms
'
next ZAnz ' nächsten 10 Byte
'

Loop ' Ende der Haupt-Programmschleife
'
'
'Unterprogramme
'
'Unterprogramm Byte senden
Sub Send_bytes()

'// Subroutine: Sendet ein Byte seriell
'// Ansteuerung der FV651G über 3x CD4094 (Seriell/Parallelwandler mit Latch)
'
'
for btt = 7 to 0 step -1 ' Bits zählen
PORTB.3 = nsign.btt ' Bit auf Port B3
set clock_out ' Taktpegel am CD4094 auf 0
waitus 8 ' L-Pegellänge 5µs
reset clock_out ' Taktpegel am CD4094 auf 1
waitus 3 ' H-Pegellänge 5µs
next btt ' nächstes Bit
'
End Sub ' Ende Unterprogramm
'
'
'Interrupt Service Routine für INT0
'
interrupt:
'
disable INT0 ' sperre Interrupt INT0
reset Strobe_out
Wtag = Wtag + 1 ' erhöhen WT um 1
if wtag = 7 then wtag = 0 ' Test auf Sonntag, wenn ja dann 0 = Montag
'
notInt:
intbit = PORTb.1 ' Abrage InterruptEingang
if intbit = 0 then goto notint ' warten auf H-Pegel = kein Interrupt
set strobe_out
enable INT0 ' erlaube Interrupt INT0
'
return ' Ende Unterprogramm
'
'
'Daten Tabellen
'
'############################################################################################################
'
TabelleZ:
Data &H48 , &H6C , &H01 , &HC8 , &H26 , &H10 , &H4A , &H2C , &H02 , &H20 , &H82 , &H20 , &H59 , &H26 , &H04 ,
Data &HC9 , &H06 , &H40 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
Data &HE0 , &HA2 , &H01 , &HA0 , &H82 , &H10 , &H99 , &H06 , &H02 , &H4A , &H2C , &H20 , &HD1 , &H06 , &H04 ,
Data &H20 , &H82 , &H40 , &H59 , &H26 , &H80 , &HC9 , &H06 , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
Data &H48 , &H6C , &H01 , &HA0 , &H82 , &H10 , &H20 , &H82 , &H02 , &H20 , &H82 , &H20 , &H4E , &H24 , &H04 ,
Data &HC8 , &H26 , &H40 , &H88 , &H06 , &H80 , &H59 , &H24 , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
Data &HE0 , &HA2 , &H01 , &HC8 , &H26 , &H10 , &H4A , &H2C , &H02 , &H4A , &H2C , &H20 , &H99 , &H06 , &H04 ,
Data &H1B , &H26 , &H40 , &HD1 , &H06 , &H80 , &H20 , &H82 , &H08 , &H59 , &H27 , &H00 , &HC9 , &H16 , &H00 ,
Data &H19 , &H06 , &H01 , &H1B , &H26 , &H10 , &H99 , &H06 , &H02 , &HA0 , &H82 , &H20 , &H20 , &H82 , &H04 ,
Data &H59 , &H26 , &H40 , &HC9 , &H06 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
Data &HD1 , &H06 , &H01 , &H59 , &H26 , &H10 , &H48 , &H6C , &H02 , &HD1 , &H06 , &H20 , &H20 , &H82 , &H04 ,
Data &H59 , &H26 , &H40 , &HC9 , &H06 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
Data &HD1 , &H06 , &H01 , &HC8 , &H26 , &H10 , &H4A , &H2C , &H02 , &H4A , &H2C , &H20 , &H20 , &H82 , &H04 ,
Data &H59 , &H26 , &H40 , &HC9 , &H06 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ,
'
'************************************************************************************************************
'
'(
;******************************************************************************
;
;##############################################################################



nur in der originalen LP hat nur PB.3 ein Signal. Datenausgang

ich denke, ich habe den Code gut kommentiert

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 09.03.2019 um 18:21 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
09.03.2019, 23:09 Uhr
Bert



Ich prüfe die Fuses gerne mit http://www.engbedded.com/fusecalc.
Deine sehen ok aus.

Offenbar gibt es Unterschiede zwischen dem STK500 und Deiner Hardware.
Wenn ich gar nicht mehr weiter wüsste, würde ich ein einfaches Testprogramm schreiben, was immer nur einen Pin wackeln läßt.
Wenn man langsam genug wackelt, kann man das sogar mit dem Multimeter prüfen, sonst mit dem Oszi.

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
10.03.2019, 09:44 Uhr
wpwsaw
Default Group and Edit


Hallo Bert, das ist es ja, wenn ich die originale Hex-Datei einspiele, läuft der Tiny ja


wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
10.03.2019, 11:48 Uhr
oderlachs

Avatar von oderlachs

Nun das ist es ja , was ich sagte. Im Org. Hex file werden die Fuses anders gesetzt sein als Du bei Deinem Code hast.
Ich vermute das der Takt/Oszillatoreinstellungen bei den Fuse-Einstellungen nicht gleich sind bei deinem und dem orginal code.

Ich muss mal schauen wie das beim AVR Studio zu zu intertpretieren ist, arbeite aber gerade am PIC mit der MATLAB-IDE unter Linux....AVR Studie ist nur beim Win PC möglich...
Wäre interessant, wenn du mal die Fuse-Einstellungen hier postest...

http://oderlachs.de/forum/avr/tiny13.jpg

Wird der Tiny mit nem Quarz oder Intern Oszillator betrieben..?
Gibt es denn irgentwo eine Schaltung von der Uhr ???

Gerhard

Dieser Beitrag wurde am 10.03.2019 um 12:25 Uhr von oderlachs editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
10.03.2019, 12:47 Uhr
wpwsaw
Default Group and Edit


Nein Gerhard, ich habe die Fuses so gesetzt wie es für das originale HEX File vorgesehen ist, sonst würde er garnicht funktionieren. Die Schaltung hatte ich oben auch schon beschrieben, kann sie aber noch nachreichen.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
10.03.2019, 12:53 Uhr
wpwsaw
Default Group and Edit


Hier der Plan



Fuses siehe 031

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
10.03.2019, 16:37 Uhr
schlaub_01



Die Fuses passen auch soweit. Der einzigste Unterschied ist der Taktteiler, der bei den Fuses eingestellt ist und in den Original-C Quellen zur Laufzeit deaktiviert wird. Aber selbst mit dem Teiler müsste der Code eigentlich laufen. Ich habe zwar BASCOM noch nie gemacht, aber wenn ich das so beurteilen kann, passt das soweit. Alle Eingänge haben die internen Pull-up's zugeschaltet. Die Ausgänge werden auch passend geschaltet.
Lediglich das Reset am STK wäre mal interessant. Wie ist das dort beschaltet? Ich sehr da keine Verbindungen.

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
10.03.2019, 16:49 Uhr
wpwsaw
Default Group and Edit


Hallo Sven,

auf dem STK muss PB5 an das Board-Reset angeschlossen werden, welches im Normalfall auf H liegt, weil ich sonst den Tiny nicht programmieren kann.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
11.03.2019, 01:30 Uhr
Bert



Hallo Wolf-Peter,

der Code aus 011 ist vermutlich für CodeVision:
http://www.codevision.be/codevisionavr-c-105/codevisionavrcompiler

Ist der Code in 011 der Originalcode?
Wenn ja, ist da einiges ungewöhnlich:
1. Die Pins 0, 2 und 3 werden nirgendwo als Ausgang geschaltet (nur die Pullups).
2. Für Pin 2 wird in der send-Routine der Pullup deaktiviert und nie aktiviert.
3. Warum wird in der Interruptroutine gewartet, bis der Pin 1 wieder auf high geht?

Anbei das hex-File was - nach Modifikation - aus dem avr-gcc rausfällt:

Quellcode:

:1000000072C094C07EC07DC07CC07BC07AC079C005
:1000100078C077C0486C01C826104A2C0220822084
:10002000592604C90640000000000000000000003E
:100030000000E0A201A082109906024A2C20D106FD
:1000400004208240592680C90608000000000000F4
:10005000486C01A082102082022082204E2404C815
:100060002640880680592408000000000000E0A215
:1000700001C826104A2C024A2C209906041B26404F
:10008000D10680208208592700C916001906011BD5
:100090002610990602A08220208204592640C90613
:1000A00080000000000000000000D1060159261069
:1000B000486C02D10620208204592640C9068000DF
:1000C0000000000000000000D10601C826104A2CE4
:1000D000024A2C20208204592640C90680000000D4
:1000E00000000000000011241FBECFE9CDBF20E0BA
:1000F000A0E6B0E001C01D92A536B207E1F72CD012
:100100008AC07ECF1092600087FD0EC0C39AC2984D
:1001100090E19A95F1F7880F909160009F5F90931E
:100120006000983088F30895C398F1CF1F921FB6EE
:100130001F9211248F93809164008F5F873049F064
:1001400080936400B19BFECF8F911F901FBE1F90C4
:10015000189510926400F6CF80E886BD16BC90E436
:100160009BBF22E025BF9ABF1FBC13BE12BE16BEA6
:1001700019BC19BE88B913B87894809164006EE1F7
:1001800041D08093630010926100C09AE0916300B7
:10019000F0E0EC5EFF4F849180936200B3DFE0916A
:1001A0006300EF5FE0936300F0E0EC5EFF4F84914B
:1001B00080936200A7DFE0916300EF5FE09363004C
:1001C000F0E0EC5EFF4F8491809362009BDF8FE54F
:1001D00099E00197F1F700C00000C098809163009A
:1001E0008F5F809363008FE599E00197F1F700C07E
:1001F0000000809161008F5F809361008A3008F079
:10020000BCCFC3CF002480FD060E660F11F086958B
:0A021000D1F7802D0895F894FFCF78
:00000001FF



Vielleicht kannst Du mir das Original-Hex-File zukommen lassen, dann kann ich das evtl. mal durch den Disassembler schicken.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
11.03.2019, 08:35 Uhr
schlaub_01



Hallo Wolf-Peter,

eine Idee hätte ich noch. Probier mal bitte alle Portzuweisungen für B.5 rauszunehmen. Der Pin ist ja in den Fuses als Reset beschaltet und da haben die Pinzuweisungen eigentlich nichts zu suchen. Möglicherweise gibt's da ein Durcheinander, wenn der Port und die alternative Reset-Funktion gleichzeitig verwendet werden.

@Bert: Ja, die Punkte sind mir auch schon aufgefallen. Ich hatte ja die kompletten Quellen mal mit dem AVR-GCC umgesetzt und die möglichen Fehler gleich behoben. Das Warten in der Interruptroutine finde ich auch nicht gut, aber sind halt Quellen, die mal jemand so programmiert hat - warum auch immer...

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
11.03.2019, 09:09 Uhr
wpwsaw
Default Group and Edit


Guten Morgen,

ja, der originale c-Code ist mit CodeVision erstellt (009), aber ich habe differenzen zu Hexcode. Wahrscheinlich ist das nicht die letzte Version gewesen.

@Bert, kann ich die gerne mal schicken, aber mein Ziel ist es die Funktionen nur noch mit BASCOM zu nutzen, damit ich ich noch Änderungen und/oder Erweiterungen selber machen kann.

@Sven, hatte ich schon mal getestet werde ich noch einmal machen.

Bin gerade dabei den Atega8 um zu schreiben. Den Atmega32 habe ich schon fertig. Der funktioniert tadellos.

Wenn ich jetzt den Fehler noch beim Tiny13 finde, wär das gut.

Vielleicht werde ich auch alles umschreiben und den Tiny nur noch als Anzeigeprozessor nutzen und die Zeichen vom Atmega32 zm Tiny schicken. Ich möchte dann nicht nur die Wochentage anzeigen sondern auch das Datum. Jetzt ist der Tiny schon mit 83% voll, passt also nicht mehr viel hinein.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
13.03.2019, 23:36 Uhr
wpwsaw
Default Group and Edit


Hallo,

da ich jetzt die Software für alle 3 AVRs fertig habe, bin ich jetzt wieder am Tiny13 dran.

Ich habe alle Vorschläge von euch getestet, leider ohne Erfolg. Jetzt habe ich mal an den Ports PB0 und PB2 10K PullUp Widerstände gehangen und siehe da, die Ausgangssignale sind da, aber zu niedrig, ca. 1,5V nur. Bevor jetzt gesagt wird, das es dann an der Außenschaltung liegt, nein, das kann nicht sein, weil wenn ich in den gleichen IC die original-Hex Datei einspiele, läuft er ja.

Also muss es mit der Port-Programmierung zusammen hängen oder. Aber wenn ich ihn auf dem STK500 habe, läuft er ja.

kennt jemand die Portbeschaltung auf dem STK500?

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
13.03.2019, 23:50 Uhr
schlaub_01



Ich weiß zwar nicht, ob das eine Rolle spielt, aber Du hast ja bei den Output Ports diese Aliase vergeben. Kann es vielleicht sein, daß der Alias zwar den Port nimmt, aber nicht das Bit mit dem Punkttrenner? Das könnte ich mir mit dem Fehlerbild noch vorstellen, da Du ja mal geschrieben hattest, daß Bit 0 scheinbar funktioniert. Kannst Du das probehalber mal ohne Aliase machen?

Grüße,
Sven.

Edit: Ich glaube, ich habe da gerade noch einen Fehler entdeckt. Die Zeile: intbit = PORTb.1 ' Abrage InterruptEingang
ist so falsch, da Du hier den Ausgangswert abfragst und nicht den Eingangswert. Ich denke mal, richtig wäre hier:
intbit = PINb.1 ' Abfrage InterruptEingang

Dieser Beitrag wurde am 14.03.2019 um 00:01 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
14.03.2019, 08:56 Uhr
wpwsaw
Default Group and Edit


Ja, Sven

das war es. Jetzt habe ich zwar eine neues Problem mit der Anzeige, denn alle Segmente leuchten etwas nach, aber der Tiny arbeitet erst einmal.

Den Data-Ausgang hatte ich am Anfang schon durch Portb.3 ersetzt.

Jetzt muss ich erst einmal dieses Nachleuchten abändern.

Vielen Dank an alle icch mache erst einmal weiter.

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
14.03.2019, 10:02 Uhr
schlaub_01



Da könnte noch der Taktteiler in den Fuses schuld sein. Im Originalfile wird der ja durch die Clock-Settings überschrieben - beim BASCOM sehe ich das nicht. Am einfachsten nimmst Du die Fuse mal raus. Ansonsten stimmen die ganzen Delays nicht.

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
14.03.2019, 11:25 Uhr
wpwsaw
Default Group and Edit


nein, die Fuses stimmen. Ich habe das Programm jetzt so angepasst, das die Zeiten für Takt und strobe eine saubere Anzeige bringen.

Es ist jetzt alles so, das die Uhr wie mit der originalen Software läuft. Komisch, das die Ports mit den Allias nicht sauber liefen.

Jetzt kann ich mich an die Erweiterung der Programme (in BASCOM) machen.

Also Vielen Dank an ALLE Das Problem ist damit gelöst.


Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
25.03.2019, 01:03 Uhr
Bert



Auch wenn das Problem inzwischen gelöst ist:
Ich habe von Wolf-Peter das Binärfile bekommen und mit radare2 näher analysiert.

1. Der in 011 angegebene C-Code ist unvollständig.

1a: in der Funktion send fehlen die Zeilen

Quellcode:

_delay_us(5);
set_bit(PORTB, PIN2);


zwischen clear_bit und _delay_us.

1b: in der Initialisierung der main-Funktion fehlen die Zeilen

Quellcode:

PORTB = 0x3F;
DDRB = 0x0D;


(nach CLKPR...).

Ich habe kein CodeVision und kann daher das Ergebnis nicht auf Binärgleichheit prüfen (was der ultimative Nachweis wäre).


2. Es werden die Pullups an allen Ports aktiviert. Wie sich das bei den Ausgängen tatsächlich auswirkt, sollte man mal ausmessen. Was passiert bei Ausgang = 0, aber Pullup = ein?
Dazu kommen die Transistorstufen am Ausgang, die mit dem Pullup möglicherweise nicht mehr komplett sperren.


3. Die Warteschleifen im Programm, speziell _delay_us(5), sind für 9,6 MHz ausgelegt:

Quellcode:

; takes 48 clocks
0x0000017e      80e1           LDI R24, 0x10
0x00000180      8a95           DEC R24                     ; 1 clock
0x00000182      f1f7           BRNE 0x180                  ;[1] ; 2 clocks




4. Egal, wie die CLKDIV-Fuse gesetzt ist, im Programm wird der Clock-Prescaler auf 1 gesetzt.


5. Zur eigentlichen Funktionsweise: Nach Initialisierung geht das Programm in eine permanente Hauptschleife.
Dort wird der Wochentag (0..6) mit 30 multipliziert. Mit diesem Zeiger werden 10 * 3 Bytes aus der Tabelle ausgelesen und seriell ausgegeben (send-Funktion).
Danach wird 1 ms gewartet und es geht von vorn los.

Falls am Pin B1 eine fallende Flanke erkannt wird, wird in die Interruptroutine gesprungen. Dort wird der Wochentag inkrementiert und gewartet, bis Pin B1 wieder auf high geht.

Eigentlich ist das nix, wofür man unbedingt einen eigenen Controller bräuchte. Falls schon ein Controller im System vorhanden ist, sollte sich die Funktionalität dort gut mit unterbringen lassen (210 Bytes Flash für die Tabelle, ca. 256 Bytes Programmcode und 3 bzw. 4 freie Pins).


6. Was man auch im Auge behalten sollte: den Watchdog-Timer.
Laut Binärfile sollte der Watchdog deaktiviert sein, er wird aber trotzdem in der _delay_ms-Funktion zurückgesetzt.

Wenn man den Watchdog aktiviert, könnte man sogar einen Remote-Reset auslösen: einfach den Eingangspin PB1 länger als ca. 16 ms auf low lassen.


Wer sich radare2 mal anschauen möchte, triggert mich in Garitz mal an. Damit kann man u.a. auch Z80-Programm analysieren und debuggen, das ist ein recht mächtiges Werkzeug.

Viele Grüße,
Bert

Dieser Beitrag wurde am 25.03.2019 um 01:05 Uhr von Bert editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
25.03.2019, 08:20 Uhr
wpwsaw
Default Group and Edit


Moin Bert,

ich war/bin zwar kein C Fan, aber ein paar Unstimmigkeiten hatte ich auch entdeckt. Ich bin auch der Meinung, dass der vorliegene Quellcode nicht der letzte Stand war. Das habe ich beim Umsetzen in BASCOM gemerkt, weil ich Schritt für Schritt nach dem C-Programm vorgegangen bin.

Ich habe ja angefangen das Uhrenprogramm im 32iger zu erweitern mit DCF77 und RTC. Da ich 2 Leitungen vom 32 zum attiny über habe, werde ich die Anzeigefunktion mittels I2C im 32 steuern und mit Datum und Jahr erweitern.

Vielleicht auch nur mit Tag und Monat und das Jahr schicke ich zu den IW22 Anzeigen

übrigens steht bei ebay wieder eine Uhr zum Verkauf


gruß
wpw

https://www.ebay.de/itm/12-stellige-Nixie-VFD-Uhr-mit-Temp-Luftfeuchte-druck-und-Wochentagsanzeige/293007097659?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m1438.l2649

wobei die letzte für über 200 weg gegangen ist.

als DCF Empfänger nutze ich ein ESP8266 Modul, der die Zeit aus der Fritzbox holt und in ein DCF Signal wandelt.

hier meine



--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 25.03.2019 um 08:21 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek