Pages: 1 2 3 [4]   Go Down
Author Topic: AUDIOINO, eine minimalistischer Arduino mit Programmierung über Line Out  (Read 9456 times)
0 Members and 1 Guest are viewing this topic.
DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, hier schon mal mein Vorschlag, wie ich zwei LEDs ansteuern würde statt vorher eine.
Code:
#ifdef PINGPONG_PLATTFORM

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <stdbool.h>
#include <avr/boot.h>

// use RxD ( PD0 ) as audio input and PD2 as PWRGND for Poti
#define INPUTAUDIOPIN     (1<<PD0)
//#define PINVALUE             (PIND&INPUTAUDIOPIN)                                                   //ch_alt durch nächste Zeile ersetzt
#define PINVALUE            pinRead()                                                                        //jf_neu
#define POTIGNDPIN          (1<<PD2)                                                                         //jf_definition GND-Pin Spannungsteiler

// turn on pull up and power on Poti
#define INITPORT              {PORTD|=INPUTAUDIOPIN; DDRD |=POTIGNDPIN;}                    //set Poti GND and set PullUp

#define PINLOW                (PINVALUE==0)
#define PINHIGH               (!PINLOW)

// ping pong led definitions
#define LEDPORT      (1<<PB0|1<<PB1)                  //jf_geändert jetzt SOLLEN zwei LEDS angesteuert werden KLAPPT ABER NOCH NICHT!!!
#define INITLED     {DDRB|=0x3; DDRC|=0x0F; DDRD|=0xF0;}

#define LEDHIGH               {PORTB|=1<<PB1; PORTB&=~(1<<PB0);}                                 //jf_neu SIGNAL FÜR AUDIOPIN IST HIGH KLAPPT!
#define LEDLOW                {PORTB|=1<<PB0; PORTB&=~(1<<PB1);}                                 //jf_neu SIGNAL FÜR AUDIOPIN IST LOW KLAPPT!
#define LEDON                 {PORTB|=LEDPORT;}                                                           // wie bisher, nur mit beiden LEDs
#define LEDOFF                {PORTB&=~LEDPORT;}                                                         // wie bisher, nur mit beiden LEDs
#define TOGGLELED             {PORTB^=LEDPORT;}                                                           // wie bisher, nur mit beiden LEDs
Es fehlt jetzt nur noch der Code, der LEDLOW und LEDHIGH aufruft
Dazu muss ich sicher diesen Ausdruck ersetzten und hier meine gewünschte Funktion einbauen:
Code:
#define PINVALUE (PIND&INPUTAUDIOPIN)
Ich ersetzte und rufe somit pinRead() auf. pinRead liefert (PIND&INPUTAUDIOPIN) zurück
Code:
#define PINVALUE pinRead()                                                                        

uint8_t pinRead()
{
if (PIND&INPUTAUDIOPIN) LEDHIGH                                                                              // AUDIOPIN IST HIGH
               else LEDLOW                                                                                   // AUDIOPIN IST LOW
return (PIND&INPUTAUDIOPIN);                                                                                 // Wert des ursprünglichen Ausdrucks zurückgeben
}

Also der Trick ist, dass 2LEDs nun 4 verschiedene Zustände anzeigen können:
1. Beide LEDs an hieß vorher LEDON
2. Beide LEDs aus hieß vorher LEDOFF
3. Die eine LED an     --> Logischer Pegel am INPUTAUDIOPIN HIGH (neu)
4. Die andere LED an  --> Logischer Pegel am INPUTAUDIOPIN LOW  (neu)
In der Hoffnung, dass ich mich nicht im Wald der Makros verlaufen habe...
Gruß Johannes

