Forum: Mikrocontroller und Digitale Elektronik ATtiny2313 Programmieren/welche Programmiersprache


von Alex B. (splinx)


Lesenswert?

Guten Morgen,

ich würde gerne für das Jahresprojekt in unserer Schule einen
ATtiny2313 Programmieren
jetzt weiß ich aber nicht welche Programmiersprache die Firmware hat,
die ich verändern muss und mit welchen Programm ich sie verändere

Hier ist die Firmware:
1
/* Bluetooth Controlled Car
2
Accpets commands through UART, via GP-GC021 Bluetooth Module
3
Control of head lights, brake lights, one drive motor and one
4
steering servo are implemented.
5
Clock frequency is 4MHz
6
*/
7
8
#define HDLED PORTB.B7
9
#define BRKLED PORTB.B6
10
#define M1p PORTB.B5
11
#define M1m PORTB.B4
12
#define SERVO PORTB.B3
13
14
unsigned short uart_rd;
15
char pos;
16
17
// Posistion Servo Rotor
18
void position(){
19
     char i;
20
     SERVO = 1;
21
     // create ON-time delay in 10ths of a ms, delay in for-loop, hence less than 100ms
22
     for (i=0; i<=pos; i++) Delay_us(85);
23
     SERVO = 0;
24
     Delay_ms(12);
25
}
26
27
// Write outputs
28
void action(){
29
// simple error check
30
   if ((uart_rd & 0b00000011)>0){        // faulty byte received, since last two bits aren't used
31
      // clear outputs, center servo
32
      PORTB = 0;
33
      UART1_Write(0b00000011);           // send error, ie faulty bits
34
      pos = 14;                          // compensate for off-center rotor placement, 1.5ms should be standard
35
   }else{
36
      // write outputs, place servo
37
      UART1_Write(uart_rd);              // send response
38
      if ((uart_rd & 0b00001000)>0){
39
           pos = 9;
40
      }else if ((uart_rd & 0b00000100)>0){
41
           pos = 18;
42
      }else{
43
           pos = 14;                      // compensate for off-center rotor placement
44
      }
45
      PORTB = uart_rd & 0xF0;
46
   }
47
}
48
49
// Read UART and call action
50
void main() {
51
     UART1_Init(9600);                   // Initialize UART module at 9600 bps
52
     Delay_ms(100);                      // Wait for UART module to stabilize
53
     DDRB = 0b11111000;                  // PORTB as output, save PB0, PB1 and PB2 which aren't used
54
     PORTB = 0;                          // Initialize portb
55
56
 while (1)
57
 {
58
       if (UART1_Data_Ready())           // If data is received,
59
       {
60
          uart_rd = UART1_Read();        // read the received data
61
       }
62
       action();                         // write outputs
63
       position();                       // posistion servo
64
 }
65
}

von hans (Gast)


Lesenswert?

das ist c und du kansnt avr studio + winavr benutzen

von Oliver (Gast)


Lesenswert?

Alex B. schrieb:
> ich würde gerne für das Jahresprojekt in unserer Schule einen
> ATtiny2313 Programmieren
> jetzt weiß ich aber nicht welche Programmiersprache die Firmware hat,
> die ich verändern muss und mit welchen Programm ich sie verändere

Hoffentlich hast du dafür auch ein ganzes Jahr Zeit. Denn da wirst du 
dir schon noch ein paar Grundlagen erarbeiten müssen.

Oliver

von Clown (Gast)


Lesenswert?

Aber nur nicht abschrecken lassen. Wie Du siehst, mangelt es in diesem 
Forum nicht an Hilfsbereitschaft und Du kannst gerne weitere Fragen 
stellen.

von Alex B. (splinx)


Lesenswert?

Kann man das auch mit MicroC von Mikroelektronika machen?
oder ist der das AVR Studio + Winavr besser geeignet?#
was ist eure meinung?

von Karl H. (kbuchegg)


Lesenswert?

Alex B. schrieb:
> Kann man das auch mit MicroC von Mikroelektronika machen?
> oder ist der das AVR Studio + Winavr besser geeignet?#

Das Originalprojekt wurde nicht mit dem WinAvr gemacht.
Möglich das das mit besagtem MicroC gemacht wurde


Aber im Grunde spielt es kaum eine Rolle.
Das Urprojekt ist .... schwach programmiert. Das auf die paar WinAvr 
Unterschiede anzupassen ist eine Sache auf ein paar Minuten. Ich kann 
nur in deinem Interesse hoffen, dass die UART Funktionen besser sind.

> was ist eure meinung?
Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.

von Alex B. (splinx)


Lesenswert?

>Karl heinz Buchegger schrieb im Beitrag #1958498:
> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.

hmm habe schon etwas Vorwissen im Programmieren da ich an einer 
Facoberschule für Informaionstechniker bin.
Das Projekt geht ja über ein Jahr.
In diesem Jahr wird uns nebenbei das Basiswissen
zur µC-Programmierung beigebracht.
Das Projekt ist dafür da, dass wir uns eine neue Programmiersprache 
selbstständig aneignen und diese auf ein Projekt anwenden sollen.
Natürlich hilft uns unserer Lehrer, wenn wir gar nicht mehr klar kommen 
aber ich wollte erst mal versuchen ob ich es irgendwie selber hinbekomme 
:>
bzw mit der Hilfe aus diesem Forum.

von Karl H. (kbuchegg)


Lesenswert?

Alex B. schrieb:
>>Karl heinz Buchegger schrieb im Beitrag #1958498:
>> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
>> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.
>
> hmm habe schon etwas Vorwissen im Programmieren da ich an einer
> Facoberschule für Informaionstechniker bin.

