Also ich vermute mal, dafür gibt es DebugWire oder so - leider gibt es noch keinen Artikel zum Software-Debuggen/Entwickeln. Jedenfalls möchte ich mal sehen, was der ADC so mißt, aber wie? Messergebnis (10bit) vierteilen und per 8-bit PWM woanders ausgeben? Bei Tastendruck ins EEprom schreiben und dann mit dem Programmieradapter auslesen?
Nun, man kann daten auch seriell an einem Pin ausgeben und dann mit dem Scope nachschauen.
Ach, einen 8-Beiner hast Du da also. Das ist ja schön für Dich. Du bist Dir offensichtlich nicht im klaren darüber, daß es -geschätzt- 10E3 verschiedene Controller in dieser Bauform gibt ... Also: WAS für ein 8-Beiner soll das sein? (Sonst steht hier die nächste Steinigung mit Glaskugeln an)
Rufus t. Firefly wrote: > Ach, einen 8-Beiner hast Du da also. Das ist ja schön für Dich. > > Du bist Dir offensichtlich nicht im klaren darüber, daß es -geschätzt- > 10E3 verschiedene Controller in dieser Bauform gibt ... > > Also: WAS für ein 8-Beiner soll das sein? Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie, das weiß doch Jeder... - Oder ist Deine Glaskugel etwa schlecht gewartet?? > > > > (Sonst steht hier die nächste Steinigung mit Glaskugeln an) ;-) ...
Hannes Lux wrote:
> Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie,
Also ich habe mich jetzt auf den ATtiny25 als 8-Pinner eingeschossen.
Ein 2.Timer, 8MHz intern und Upgrade bis 8kB Flash kann nie schaden.
Peter
Tiny15 mit internem ADC ...? :D Am einfachsten sit es echt das zeug ins EEPROM zu schreiben, mach ich meistens so.
Peter Dannegger wrote: > Hannes Lux wrote: > >> Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie, > > > Also ich habe mich jetzt auf den ATtiny25 als 8-Pinner eingeschossen. > > Ein 2.Timer, 8MHz intern und Upgrade bis 8kB Flash kann nie schaden. Wow, Du hast upgradefähige Hardware? :) Aber der OP meinte doch bestimmt AT24C08A oder hatte einfach nur Langeweile :)
>Jedenfalls möchte ich mal sehen, was der ADC so mißt, aber wie?
Das ist bei 8-Beinern nicht vorgesehen. Deren ADC mißt einfach so vor
sich hin, die Daten können aber nicht weiterverarbeitet werden.
Tri-tra-trollalla... Koko, ich verwende für Sowas eine synchrone serielle Übertragung ähnlich dem vereinfachten OWI-Protokoll, aber so langsam, dass es ohne Rechenzeiteinbuße im Timer-Interrupt laufen kann. Dabei sende ich ASCII (Text), der von einem "Terminal" (AVR mit LCD und 4 Tastern) angezeigt werden kann. Das Telegramm umfasst 1 Richtungsbit, 8 Datenbits und eine Synchronpause von einer Bitzeit. Es "klappert" mit etwa 1kHz vor sich hin, kann also max 100 Zeichen pro Sekunde übertragen. Ich benutze es auch bidirektional zum Parametrieren kleiner Steuerungen mit Tiny13 über das "Terminal". Der eine benötigte Portpin tut dabei nicht weh, das Impulsmuster wird vom Timer-Interrupt (400Hz, also 4 Interrupts pro Bit) nebenbei erzeugt und belastet den AVR kaum. ...
Laßt den armen Kerl doch in Ruhe, der hat bestimmt was Besseres zu tun, als mit Euch über 8-Beiner zu spekulieren ;-)
Ist doch völlig egal, was für einer, wenn's ums Prinzip geht..!? Aber egal: Ihr hattet Euren Glaskugel-Spaß (wobei ich die 'Formulierung' wohl eher in einem Computer-Kinder-Forum erwarten würde, als hier von den kompetenten), und ich weiß ein bißchen mehr. Die serielle Ausgabe per Software ist mir gar nicht konkret in den Sinn gekommen. Wie schiebt man denn dann das Wert-Bit an das Ausgangs-Bit? Danke!
for i:=1 to 8 do { if ((data and 0x80)== 0x80) then portpin:=1 else portpin:=0; shiftleft(data); } Etwa so.
Ah, also das MSB ausgeben, und dann alles nach links schieben. das kann ich. Ich hatte gedacht, man kann das vielleicht direkt auf den ausgangs-port operieren. zu kompliziert für mich. egal. probier ich mal, dankeschön!
> Wie schiebt man denn dann das Wert-Bit an das Ausgangs-Bit? Das kommt darauf an, welcher Empfänger verfügbar ist. Wenn Du an UART und PC-Terminal denkst, dann wirst Du an der Ungenauigkeit des internen Takt-Oszillators scheitern (oder zumindest verzweifeln). SPI-Master in Software ist kein Problem, braucht aber zwei Portpins. Ich sende vom Master, also vom kleinen Controller, (durch Pause getrennt) 9 Impulse, bei denen die Information im Tastgrad (25% oder 75%) steckt. Der erste Impuls gibt die Datenrichtung an, legt also fest, wer Sender und wer Empfänger ist (in Deinem Fall noch nicht relevant). Die anderen 8 Impulse beinhalten die Datenbits. Die Pause sorgt dafür, dass der Slave (der Controller mit LCD) weiß, wo ein neues Byte beginnt. Der Slave sammelt die Bits ein und gibt sie an das LCD aus. Einige vereinbarte Steuercodes erlauben eine saubere Formatierung der Ausgabe. Du kannst die Ausgabe aber auch so langsam machen, dass Du die Bitwerte per Auge mitzählen (und mitschreiben) kannst. In Deinem Fall (Servoimpulserzeugung) kannst Du den ADC-Wert aber auch als "Servoposition" ausgeben und statt des Servos ein Oszilloskop oder ein Multimeter mit Tastgrad-Messung (gibts bei Pollin für um die 13 Euro) anschließen. Achja, die 8-Beiner AVRs sind nicht alle gleich. In der AT90S-Reihe gibt es 8-Beiner mit Hardware-UART. Die können also (Quarz vorausgesetzt) recht einfach über RS232 mit dem PC (Terminalprogramm) kommunizieren. ...
So kann's gehen:
1 | static uint8_t bit; |
2 | uint16_t data = 0b1010101010101010; |
3 | |
4 | if(bit < 16) |
5 | {
|
6 | if(((uint16_t)data<<bit) & 0b1000000000000000) |
7 | {
|
8 | PORTB |= ( 1<<PB0 ); // high |
9 | }
|
10 | else
|
11 | {
|
12 | PORTB &= ~( 1<<PB0 ); // low |
13 | }
|
14 | }
|
15 | else
|
16 | {
|
17 | PORTB &= ~( 1<<PB0 ); // low |
18 | }
|
19 | |
20 | if(bit==50) |
21 | {
|
22 | bit=0; |
23 | PORTB |= ( 1<<PB0 ); // high |
24 | }
|
25 | else
|
26 | {
|
27 | bit++; |
28 | }
|
Aha, anscheinend geht der Anhang verloren, wenn man mal auf Vorschau klickt..
> Ist doch völlig egal, was für einer, wenn's ums Prinzip geht..!?
Na wenn das egal ist, dann nimm einfach den eingebauten UART und schicke
die Daten als Text an den PC.
Na, wenn das nicht egal ist, hätte es doch gereicht, mich zu fragen, ob mein 8-Beiner keinen eingebauten UART hat. Dann hätte ich direkt 'nein' geantwortet. Und?
Die Ausstattung der AVRs ist so unterschiedlich, dass es nur wenige allgemeingültige Aussagen gibt. Also immer schön konkret benennen um was es sich im speziellen Fall handelt. Bezeichnungen wie "mein ATMEL" oder "mein ATMEGA", "mein Mega", "mein Tiny" "(m)ein 8-Beiner" mögen zwar cool klingen, provozieren aber (berechtigterweise!) zu Widerspruch. Also nicht aufregen, wenn es Leute gibt, die solchen Kokolores nicht ganz ernst nehmen. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.