OK also Nachtrag: Es geht! Allerdings leuchten nach RESET nicht beide LEDs an PB0 und PB1 gleichzeitig auf, wie ich es eigentlich erwarten würde. Fehler hab ich noch nicht gefunden.
Aber beim Code via Audio übertragen kann man nun sehr schön sehen, wann das erste mal beim Lauterdrehen HIGH-Pegel erreicht wird. Dann stoppt erstmal der Bootloader in irgend einer Schleife und wartet auf gültige Fortsetzung des Übertragungsvorgangs, weil möglicherweise noch nicht alle HIGHs angekommen sind, Aber wenn ich dann den Audiopegel noch ein kleines Stück anhebe, und danach nochmal den Play-Button beim JavaTool betätige wird die Übertragung sogar sauber fortgesetzt und der Code dann im 2. Anlauf vollständig übertragen. Man braucht also nichtmal RESET zu drücken. Wenn ich den Audiopegel nun so eingestellt lasse, dann klappt es ab dieser Einstellung (ca. 40% Pegel) immer mit einem vollständigen Übertragungszyklus nach RESET !!! Es klappt sogar bis Maximalpegel!!!

Bin sehr zufrieden damit. Denke zwei LEDs statt einer sind besser.
Vielleicht könntest Du dir meine Codeänderung mal ansehen. Vielleicht kann man es noch eleganter lösen.
Also wenn Du den Code haben willst bitte melden.

Viele Grüße von Johannes

« Last Edit: May 26, 2012, 01:13:03 pm by 25mmHg » Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo alle zusammen, hier nur eine kurze Info zum aktuellsten Audiobootloader V3 von Chris: Die Frage, ob mp3-codierte Audiodaten zur Codeübertragung taugen hab ich beantwortet. Grundsätzlich ist es möglich, mit mp3 Code zu übertragen. Ich habe das file "dieMatrixInterrupt.hex" mit dem JavaTool durch Abspielen in die test.wav (349Kbyte) umgewandelt. Dann habe ich in einem Audioeditor (SAMPLITUDE) ein Resampling als Offlineeffekt auf 50% (eine Oktave tiefer) angewendet. Der Effekt ist, dass die test.wav nun so klingt, als würde sie mit halber Bandgeschwindigkeit abgespielt werden (Solche Experimente kennen bestimmt noch die Leute, deren Eltern ein Tonbandgerät besaßen) Danach habe ich die Datei ins mp3-Format konvertiert. Bei 128kbit mono und 320kbit stereo hatte ich Erfolg. Der Audiobootloader hat bis zum Schluss des Abspielens alle Pages akzeptiert. Das PingPongBoard hat danach die Matrix angezeigt. Bei anderen Bitraten des mp3-files gab es teilweise vorzeitige Abbrüche.

DAmit haben wir mal wieder aller Theorie ein Schnippchen geschlagen
Gruß Johannes
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute, ich habe in V3 folgende Zeilen etwas abgeändert und nun klappt es mit der gewünschten Anzeige: Es sieht nun so aus, dass am Anfang 2 LEDs leuchten. Wenn im Flash kein ausführbarer Code ab 0x0000 liegt, dann wird die LED an PC0 nach 6Sekunden kurz verlöschen und der Wartezyklus beginnt von vorn. Die LEDs an PB1 und PB0 signalisieren den Logischen Pegel an PD0 während jeder Abfrage duch den bootloader. Das funktioniert quasi in Echtzeit. PB0 steht für HIGH und PB1 für LOW. Bei mir ist zum Beispiel der anfangs erkannte Pegel (mit 2x10kOhm) immer HIGH. Wenn der Ausgangspegel der Soundkarte groß genug ist, sieht man zusätzlich zur HIGH-LED noch die LOW-LED aufflackern. Meistens muss man noch etwas den Audiopegel erhöhen, damit eine gültige Übertragung zustande kommt. Bei Übertragungsfehlern flackern die HIGH- und die LOW-LED gleichzeitig schnell auf. Das ist deutlich zu erkennen. Ich finde, dass man damit ausgesprochen gut arbeiten kann. Übrigens gibt es hier eine sehr gelungene Laufschrift für das PingPongBoard http://www.elo-web.de/elo/mikrocontroller-und-programmierung/ping-pong/laufschrift Damit kann man sich einen schönen Text bauen, der nach dem Bootloader angezeigt wird BEISPIEL: + + + das Ping Pong Board wartet auf ein Audiosignal an Pin D0 + + + bitte Reset drücken und innerhalb von 6Sekunden mit der Wiedergabe beginnen + + + Somit weiß der Anwender gleich was er zu tun hat.