Dann solltest du aber besser die Programmiersprache in der du 
programmieren willst schon mal wenigstens erkennen, wenn du ein darin 
geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz..

von Peter (Gast)


Lesenswert?

normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen 
und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr 
schnell dinge die falsch sind oder ungünstig.

von Alex B. (splinx)


Lesenswert?

> Dann solltest du aber besser die Programmiersprache in der du
> programmieren willst schon mal wenigstens erkennen, wenn du ein darin
> geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz.

habe noch nie mit C programmiert :\

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:
> Alex B. schrieb:
>>>Karl heinz Buchegger schrieb im Beitrag #1958498:
>>> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
>>> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.
>>
>> hmm habe schon etwas Vorwissen im Programmieren da ich an einer
>> Facoberschule für Informaionstechniker bin.
>
> Dann solltest du aber besser die Programmiersprache in der du
> programmieren willst schon mal wenigstens erkennen, wenn du ein darin
> geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz.

 Das bedeutet nämlich, dass du in C bei Adam und Eva anfangen musst. Und 
dann ist 1 Jahr plötzlich gar nicht mehr soviel Zeit.

Denn den Unsinn den dein Vorprogrammierer angestellt hat, musst du ja 
auch noch ausbügeln. Und da sollte man dann schon ein wenig firm in der 
Sprache sein, in der man arbeitet. Die Sprache darf einem dann nicht 
mehr in die Quere kommen, wenn es darum geht falsche Ansätze/Algorithmen 
zu bereinigen

von Alex B. (splinx)


Lesenswert?

Peter schrieb:
> normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen
> und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr
> schnell dinge die falsch sind oder ungünstig.

das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
Da wir nur noch 3 Wochen Zeit haben das größte Problem unseres Projektes
gelöst zu haben

von Karl H. (kbuchegg)


Lesenswert?

Alex B. schrieb:
> Peter schrieb:
>> normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen
>> und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr
>> schnell dinge die falsch sind oder ungünstig.
>
> das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
> Da wir nur noch 3 Wochen Zeit

?
Vorhin wars noch 1 Jahr

von Peter (Gast)


Lesenswert?

Alex B. schrieb:
> das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
> Da wir nur noch 3 Wochen Zeit haben das größte Problem unseres Projektes
> gelöst zu haben

dann bist du hier aber falsch
> da ich an einer Facoberschule für Informaionstechniker bin

etwas vorhanden umschreiben ohne zu wissen was man macht, hat viel mehr 
mit trial and error als mit lernen zu tun.

von Karl H. (kbuchegg)


Lesenswert?

Jetzt ohne Scheiss und ohne irgendwelche Hintergedanken.

Alex, das ist ein Himmelfahrtskommando.
Das wär selbst für mich ein Himelfahrtskommando (wenn ich noch nicht C 
könnte) und ich hab schon in mehr Programmiersprachen industriell 
programmiert als du wahrscheinlich in deiner ganzen schulischen Laufbahn 
noch lernen wirst.
In 3 Wochen ist das nicht zu machen. Selbst wenn du gute C-Kentnisse 
hättest und nur noch den µC spezifischen Teil lernen musst, sind 3 
Wochen extrem knapp, denn in deiner Vorlage stimmt softwaretechnisch 
gesehen so gut wie gar nichts. Das ist kein tragfähiger Unterbau auf dem 
man weiter aufsetzen könnte.

Jedes Teilgebiet für sich, sei es jetzt Servoansteuerung oder generelle 
Strategie der Kommandoübertragung und Auswertung oder 
Programmorganisation ist nicht so schlimm. Aber es dauert seine Zeit das 
alles zu lernen.
Und da habe ich die Zeit für C-Grundlagen noch gar nicht eingerechnet.

Wenns gar nicht anders geht, dann musst du in diesen sauren Apfel 
beissen. Aber mach dich auf viele Nachtschichten gefasst. Wenn irgendwie 
möglich, sieh zu dass du dieses Projekt wieder los wirst. Am besten wäre 
es, wenn du ein neues Projekt starten könntest. Dann hast du keine 
Altlasten, die du erst mal entweder mitschleppen oder bereinigen musst.

Ach und ja: Dein erster Weg muss dich in eine Buchhandlung führen, ob du 
willst oder nicht. Dort suchst du dir ein C-Buch aus, das dir im Stil 
zusagt und arbeitest das erste Drittel mit einem C-Compiler auf dem PC 
durch. Damit hast du erst mal die C-Grundlagen. Da du Vorwissen hast, 
wird das relativ schnell gehen. Aber ohne gehts nicht. Die paar 
Nachmittage und Abende, die du dir da um die Ohren haust, kriegst du 
danach in Zeit gemessen 10-fach wieder rein, weil den eigentliches 
Projekt dann entsprechend flüssiger von der Hand geht.
Die Idee: Ach ich les mit einfach ds vorhandene Programm durch und was 
ich nicht weiß, such ich mir mit Google zusammen.
Tja. Als Idee ganz nett. Nur funktionierts nicht. C steckt voller 
kleiner Fallen und Stolpersteine.

von Alex B. (splinx)


Lesenswert?

ich muss den programmcode ja nur in der hinsicht verändern, dass ich
eine servoansteuerung kopiere (da wir 2 servos anstatt im 
Ausgangprogramm nur 1 servo haben)
dann muss ich noch 2 led ansteuerungen löschen mehr müsste ja nicht 
gemacht werden

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.