Hier die geänderten Zeilen im AudioBootloader von Christoph Haberer:
Code:
#ifdef PINGPONG_PLATTFORM

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>
#include <stdbool.h>
#include <avr/boot.h>

// use RxD ( PD0 ) as audio input and PD2 as PWRGND for Poti
#define INPUTAUDIOPIN (1<<PD0)
//#define PINVALUE (PIND&INPUTAUDIOPIN) //is now pinRead() look at line 195
#define PINVALUE pinRead()
#define POTIGNDPIN (1<<PD2)

// turn on pull up and power on Poti
#define INITPORT {PORTD|=INPUTAUDIOPIN; DDRD |=POTIGNDPIN;} //set Poti GND and set PullUp


#define PINLOW (PINVALUE==0)
#define PINHIGH (!PINLOW)

// ping pong led definitions
#define LEDPORT ((1<<PB0)|(1<<PB1)) //now 2LEDs
#define INITLED {DDRB|=0x3; DDRC|=0x0F; DDRD|=0xF0;}

#define LEDHIGH {PORTB|=(1<<PB0); PORTB&=~(1<<PB1);} //now HIGH-Level on INPUTAUDIOPIN
#define LEDLOW {PORTB|=(1<<PB1); PORTB&=~(1<<PB0);} //now LOW-Level on INPUTAUDIOPIN
#define LEDON {PORTB|= LEDPORT;}
#define LEDOFF {PORTB&=~LEDPORT;}
//#define TOGGLELED {PORTB^=LEDPORT;} //old
#define TOGGLELED {if(PORTB&LEDPORT)LEDOFF else LEDON} //now 2 LEDs ready for Toggeling

#define LATCHCLKPIN (1<<PB2)
#define SDATAPIN (1<<PB4)
#define RCLKPIN (1<<PB3)

#define LATCHCLK {PORTB|=LATCHCLKPIN;}
#define SDATA {PORTB|=SDATAPIN;}
#define RCLK {PORTB|=RCLKPIN;}
#define SETDATA (PORTB|SDATA)

#define RESETALL {PORTB&=~(SDATAPIN|RCLKPIN|LATCHCLKPIN);}
#define INITLATCH {DDRB|=(SDATAPIN|RCLKPIN|LATCHCLKPIN);}

uint8_t pinRead()
{
if (PIND&INPUTAUDIOPIN) LEDHIGH else LEDLOW
return (PIND&INPUTAUDIOPIN); //now returns the same as the code on line 161
}

void setSpalte(uint8_t k)
{
uint8_t value;
value=PORTC;
value&=~0x0F;
value|=k&0x0F;
PORTC=value;

value=PORTD;
value&=~0xF0;
value|=k&0xF0;
PORTD=value;
}

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

void SetExternalPortByte(uint8_t port,uint8_t data)

Move data to external shift register.

common pins: data, latchout
single pin: shift register clock

22.12.2007 ch

****************************************************************************************/
void setExternalPort(uint16_t data)
{
uint8_t i;

RESETALL;

data=~data;

for (i=0; i<12; i++)
{
   if(data & (1<<11)) SDATA;

   RCLK;
data= data << 1;

RESETALL;
}
LATCHCLK; // clock all latches data to output
RESETALL;
}

int main()
{
INITLED;
INITLATCH;
INITPORT;
setExternalPort(1);
a_main(); // start the main function
}

#endif

Über Erfahrungsberichte würde ich mich sehr freuen. Wie man sehen kann musste ich nicht sehr viel verändern. Chris, der Code ist eine feine Sache und ich bin froh, dass Du das PingPongBoard eingebunden hast.
Viele letzte Pfingstgrüße von Johannes
P.S.
Als besten Wert für die per Spannungsteiler eingestellte Vorspannung habe ich bei 4,5V Betriebsspannung 1,1V an PD0 gefunden.
Damit reichen bei mir 20% Lautstärke am Netbook für eine ordentliche Übertragung. Wenn man kein Poti da hat, dann tuen es auch 10k im oberen Zweig und 3k3 im unteren Zweig des Spannungsteilers.
« Last Edit: May 29, 2012, 05:25:04 pm by 25mmHg » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Johannes,

Quote
Die Frage, ob mp3-codierte Audiodaten zur Codeübertragung taugen hab ich beantwortet. Grundsätzlich ist es möglich, mit mp3 Code zu übertragen.

Das ist ja sehr interessant. Hätte ich nicht gedacht. Könntest Du mal ein Demo mp3 posten? Wir können sozusagen "geheime Botschaften" via mp3 austauschen smiley-grin

Ich habe meinen Display Treiber in C Online gestellt. Damit kann man die LEDs in zwei verschiedenen Helligkeiten ansteuern.

http://www.hobby-roboter.de/forum/viewtopic.php?f=4&t=136

Beste Grüße,
chris
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, ich stell jetzt mal ein paar relevante files hier rein.
1. ein Vergleich von wav und mp3-datei im Audioeditor samplegenau übereinandergestellt in 2Spuren. Man sieht genau das Verhalten beider Wellenformen zueinander. Beide sind durch Resampling auf halbe Geschwindigkeit gedrosselt worden. (edit: man sieht links unten, dass das mp3-Objekt im Editor invertiert wurde, so habe ich beide Wellen voneinander nur zum Anhören subtrahiert, um die Differenz von wav zu erzeugter mp3 beurteilen zu können - es bleibt immer etwas Hörbares übrig - die Darstellung der Wellen bleibt aber phasenrichtig) Das mp3 wurde aus dem darüberliegenden wav erzeugt. Hier ein Link zum Audioeditor Magix Samplitude http://soundcloud.com/apps/samplitude-soundcloud und hier der Screenshot mit wav oben und mp3 unten:

Hier noch ein weiterer Screenshot als Link vom Ende eines Blocks: http://25mmhg.net/public/AudioeditorVERGLEICH2_wav_mp3.jpg
2. Außerdem möchte ich jetzt noch ein mp3-file reinstellen, dass folgendes enthält: 1.MatrixInt(tempo50%); 2.Zebra(tempo50%); 3.Zebra(tempo100%) Die beiden ersten Teile flashen erfolgreich den ATmega8, der letzte Teil (100%) nicht:
http://25mmhg.net/public/1MatrixIntSLOW_2ZebraSLOW_3ZebraFAST_128m.mp3
Es scheint also so zu sein, dass bei nicht voller Ausnutzung der Audiobandbreite eine Codeübertragung via mp3 möglich ist. Hier ist natürlich von Vorteil, dass Dein AudioBootloader auch Datenströme in halber Geschwindigkeit toleriert. Also gilt das hier gesagte erstmal nur für ATmegas, die mit 8MHz getaktet werden, wie das beim PingPongBoard der Fall ist.
3. Zuletzt noch Dein Quelltext mit meiner LevelCheck-Ergänzung komplett als Zip:
http://25mmhg.net/public/AudioBootLevelCheck131.zip
Bitte beachten, dass hier PD0 der Audioinput ist.
Ich habe übrigens auch das orginal Pong-Spiel was bei V3 mit im Paket ist erfolgreich mit diesem Audiobootloader hochgeladen!
Am Mi haben wir in der AG noch ein komplettes Pong-Spiel umgerüstet. Wir haben gleich das linke Potentiometer verwendet mit 1k vom Schleifer nach "D0" und 100n in der Audiozuleitung. (Dieser Aufbau scheint mir der Beste, den 1k Widerstand benötigt man nur als Sicherheitswiderstand, falls D0 in der hochgeladenen Anwendung ein Ausgang sein soll und das Poti auf Anschlag gestellt wird) Die Umschaltschwelle des PortPins lässt sich sehr einfach auffinden. Mit meinem Netbook konnten wir auf Anhieb erfolgreich übertragen.

Viele Grüße Johannes

« Last Edit: June 04, 2012, 10:54:58 am by 25mmHg » Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, etwas möchte ich noch nachtragen. Die aufgezeichneten mp3-Sequenzen zeigen auch sehr deutlich, dass das Hochladen recht schnell geht. Meine Vermutung ist, dass mp3 immer besser geht, je tiefer man mit der Übertragungsfrequenz geht. Außerdem wäre es super, wenn der Bootloader verpolungsresistent wäre.....aber das ist vielleicht eher was für nasskaltes Novemberwetter. Meine mp3-files sind 128Kbit mono encodiert. Johannes
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Johannes,

gerade eben habe ich Dein MP3 probiert. Es ging nicht. Doch dann kam meine Erinnerung zurück: mein Internetcomputer hat die verkehrte Polung des Audio-Signals.
Dann habe ich das MP3 auf meinem anderen Computer ausprobiert. Und siehe da: es geht. Das Zebra ist erschienen ;-). Sieht ganz nett aus.

Und so hast Du wohl recht: Das mit der Verpolungssicherheit sollte angepasst werden.

Gruß,
chris
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, freut mich, dass das mit dem mp3 auch bei Dir geklappt hat. Der Displaytreiber gefällt mir auch. Ich hab zwischen den Frames 40ms Delay eingebaut, d.h. er kann auch noch ein ganzes Stück schneller...Und sag mal, wie Du das mit der Pegelkontrolle findest. Hast Du das schon mal ausprobiert? Ich hab mir auch mal überlegt, ob der AVR sich nicht auch den Bias selber einstellen könnte. Dazu bräuchte man sowas: http://www.dz863.com/drawsch_3713.html Ich glaub, Du kannst die Schaltung auch editieren.

Viele Grüße Johannes
« Last Edit: June 04, 2012, 06:12:36 pm by 25mmHg » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ich hab mir auch mal überlegt, ob der AVR sich nicht auch den Bias selber einstellen könnte

Hallo Johannes,

genau die gleiche Schaltung hatte ich mir auch schon überlegt. Ich habe sie dann wieder verworfen, weil man einen zusätzlichen Anschluss verwenden müsste. Im Moment ist der Bootloader auch fast schon an der 1K Grenze angelangt und auf 2K würde ich beim Atmega8 nicht gehen.
Die Atmegas haben auch Komparator-Eingänge, die man verwenden könnte. Aber auch dort wollte ich die Festlegung auf einen speziellen Pin vermeiden.

Mit einigem Zeitaufwand habe ich die differentielle Manchestercodierung implementiert ( zu finden wie üblich ). Jetzt funktioniert die Übertragung an jedem Computer. Ebenfalls gibt es eine Java-Programmierversion für die halbe Geschwindigkeit für die Erzeugung der MP3s.

Super wäre es, wenn man das Programm mit der Arduino-Oberfläche verknüpfen könnte, sodass automatisch immer das richtige Arduino Programm geladen wird. Leider weiß ich nicht, wie man den Pfad automatisch finden kann. Vielleicht gibt es hier ja einen Experten, der dazu was sagen möchte?


Bester Gruß,
Christoph

P.s.: schreib mir doch mal ne PM, wo Ihr euren Basteltreff habt
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, ist schon November? Das ging ja schnell mit dem differenziellen Manchestercode. Was wäre wenn der AutoBias nur mit einem Pin funktioniert. Quasi mit sich selbst???
http://www.dz863.com/drawsch_3739.html Man müsste nur im richtigen Verhältnis den PullUp des AudioInputs zuschalten und C2 müsste den Bias lange genug halten, damit er vom Audiosignal nicht mitgezogen werden kann. Aber auch hier hilft uns die mittelwertneutrale Codierung gewaltig. Allerdings muß am Anfang und eventuell nach jedem Frame (wo Zeit wäre) sicher eine Justagephase ohne Signal erfolgen. Ob 1Kbyte da noch reichen? Für freie Pin-wahl müsste die PWM auch noch über Software erfolgen. Puuuhhh
Später mehr.
Viele Grüße Johannes

sorry, der Link geht zur Zeit nicht, deshalb hier als SVG:

http://25mmhg.net/public/AutoBiasOnePin.svg

Zu Deiner Frage, ob der Bootloader in die ArduinoIDE eingebunden werden kann, kann ich noch nicht viel sagen, aber beim AVR-Studio geht es mit dem Java-Tool prima, weil das ja immer die Datei erst vor dem Abspielen umwandelt und so alle Änderungen einer anderen Software (in dem Falle AVR-Studio) mit erfasst werden. Sowas wie ALT+Leertaste==Playback wäre ja auch ganz praktisch. (Besonders wenn man in der Hand noch einen Tastkopf hält und extra noch ein Kabel an die Batteriehalten muss)

edit: ich habe hier einen Link, in dem etwas genauer der ArduinoBuildProzess beschrieben wird http://arduino.cc/en/Hacking/BuildProcess

Hier ein Auszug:
The .hex file is the final output of the compilation which is then uploaded to the board. During a "Verify" the .hex file is written to /tmp (on Mac and Linux) or \Documents and Settings\<USER>\Local Settings\Temp (on Windows). During upload, it's written to the applet sub-directory of the sketch directory (which you can open with the "Show Sketch Folder" item in the Sketch menu).

Upload process

Sketches are uploaded by avrdude.

The upload process is also controlled by variables in the boards and main preferences files.

« Last Edit: June 07, 2012, 04:15:30 pm by 25mmHg » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote

Hallo Johannes,

die Schaltung sieht nicht schlecht aus. Den Widerstand R2 könnte man sich vermutlich noch sparen.
Der "Forschungsaufwand", um den Bootloader so weit zu bringen, könnte allerdings gewaltig sein.

Viele Grüße,
chris
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, ich habe R2 als Gleichstrompfad gegen Masse eingefügt. Ansonsten könnte das Pin gleichstrommäßig und ohne internen Pull Up in der Luft hängen. Irgendwo stand, dass die internen Pull Ups zwischen 20k und 50k groß sein sollen. (Das müsste ich mal nachmessen - der Wert schwankt sicher auch technologisch bedingt) Wenn der Pin zwschen 1,1V und 1,34 V auf HIGH geht würden als R2 auch kleinere Werte in Betracht kommen (10k...22k).
Unser AG-Computer hat mit dem differenziellem Manchastercode noch seine Mucken. Wir konnten nach einigem Hin und Herstellen am Poti und am Audiopegel zwar einige Pages laden, aber das Programm lief danach nicht los. Ist der neue Bootloader bei Dir stabil?
Viele Grüße Johannes

Ansonsten werkeln wir gerade mit einem schicken Atmega32u4....wenns mal etwas länger dauert mit der Antwort
« Last Edit: June 15, 2012, 01:16:20 pm by 25mmHg » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Hallo Chris, ich habe R2 als Gleichstrompfad gegen Masse eingefügt. Ansonsten könnte das Pin gleichstrommäßig und ohne internen Pull Up in der Luft hängen.

Meiner Meinung nach würde man keinen "Strompfad" brauchen. Wenn man den Pull-Up auschaltet, ist der Eingang des Atmega ziemlich hochohmig. Deshalb kann man am Anfang durch geschickte Programmierung den Kondensator so aufladen, dass er die 1.3V am Eingang des Atmega erzeugt. Währen der Signalübertragung dürfte die Ladung des Kondensators ziemlich konstant bleiben ( und damit auch die Spannung über dem Kondensator ). 

Quote
"Unser AG-Computer hat mit dem differenziellem Manchastercode noch seine Mucken. Wir konnten nach einigem Hin und Herstellen am Poti und am Audiopegel zwar einige Pages laden, aber das Programm lief danach nicht los. Ist der neue Bootloader bei Dir stabil?"

Meinst Du die Version pingpong_V4 oder AudioBoot2.0 ?
Die Audioboot2.0 Version habe ich auf diesem Board hier

http://www.hobby-roboter.de/forum/viewtopic.php?f=4&t=130

mit einem Atmega8 und einem Atmega168 getestet, das lief einwandfrei.

Auf dem ping-pong Game habe ich es nicht mehr getestet. Könnte in der neuen Konfiguration ein Fehler sein?

Viele Grüße,
Christoph
Logged

DD
Offline Offline
Newbie
*
Karma: 0
Posts: 24
Würde nicht eine miniUSB-Buchse in ein DIL-Gehäuse passen?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris, die V2.0 hab ich noch nicht getestet (glatt übersehen). Ich hab bisher nur die V1.4 getestet. Wenn die 2.0 auf dem PingPongBoard geht meld ich mich. Und Chris, Du hast beim Koppelkondensator immer noch im ProgrammText 10nF stehen. Waren 100nF nicht besser?
Gruß Johannes
Logged

Pages: 1 2 3 [4]   Go Up
Jump to: